Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006

Вид материалаУчебное пособие

Содержание


2.6.1. Семейство форм
2.6.2. Основные свойства формы
2.6.2.1. Свойства оформления формы
0 – vbBSNone; 1 – vbFixedSingle; 2 – vbSizable
2.6.2.2. Свойства позиционирования формы
0 – VbManual – положение формы задано при конструировании
2.6.2.3. Общие свойства формы
0 - VbNormal
0 - VbDefault
2.6.2.4. Свойства поведения формы
2.6.2.5. Свойство шрифт формы
2.6.2.6. Слои формы
2.6.3. Основные методы и события формы
2.6.3.2. Графические методы формы
PaintPicture picture, xl, yl, widthl, heightl, tbx2, y2, width2, height2, opcode
Pset - рисует точку заданного цвета. Синтаксис: PSet [Step] (x, у), [color]
Circle, а также линии или прямоугольника заданного цвета – Line
2.6.3.3. События формы
Click, DblClick
Key Down, KeyUp
...
Полное содержание
Подобный материал:
1   2   3   4   5   6   7   8   9   10

2.6. Форма


Форма представляет собой окно приложения, в котором можно размещать различные элементы управления. В приложении может быть как одна, так и несколько форм. Новая форма добавляется в проект выбором команды Project, Add Form.

2.6.1. Семейство форм


Семейство Forms является коллекцией, элементы которой представляют все загруженные формы в приложении. У семейства Forms имеются свойства Count (число форм в семействе) и item (номер формы), а также метод Add (добавляет к семейству новую форму).

2.6.2. Основные свойства формы


Многие свойства формы задаются на этапе конструирования. Некоторые свойства, например, размеры и расположение формы, можно задать с помощью мыши в окне макета и окне конструктора формы. Большинство свойств формы, установленных по умолчанию, можно изменить, используя диалоговое окно Properties. Значения свойств могут задаваться константами, числами, а также ссылками на файлы. Причем, изменение значений некоторых свойств формы проявляется только после запуске проекта на выполнение.




Рис. 2.20. Свойства формы

2.6.2.1. Свойства оформления формы


В группе Appearance (Оформление) окна Properties содержатся свойства объекта, которые задают атрибуты его внешнего вида.


Таблица 2.22


Свойство

Возвращает или устанавливает

Appearance

вид формы при выполнении кода: 0 - плоский; 1- объемный

Caption

текст, отображаемый в строке заголовка формы

BorderStyle

тип границы формы (в режиме конструктора).

0 – vbBSNone; 1 – vbFixedSingle; 2 – vbSizable;

3 – VbFixedDialog; 4 – vbFixedToolwindow;

5 – VbSizableToolwindow

BackColor,

ForeColor

цвет фона и текста формы. В окне свойств могут задаваться числами или константами Windows, преобразуются в шестнадцатеричные числа

Picture

фон формы, программируется функцией LoadPicture("ИмяФайла")

2.6.2.2. Свойства позиционирования формы


Группа Position (Расположение) окна Properties служит для установки размеров и положения формы на экране.


Таблица 2.23


Свойство

Возвращает или устанавливает

StartUp-Position

положение формы после запуска приложения.

Допустимые значения:

0 – VbManual – положение формы задано при конструировании;

1 – VbCenterOwner;

2- VbCenterScreen; 3 – VbWindowDefault

Height, Width

высота и ширина формы, включая толщину границ и высоту заголовка формы. Единицы измерения – Twips (твипы).

В 1 дюйме 1440 твипов

Left, Тор

координаты на экране левого верхнего угла формы

Moveable

значение True – пользователь может передвигать окно приложения

2.6.2.3. Общие свойства формы


Свойства группы Misc (Общие) задают общие атрибуты формы.


Таблица 2.24

Свойство

Возвращает или устанавливает

Name

имя формы.

MaxButton,

MinButton

значение True при наличии в форме кнопок «Развернуть» и «Свернуть», соответственно.

ControlBox

значение True при наличии в форме системного меню.

WindowState

состояние формы после запуска приложения. Допустимые значения: 0 - VbNormal – обычное;

1 – VbMinimized – свернутое;

2 – VbMaximized – развернутое.

Icon

значок приложения, программируется функцией

KeyPreview

значение True, если форма получает сообщение о событиях нажатия клавиш.

MousePointer

форму указателя мыши. Допустимые значения:

0 - VbDefault - по умолчанию,

