Rapid-Q Documentation by William Yu (c)1999 Глава 4


4. Ваша первая Rapid-Q программа (Writing your first Rapid-Q Application)

Давайте перейдем прямо к написанию приложения под Windows!
Это будет  простое руководство, шаг за шагом, и в конце главы мы получим законченный исходный текст программы.

4.1 Что мы будем писать (Deciding on what to write )
Мы не будем писать простую программу типа "Hello World!", и также не будем создавть web-browser.
Сделаем что-то  полезное, однако простое для написания. Давайте напишем простую программу - базу данных персональных сведений.
При этом мы изучим управление формами (form handling),  управление событиями (event handling) и использование компонентов  QEDIT, QBUTTON, QFORM, QLABEL, and QLISTBOX. Что у нас должно получиться видно на рисунке, вы можете изменить внешний вид программы, так как вам удобно.


Это не выглядит слишком простым, но исходный текс программы занимает меньше 100 строк, и большее время уходит на проработку дизайна и размещение элементов.

4.2  Разработка формы (Designing the form )

Вы можете видеть почти все компоненты, которые нам необходимы. Одна QFORM, 2 QBUTTONs, 4 QEDITs, 4 QLABELs, и наконец 1 QLISTBOX. Прежде всего нам нужна форма  ( QFORM), на которой мы будем размещать все наши компоненты.
Вот ее код

           DIM MainForm AS QFORM  ' создать компонент

           MainForm.Center  ' разместить в центре экрана.
           MainForm.Caption = "Мое первое приложение"  ' заголовок  "Мое первое приложение"
           MainForm.Height = 340  ' высота
           MainForm.Width = 350 ' ширина


' компоненты
           MainForm.ShowModal    '-- показать форму

Если все введено правильно, то после компиляции вы должны увидеть пустую форму (окно) с такой геометрией, как указано на выше.
Отметим, что нет необходимости использовать  MainForm.Left  или  MainForm.Top,  потому что MainForm устанавливается в центре экрана, что вычисляется автоматически.  Нам нужно только указать высоту и ширину.
Теперь, когда окно имеется мы можем разместить на нем наши компоненты.
Этот код мы должны разместить до строки MainForm.ShowModal.
Сначала добавим надписи (labels).
 

       DIM NameLabel AS QLABEL, AddrLabel AS QLABEL
       DIM CityLabel AS QLABEL, PhLabel AS QLABEL

           NameLabel.Parent = MainForm
           NameLabel.Caption = "Name:"
           NameLabel.Top = 13
           NameLabel.Left = 25
           AddrLabel.Parent = MainForm
           AddrLabel.Caption = "Address:"
           AddrLabel.Top = 38
           AddrLabel.Left = 25
           CityLabel.Parent = MainForm
           CityLabel.Caption = "City:"
           CityLabel.Top = 63
           CityLabel.Left = 25
           PhLabel.Parent = MainForm
           PhLabel.Caption = "Phone #:"
           PhLabel.Top = 88
           PhLabel.Left = 25
Мы создали 4 компонента label (лэйбл) и мы используем  MainForm как контейнер для этих компонентов, поэтому свойству Parent (родитель) для этих компонентов присвоим значение  MainForm - Parent = MainForm. Если бы мы к примеру создали компонент panel1 как  QPANEL на нашей форме MainForm, а компоненты label разместили бы на этой панели, то свойство label.parent = panel1. 
Но это мы рассмотрим позже.
Мы имеем теперь главное окно, 4 компонента
Label и добавим еще 4 компонента Edit.
       DIM NameEdit AS QEDIT, AddrEdit AS QEDIT
       DIM CityEdit AS QEDIT, PhEdit AS QEDIT

           NameEdit.Parent = MainForm
           NameEdit.Left = 70
           NameEdit.Top = 10
           NameEdit.Width = 230
           AddrEdit.Parent = MainForm
           AddrEdit.Left = NameEdit.Left
           AddrEdit.Width = NameEdit.Width
           AddrEdit.Top = 35
           CityEdit.Parent = MainForm
           CityEdit.Left = NameEdit.Left
           CityEdit.Width = NameEdit.Width
           CityEdit.Top = 60
           PhEdit.Parent = MainForm
           PhEdit.Left = NameEdit.Left
           PhEdit.Width = NameEdit.Width
           PhEdit.Top = 85
Выглядит несложно, не так ли? Все так же как и для Label, немного больше параметров для правильного размещения компонентов на форме. Мы должны расположить все компоненты (иначе - кОнтролы) Qedit сразу после Qlabels.
Осталось только добавить 2 кнопки (Button) и один  контрол листбокс (listbox).

       DIM AddButton AS QBUTTON, ClearButton AS QBUTTON
       DIM ListBox AS QLISTBOX

           AddButton.Parent = MainForm
           AddButton.Left = 70
           AddButton.Top = 115
           AddButton.Width = 110
           AddButton.Caption = "&Add to Database"
           ClearButton.Parent = MainForm
           ClearButton.Left = 190
           ClearButton.Top = 115
           ClearButton.Width = 110
           ClearButton.Caption = "&Clear Database"

           ListBox.Parent = MainForm
           ListBox.Top = 150
           ListBox.Left = 70
           ListBox.Width = 230
           ListBox.Height = 150

