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 CenterCREATE 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 Глава |
ODY>