| Rapid-Q Documentation by William Yu (c)1999-2000 | Глава 5 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Для
bsSingle форма выглядит также, как и для
bsSizeable, за исключением того, что нельзя изменять ее размер. Во
многих случаях используются только два вида форм -
bsSizeable и
bsDialog.
5.2 Добавление компонентов на форму (Adding components to a form )
Представьте программу с несколькими формами. Все видимые компоненты должны
иметь свойство Parent (родитель).
Такие компоненты, как
QMENUITEM, и QTIMER не имеют свойства Parent.
Хотя
QMENUITEM является видимым (visible)
компонентом, его родителем могут быть только компоненты
QMAINMENU или QPOPUPMENU. В данном случае, вместо ипользования свойства
Parent , для добавления пункта меню необходимо
использовать метод
Add (добавить) или Insert (вставить).
Если не задать свойство
Parent , то компонент остается невидимым. В случае
QCANVAS или QIMAGE вы получите сообщение об ошибке если попытаетесь рисовать
на таком компоненте. Вы не можете рисовать на невидимом компоненте. В
большинстве случаев свойство Parent необходимо
задавать первым, прежде чем производить какие-то действия с этим компонентом.
Для того, чтобы скрыть компонент, вы можете использовать свойство
Visible (видимость).
Visible=0 - скрыть компонент,
Visible=1 - показать компонент.
5.3 Отслеживание позиции мыши на форме (Tracking the mouse position on a form)
SUB AddButtonClick
'' Do stuff
END SUB
AddButton.OnClick = AddButtonClick
Нажатая клавиша возвращает значение в переменной
Key. Вы можете назвать эту переменную как угодно, но ваша
SUB должна иметь этот параметр.
Rapid-Q допускает использование большее число параметров в этой
SUB, но как минимум один параметр должен быть.
Для
OnKeyDown должны быть переданы два параметра.
При использовании
OnKeyDown возвращается код виртуальной клавиши, который не является
двухбайтным, как в QBasic. Стрелка вверх имеет код 38,
влево - 37, вправо - 39 и вниз - 40.
5.5 Диалоговые окна ( Dialog Boxes )


ModalResult это свойство как
QButtons, так и QForms. Когда вы делаете
OKButton1.Kind = bkOK
Это означает, что когда вы нажимаете кнопку ОК,
ModalResult возвращает mrOK. Этот результат автоматически закрывает вашу
форму
Dialog1.
Другой менее элегантный способ заключается в простом присваивании
ModalResult вашей форме. Например :
SUB ButtonClick
Dialog1.ModalResult = mrOK
END SUB
OKButton1.ModalResult = mrNone '' No result
OKButton1.OnClick = ButtonClick
используя CREATE:
CREATE MainForm AS QForm
Left = 100
Top = 50
Height = 300
Width = 400
Caption = "Hello world!"
END CREATE
CREATE MainForm AS QForm
Center
CREATE Button1 AS QButton
Left = 10: Top = 10: Height = 20: Width = 20
END CREATE
CREATE Button2 AS QButton
Left = 40: Top = 10: Height = 20: Width = 20
END CREATE
ShowModal
END CREATE
Отметим, что при этом не требуется использовать свойство
Parent , т.к. компилятор понимает, что "вложенный" компонент
Button1 имеет родителем форму
MainForm и автоматически устанавливает свойство
Button1.Parent = MainForm .
Rapid-Q допускает 25 уровней вложения. Я не думаю что реально может
использоваться больше 4-5 уровней. Компоненты, не имеющие свойства
Parent (невидимые компоненты) не могут "вкладываться". CREATE MainForm AS QForm ' 0 уровень
Center
CREATE MainMenu AS QMainMenu ' 1 уровень
CREATE FileMenu AS QMenuItem ' 2 уровень
Caption = "&File"
CREATE OpenItem AS QMenuItem ' 3 уровень
Caption = "&Open"
END CREATE
CREATE SaveItem AS QMenuItem
Caption = "&Save"
END CREATE ' 3 уровень (конец)
END CREATE ' 2 уровень (конец)
END CREATE ' 1 уровень (конец)
ShowModal
END CREATE ' 0 уровень (конец)
Вместо использования свойства Parent для меню применяется метод AddItems.
Использование Create проще для понимания.| Prev Глава | Up | Содержание | Next Глава |