ОКНА И ГАДЖЕТЫ часть 2

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


Итак начнем с самого распространенного - с обыкновенной кнопки:

ButtonGadget(id, x, y, Width, Height, Text, Flags)

Следующий гаджет - строка текста:

TextGadget(id, x, y, Width, Height, Text, Flags)

Как видно, функция для создания строки текста имеет те же параметры что и для кнопки и эти параметры имеют тот же смысл, только Flags принимает следующие значения:

Я думаю смысл этих флагов интуитивно понятен.


Вот мы добрались до гиперссылки:

HyperLinkGadget(id, x, y, Width, Height, Text, Color)

И здесь мы видим знакомые параметры, за исключением только Color, который, как нетрудно догадатся, означает цвет, и записывается в следующем виде:


EditorGadget - текстовый редактор, предназначен для ввода информации пользователем.

EditorGadget(id, x, y, Width, Height ,Flags)

Flags может принимать только одно значение - #PB_Editor_ReadOnly, если оно установленно - редактор недоступен.


Теперь мы можем сделать окно со всеми этими гаджетами и циклом:


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

ButtonGadget(1, 10, 10, 330, 20, "OK", #PB_Button_Left)
TextGadget(2, 10, 40, 330, 20, "Text", #PB_Text_Border)
HyperLinkGadget(3, 10, 70, 330, 20, "www.purebasic.com", RGB(0,155,255) )
EditorGadget(4, 10, 100, 330, 290)


Repeat
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1

EndIf
End



Результат выполнения этой программы должен выглядеть примерно следующим образом:

2.JPG - 12840 Bytes


Есть гаджеты, состоящие из нескольких частей, пример такого гаджета - панель, на каждой вкладке которой можно располагать разные элементы.
Панель делается так:

PanelGadget(id, x, y, Width, Height)

Добавить вкладку на панель можно используя следующую команду:

AddGadgetItem(id, Position, Text)

Здесь в качестве первого параметра указываем id панели, на которую добавляем вкладку.
Position может быть равен -1 или 1 в зависимости от того хотим мы добавить вкладку с конца или с начала.
Text - название вкладки.


Пример приложения с панелью ниже:


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

PanelGadget(1, 10, 10, 330, 380)

AddGadgetItem(1, -1, "Item 1")
ButtonGadget(2, 30, 30, 50, 20, "OK")


AddGadgetItem(1, -1, "Item 2")
ButtonGadget(3, 30, 30, 50, 20, "Cancel")

CloseGadgetList( )

Repeat
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1

EndIf
End



Обратите внимание, что при создании панели автоматически открывается новый список гаджетов (GadgetList), которые будут находится на ней. В конце каждая панель должна быть закрыта командой CloseGadgetList( ).

Результат должен выглядеть так:

3.JPG - 9987 Bytes


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

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

В следующей главе речь пойдет о том как в PureBasic`е реализована эта самая отработка событий.