Скопируйте и вставьте в свой код, и все готово! Скомпилируйте и запустите. Теперь мы имеем форму, которая выглядит как на рисунке выше.
Осталось сделать еще пару вещей.


4.3  Обработка событий  (Handling Events )
Как можно видеть, приведенный выше код дает нам только форму с интерфейсом пользователя, но ничего не происходит если нажимать на кнопки. Мы должны написать обработчик событий нажатия на кнопку.

           AddButton.OnClick = AddButtonClick
И это все? Ну, почти все. Обработчик события OnClick ( Нажатие) будет вызывать подпрограмму, которую мы назвали AddButtonClick.
Теперь мы должны написать эту подпрограмму.

           SUB AddButtonClick
               IF ListBox.ItemCount > 0 THEN
                  '-- Add a nice separator
                  ListBox.AddItems "--------------------------"
               END IF
               ListBox.AddItems NameEdit.Text, AddrEdit.Text, _
                                CityEdit.Text, PhEdit.Text
           END SUB

Теперь мы что-то получим. Когда пользователь нажимает на кнопку, код подпрограммы начинает выполняться. Как вы  видите, все , что он делает -  добавляет текстовые поля к к нашему листбоксу. Если вы не знаете, символ подчеркивания _ в конце строки используется в Rapid-Q для переноса длинных строк.
Теперь добавим обработчик событий для других контролов.

           SUB ClearButtonClick
               ListBox.Clear
           END SUB

           ClearButton.OnClick = ClearButtonClick

Теперь, если вы подсчитаете число строк кода, то оно бдет меньше 100! Наше приложение теперь готово , вы можете поробовать поработать с ним.

4.4  Полный листинг кода  ( Source code listing, in its entirety )
DIM MainForm AS QFORM
DIM NameEdit AS QEDIT, AddrEdit AS QEDIT, _
    CityEdit AS QEDIT, PhEdit AS QEDIT
DIM NameLabel AS QLABEL, AddrLabel AS QLABEL, _
    CityLabel AS QLABEL, PhLabel AS QLABEL
DIM ListBox AS QLISTBOX
DIM AddButton AS QBUTTON, ClearButton AS QBUTTON

SUB AddButtonClick
  IF ListBox.ItemCount > 0 THEN
    '-- Add a nice separator
    ListBox.AddItems "--------------------------------"
  END IF
  ListBox.AddItems NameEdit.Text, AddrEdit.Text, _
                   CityEdit.Text, PhEdit.Text
END SUB

SUB ClearButtonClick
  ListBox.Clear
END SUB

NameLabel.Parent = MainForm
NameLabel.Caption = "Name:"
NameLabel.Top = 13
NameLabel.Left = 25
AddrLabel.Parent = MainForm
AddrLabel.Caption = "Address:"
AddrLabel.Top = 38
AddrLabel.Left = 25
CityLabel.Parent = MainForm
CityLabel.Caption = "City:"
CityLabel.Top = 63
CityLabel.Left = 25
PhLabel.Parent = MainForm
PhLabel.Caption = "Phone #:"
PhLabel.Top = 88
PhLabel.Left = 25

NameEdit.Parent = MainForm
NameEdit.Left = 70
NameEdit.Top = 10
NameEdit.Width = 230
AddrEdit.Parent = MainForm
AddrEdit.Left = NameEdit.Left
AddrEdit.Width = NameEdit.Width
AddrEdit.Top = 35
CityEdit.Parent = MainForm
CityEdit.Left = NameEdit.Left
CityEdit.Width = NameEdit.Width
CityEdit.Top = 60
PhEdit.Parent = MainForm
PhEdit.Left = NameEdit.Left
PhEdit.Width = NameEdit.Width
PhEdit.Top = 85

AddButton.Parent = MainForm
AddButton.Left = 70
AddButton.Top = 115
AddButton.Width = 110
AddButton.Caption = "&Add to Database"
AddButton.OnClick = AddButtonClick
ClearButton.Parent = MainForm
ClearButton.Left = 190
ClearButton.Top = 115
ClearButton.Width = 110
ClearButton.Caption = "&Clear Database"
ClearButton.OnClick = ClearButtonClick

ListBox.Parent = MainForm
ListBox.Top = 150
ListBox.Left = 70
ListBox.Width = 230
ListBox.Height = 150

MainForm.Center
MainForm.Caption = "My First Application"
MainForm.Height = 340
MainForm.Width = 350
MainForm.ShowModal



Prev Глава Содержание Next Глава
ODY>