1 - VbArrow, 2 - VbCrosshair, и т.д. до 15.

99 – VbCustom - Значок, указанный в свойстве MouseIcon.

MouseIcon

форму указателя мыши в случае MousePointer=VbCustom

ShowInTasbar

значение True - окно приложения выводится на панели задач.

2.6.2.4. Свойства поведения формы


Приведем некоторые свойства формы из группы Behavior (Поведение) окна Properties.


Таблица 2.25

Свойство

Возвращает или устанавливает

AutoRedraw

признак перерисовки графики и текста на поверхности формы, (например, после сворачивания)

Enabled

признак доступа к форме и объектам на ней;

Visible

признак видимости объекта

2.6.2.5. Свойство шрифт формы


Свойство шрифт (группа Font) позволяет, при выводе символов на поверхность формы, устанавливать атрибуты шрифта – наименование (Name), размер (Size), начертание (Bold, Italic, UnderLine).

Пример задания свойств формы.
  1. Caption – Форма-Окно приложения.

Icon - файл ...\Icons\Misc\Face02.ico.
  1. BackColor - ToolTip,
  2. ForeColor - &HFF или красный цвет из палитры.
  3. BorderStyle – vbSizable
  4. Font: - MS Sans Serif, размер – 18 , начертание – полужирный курсив
  5. Picture - файл ...\Bitmaps\Gauge\Vert.bmp.






Рис. 2.21. Свойства формы



2.6.2.6. Слои формы


Форма имеет три слоя: фон формы (для фона с рисунком используйте свойство Picture), слой для вывода изображения или текста (используйте методы Print и PaintPicture, например, Print "Второй слой формы") и слой для размещения элементов управления, причем последние могут налагаться друг на друга.

2.6.3. Основные методы и события формы

2.6.3.1. Методы формы


Таблица 2.26


Метод

Действие

Show

Отображает форму на экране

Hide

Закрывает форму

Move

Изменяет местоположение и размер формы

Cls

Очищает форму, закрашивая ее цветом фона.

Print

Отображает в форме строку текста. Синтаксис: Print "Строка"



2.6.3.2. Графические методы формы


В дополнение к рассмотренным методам формы – Сls и Print изучим методы рисования во втором слое формы.

Метод PaintPicture - выводит изображение в определенной области формы. Синтаксис:

PaintPicture picture, xl, yl, widthl, heightl, tbx2, y2, width2, height2, opcode

где Picture – объект-источник графического изображения;

xl, yl - координаты левого верхнего угла, где будет располагаться рисунок;

widthl, heightl - ширина и высота рисунка;

х2, у2 и width2, height2 - координаты левого верхнего угла, ширина и высота части источника графического изображения, заданного параметром Picture (эти параметры не используются при выводе всего изображения);

opcode - тип побитового смешивания при наложении изображений.

Метод Pset - рисует точку заданного цвета. Синтаксис:

PSet [Step] (x, у), [color]

где (х, у) - координаты точки в заданной системе координат формы,

step – ключевое слово, определяющее параметры х, у как приращения относительно текущей точки

color - цвет точки; если этот параметр опущен, то цвет - ForeColor.

Метод DrawWidth – задает толщину рисования в пикселах.

Форма имеет также методы рисования окружности, дуги или эллипса заданного цвета – Circle, а также линии или прямоугольника заданного цвета – Line.

Пример рисования и стирания "по точкам".

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ x As Single, y As Single)

If Button = vbLeftButton Then PSet (x, y), vbRed

If Button = vbRightButton Then PSet (x, y), Me.BackColor

End Sub

2.6.3.3. События формы


Таблица 2.27

Событие

Происходит

Initialize

при инициализации формы, но до ее загрузки.

Load

после инициализации формы, но до ее отображения на экран.

Unload

перед закрытием формы. Возвращает параметр Canсel для подтверждения закрытия формы. По умолчаниию Canсel=0 - закрыть;

QueryUnload

перед событием Unload, для подтверждения закрытия формы.

Terminate

при закрытии формы.

Click, DblClick

при щелчке и двойном щелчке в форме.

MouseDown, MouseUp

при нажатии и отпускании кнопки мыши.

KeyPress

после ввода символа на клавиатуре

Key Down, KeyUp

при нажатии и отпускании клавиши на клавиатуре.

Activate, Deactivate

при активизации и деактивизации формы.

Resize

при изменении размеров формы.

GotFocus, LostFocus

при получении и потере фокуса

