Показать сообщение отдельно
Старый 11.01.2008, 22:44   #5
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Re: Примеры элементов GUI

Кнопка
Сама функция:
; atx – положение центра элемента на экране (в окне, если хотите) по горизонтали
; аty – то же по вертикали
; name$ - имя элемента
; expl$ - содержимое всплывающей подсказки
; clr – флаг активности кнопка (активна/отключена)
; state – здесь для специальных кнопок, вызывающих подфункцию ("сохранить", "старт")

Function CrtMenuButton(atx,aty,name$,expl$,clr,state) ;button
tx=atx-ButtonImxHalfSize ;координаты габаритов элемента,
ty=aty-ButtonImyHalfSize ;левый верхний угол
i=0 ;состояние кнопки: нажата/отпущена
;если мышь наведена на кнопку и кнопка активна, тогда
If (Mouse_HitX>tx) And (Mouse_HitX<tx+ButtonImxSize) And (Mouse_HitY>ty) And (Mouse_HitY<ty+ButtonImySize) And clr Then
;если был ЛКМ, тогда показываем нажатую кнопку и применяем статус
If Mouse_Hit Then
DrawImage MenuButtonMPRESS, tx,ty,ty
i=1
If state=1 opt_apply=1 ;apply Options
If state=2 save =1 ;saving
If state=3 load=1 ;loading
Mouse_Hit=0
;
иначе показываем подсвеченную кнопку и запускаем счетчик задержки
;
если мышь не сдвинется, по окончании счета появится подсказка
Else
DrawImage MenuButtonMON, tx,ty
;если счетчик достиг предела, копируем подсказку в
;обрабатываемую переменную
If expl$<>0 And help_delay=maxhelp_delay Then exploration$=expl$
EndIf
;если мышь не наведена, рисуем простую, не подсвеченную кнопку
Else DrawImage MenuButtonMPASS, tx,ty
EndIf
SetFont fnt2
Color 100-100*clr,100-100*clr,100-100*clr
Text atx,aty,name$,1,1 ;подписываем кнопку

Return I ;результат возвращаемый функцией - нажата кнопка или нет
End Function

Этот элемент возвращает бинарный результат. Однако существуют кнопки ("сохранить", "применить"..), для которых необходимо сразу же вызывать определенную функцию, не относящуюся к построению меню. Для этого, при создании кнопки, мы укажем ее тип, и в случае нажатия будет установлен один из ключей (save, load, opt_apply).
(Offline)
 
Ответить с цитированием