Отработка событий

Если сказать, что приложения которые мы написали в предидущих главах совсем не умеют отрабатывать события, это будет не правда. Если нажать кнопку с крестиком - "закрыть окно", то приложение завершит свою работу и его окно будет закрыто. То есть, по крайней мере на это событие, наша программа умеет реагировать, потому что мы уже умеем применять функцию WaitWindowEvent ( )
Теперь давайте поговорим о ней поподробнее.

Как вы уже знаете, эта функция может вернуть значение #PB_Event_CloseWindow, это означает что пользователь нажал кнопку "закрыть окно".
Но если был нажат какой-либо из созданных Вами гаджетов функция вернет - #PB_Event_Gadget, если был выбран какой-либо пункт меню (о создании меню мы еще не говорили, оставим его до следующих глав) - #PB_Event_Menu.

Чтобы выяснить какой имено гаджет был нажат пользователем, после нее надо применить функцию EventGadget ( ), она возвращает id (универсальный идентификатор) нажатого элемента.

B=EventGadget ( )

Переменная B получит значение равное id нажатого гаджета, целое число больше 0.
Как это работает можно увидеть на следующем примере:


If OpenWindow(0, 100, 100, 350, 400, "Заголовок", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) And CreateGadgetList(WindowID(0))

ButtonGadget(1, 10, 10, 330, 20, "Button 1", #PB_Button_Default)
ButtonGadget(2, 10, 40, 330, 20, "Button 2", #PB_Button_Default)


Repeat
A= WaitWindowEvent( )

If A=#PB_Event_Gadget
B= EventGadget ( )
MessageRequester("Сообщение", "Нажата кнопка "+Str(B), 0)
EndIf

If A=#PB_Event_CloseWindow
Q=1
EndIf

Until Q=1

EndIf
End



Запустите этот пример и кликните мышью кнопку номер 1, Вы увидете следующий результат:

4.JPG - 10898 Bytes


В этом примере Вы наверняка увидели две еще неизвестные Вам функции:

MessageRequester ("Заголовок сообщения", "Текст сообщения", параметр)
Эта функция дает сообщение пользователю в отдельном маленьком окошке. Ее третий параметр - целое число от 0 до 6, является необязательным, он определяет тип сообщения. Функция возвращает следующие значения (в зависимости от выбора пользователя):

Str (число)
Данная функция в качестве параметра принимает число, а возвращает соответствующую строку текста, то есть число 1 она преобразует в строку "1", число 418 в "418".
Стороки текста в PureBasic`е можно складывать, поэтому выражение "Нажата кнопка " + Str (1) даст результат "Нажата кнопка 1".


Прочитав эти главы Вы уже можете начать писать полнофункциональные приложения с графическим интерфейсом на языке PureBasic, используя справочную документацию Вы узнаете о других гаджетах и возможностях этого языка программирования, но для серьезной работы необходимо знание основ - базового синтаксиса, существующих типов переменных и многого другого, о чем мы поговорим в следующей главе.