События Form_Activate, Form_Deactivate, Form_LostFocus и Form_GotFocus происходят при перемещении между окнами одного приложения. При перемещении между окнами разных приложений эти события не происходят. Если на форме есть другие объекты, способные получать фокус (кнопки, списки, поля ввода и т.п.), то события Form_GotFocus не происходит, а фокус получает один из этих объектов.

Напомним, что окно редактора кода Code открывается командой меню View, Code, либо двойным щелчком на элементе управления или на форме. В последнем случае, в окне редактора кода готов шаблон процедуры обработки события "по умолчанию". Пример.


Private Sub Form_Initialize()

AutoRedraw = True

KeyPreview = True

Picture=LoadPicture("C:\Program Files\Microsoft Visual Studio\" _

& "Common\Graphics\Bitmaps\Gauge\Circlock.bmp")

PaintPicture Me.Picture, Width / 20, Height / 20, 2000, 2000

End Sub






Рис. 2.22. Редактор кода

Рис. 2.23. Рисование на форме

2.6.4. Обработка событий мыши


Процедуры событий Click, DblClick не имеют параметров, а процедуры событий MouseDown, MouseMove и MouseUp имеют параметры Button и Shift.


Таблица 2.28

Параметр

Возвращает

Button

целое число, обозначающее нажатую кнопку мыши. Допустимые значения:

1 - VbLeftButton - левая кнопка;

2 - VbRightButton - правая кнопка;

4 - VbMiddleButton - средняя кнопка (не работает).

Окончание табл. 2.28

Shift

целое число, обозначающее нажатую клавишу клавиатуры. Допустимые значения:

1 - VbShiftMask - клавиша Shift;

2 - VbCtrlMask - клавиша Ctrl;

4 - VbAltMask - клавиша Alt.

X и Y

положение указателя мыши в координатах формы.


Событие нажатие кнопки мышки MouseDown возникает сразу после нажатия на кнопку мыши, когда указатель находиться на объекте. Пример обработчика события.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single)

If Button = VbLeftButton Then

MousePointer = VbCustom 'указатель мыши по выбору

Mouselcon = LoadPicture("...\Cursors\pencil.cur")

End If

End Sub

Событие перемещение указателя мышки MouseMove возникает, когда указатель перемещается над объектом, при этом кнопка мыши необязательно должна быть нажата. Пример.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As Single,Y As Single)

If Button = VbLeftButton Then ' нажата левая кнопка мыши

PSet(X, Y) 'ставим точку

End If

End Sub

Событие отпускание кнопки мышки MouseUp возникает сразу после отжатия кнопки мыши, когда указатель находиться на объекте. Пример.

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

If Button = VbLeftButton Then

MousePointer = VbDefault 'указатель мыши по умолчанию

End If

If Button = vbRightButton Then Cls

End Sub


При написании кода обработки событий необходимо учитывать следующее.

При щелчке кнопки мыши происходит три события в следующей последовательности: MouseDown, MouseUp, Click.

При двойном щелчке кнопки мыши происходит пять событий в следующей последовательности: MouseDown, MouseUp, Click, DblClick, MouseUp.

Событие DblClick "два в одном" происходит после второго щелчка левой кнопки мыши, когда указатель находится на объекте. Например, событие первый щелчок выделяет строку и делает ее текущей в списке List1, второй позволяет выполнить код события – DblClick.


Private Sub List1_DblClick()

List2.AddItem List1.Text 'добавить строку в список List2

List1.RemoveItem List1.ListIndex 'удалить строку из списка List1

end Sub

2.6.5. Обработка событий клавиатуры


Каждая клавиша на клавиатуре имеет свой код сканирования (не путать с кодом символа, хотя некоторые значения совпадают), которому Visual Basic ставит в соответствие свои константы.

2.6.5.1. Коды клавиш


Таблица 2.29

Констатнта

Код

Клавиша

Констатнта

Код

Клавиша

VbKeyBack

8

BackSpace

vbKeyFl - vbKeyF12

112 - 123

F1 - F12

vbKeyTab

9

Tab

vbKeyPageUp

33

PageUp

VbKeyReturn

13

Enter

VbKeyPageDown

34

PageDown

VbKeyShift

16

Shift

VbKeyEnd

35

End

VbKeyControl

17

Ctrl

VbKeyHome

36

Home

VbKeyEscape

27

Esc

VbKeyLeft

37

влево

VbKeySpace

32

Пробел

VbKeyUp

38

вверх

