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

Дополнения от АВТОМАТа:
1) Дам несколько комментариев к статье, которые помогут, на мой взгляд, упростить код:
If state=1 opt_apply=1 ;apply Options
If state=2 save =1 ;saving
If state=3 load=1 ;loading
Здесь, по моему мнению, использование Ифов (If … End If) можно заменить на более простой Select … Case:
Select state ; выбираем переменную state
Case 1 opt_apply=1 ; Если она равна 1, то ставим opt_apply = 1
Case 2 save =1 ; В случае, если она равна двум, то save = 1
Case 3 load=1 ; Если же 3, то load = 1
End select
2) Насчет координат элементов:
ИМХО, удобнее и привычнее было бы указывать кнопкам не координаты их середин, а координаты их левого верхнего угла: так делают во многих визуальных редакторах интерфейса (в Delphi, например) - это поможет нам избавиться от переменных:
Global TrackerImxHalfSize=TrackerImxSize*.5
Global ButtonImxHalfSize=ButtonImxSize*.5
Global TrackerImyHalfSize=TrackerImySize*.5
Global ButtonImyHalfSize=ButtonImySize*.5
Global CheckImHalfSize=CheckImSize*.5

Не нужно будет вычислять левый край элемента (он у нас будет непосредственно передаваться в функцию), на примере кнопки:
tx=atx-ButtonImxHalfSize ;координаты габаритов элемента,
ty=aty-ButtonImyHalfSize ;левый верхний угол

и при проверке - наведен ли курсор на кнопку - вместо tx подставляем atx :
If (Mouse_HitX>atx) And (Mouse_HitX<atx+ButtonImxSize) And (Mouse_HitY>aty) And (Mouse_HitY<aty+ButtonImySize) And clr Then
(Offline)
 
Ответить с цитированием