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

Чекбокс
Теперь давайте вспомним еще один графический элемент интерфейса, возвращающий бинарное значение, - чекбокс (CheckBoxGadget в визуале). По сути чекбокс - это ни что иное как кнопка с фиксатором положений (какие можно встретить на ЭЛТ мониторах и телевизорах). Можно было бы использовать картинку кнопки для этого элемента, но дабы разнообразить интерфейс, я рендернул в максе лампочку, как на приборной панели:
Function CrtMenuCheck(atx,aty,name$,expl$,clr,state) ;check
tx=atx-CheckImHalfSize
ty=aty-CheckImHalfSize
;попадает ли курсор на чекбокс
If (Mouse_HitX>tx) And (Mouse_HitX<tx+CheckImSize) And (Mouse_HitY>ty) And (Mouse_HitY<ty+CheckImSize) And clr Then

;если ЛКМ то инвертируем состояние (state здесь используется как состояние вкл/выкл)и рисуем соотв. картинку
If state=0 Then DrawImage MenuCheckOFF,tx,ty Else If Mouse_Hit Then DrawImage MenuCheckOFF,tx,ty state=0 Mouse_Hit=0
If state=1 Then DrawImage MenuCheckON,tx,ty Else If Mouse_Hit Then DrawImage MenuCheckON,tx,ty state=1 Mouse_Hit=0

;если счетчик достиг предела - назначаем подсказку
If expl$<>0 And help_delay=maxhelp_delay Then exploration$=expl$
Else

;если не ЛКМ рисуем текущее состояние
If state=0 Then DrawImage MenuCheckOFF,tx,ty
If state=1 Then DrawImage MenuCheckON,tx,ty
EndIf

;имя чекбокса справа от него
SetFont fnt2
Color 100+150*clr,100+150*clr,100+150*clr
Text atx+CheckImHalfSize,aty,name$,0,1

;возвращаем состояние
Return state
End Function
(Offline)
 
Ответить с цитированием