vbKeyDelete

46

Delete

VbKeyRight

39

вправо

vbKeyA-VbKeyZ

65 - 90

А - Z

VbKeyDown

40

вниз


Объекты, допускающие ввод с клавиатуры имеют события KeyPress, KeyDown и KeyUp. При помощи логического свойства KeyPreview можно управлять порядком, в котором Windows обрабатывает эти события: по умолчанию сначала события клавиатуры формы, а потом элементов управления (значение свойства формы KeyPreview = True), или наоборот, KeyPreview=False.

Событие ввод символа KeyPress возникает после ввода символов. Процедура события KeyPress имеет параметр KeyAscii - код символа: буквы, цифры, знаки на стандартной клавиатуре, а также клавиш Enter, Esc, Tab, BackSpace и Space.

Событие нажатие клавиши KeyDown возникает сразу после опускания клавиши. Событие отпускания клавиши KeyUp возникает сразу после подъема клавиши.

Процедуры событий KeyDown и KeyUp имеют параметры:
  • Keycode – код клавиши (не зависит от регистра).
  • Shift – числовой параметр, соответствующий нажатой клавише:

1 - VbShiftMask - клавиша Shift,

2 - VbCtrlMask - клавиша Ctrl,

4 - VbAltMask - клавиша Alt.

Пример.


Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

Print " - код клавиши: " & Str(KeyCode)

Print "------------------------------------------"

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 13

Print "Enter - код символа: " & Str(KeyAscii)

Case 27

Print "Esc - код символа: " & Str(KeyAscii)

Case 32

Print "Space - код символа: " & Str(KeyAscii)

Case Else

Print Chr(KeyAscii) & " - код символа: " & Str(KeyAscii)

End Select

End Sub

Результат выполнения обработчиков событий Form_KeyUp и Form_KeyPress








Рис. 2.24. Коды символов и клавиш

2.6.7. Единицы измерения размеров


Основной единицей измерения размеров является твип (twip).

В 1 дюйме 1440 твипов, а в 1 см - 567 твипов.

В Visual Basic в качестве единиц измерения используются также пункты (в одном дюйме 72 пункта) и пиксели (наименьшая единица измерения разрешения монитора или принтера). Единица измерения размеров устанавливаются в свойстве ScaleMode.

  • VbUser или 0 – определенная пользователем единица измерения;
  • VbTwips или 1 – твипы; используется по умолчанию;
  • VbPoints или 2 – пункты;
  • VbPixels или 3 – пиксели;
  • VbCharacters или 4 – символы;
  • VbInches или 5 – дюймы;
  • VbMillimeters или 6 – миллиметры;
  • VbCentimeters или 7 – сантиметры.

2.6.8. Инструкции начала и завершения работы с формой



Таблица 2.30

Load

Загружает форму или элемент управления в память

Синтаксис: Load object

Unload

Выгружает форму или элемент управления из памяти

Синтаксис: Unload object

End

Завершает программу без генерации событий Unload, QueryUnload, Terminate



2.6.9. Соглашения об именах объектов


При создании формы или элемента управления, Visual Basic устанавливает свойство объекта Name (т. е. его имя) по умолчанию. Например, для первой созданной кнопки свойство Name устанавливается равным command1, для второй - command2 и т. д. При разработке приложений с одной формой имя объекта, устанавливаемое по умолчанию, обычно не вызывает никаких проблем и в этом случае имена объектов можно оставить без изменения. Если приложение обладает сложной структурой и состоит из нескольких форм, то в этом случае бывает полезным переименовать объекты так, чтобы они различались. Для переименования объектов и переменных существует соглашение об именах, называемое венгерской нотацией. Суть соглашения состоит в следующем: имя объекта начинается с короткого префикса для объектов одного и того же класса. За префиксом следует собственно имя, отображающее суть объекта. В таблице приведены префиксы и примеры имен для управляющих элементов.

2.6.9.1. Префиксы имен объектов


Таблица 2.31

Объект

Префикс




Объект

Префикс

TextBox

Txt




Frame

Fra

Label

Lbl




Image

Img

CommandButton

Cmd




PictureBox

Pic

ListBox

Lst




Line

Lin

ComboBox

Cbo




Shape

Shp

HScrollBar

Hsb




FileListBox

Fil

VScrollBar

Vsb




DirListBox

Dir

OptionButton

Opt




DriveListBox

Drv

CheckBox

Chk




Data

Dat

Timer

Tmr




Form

Frm