![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GUI [Delphi, OpenGL]
К8 © (2006-10-05 00:14:00)Пытаюсь написить свой GUI (WinAPI+OpenGL), столкнулся с рядом трудностей.
1 создал класс кнопки. Как сделать так, чтобы для каждого экземпляра этого класса можно было создавать свой метод .click?
2 как создать движок в который можно было бы кидать элементы различных классов, а он для каждого из них выполнял методы .draw .click и им подобные?
помогите пожалуйста!
если у кого-то есть исходники, не откозался бы посмотреть.
зарание спасибо.
Fosgen (2006-10-05 14:18:00) [21]Cash © (05.10.06 13:34) [3]
В классе "кнопки" надо завести проперть Click или как еще его часто называют OnClick.
Почитай хелп Дельфи по методам и пропертям (св-вам) классов.
Далее данному полю-проперти присваивается адрес однотипной (с пропертью) процедуры (а таких для разных кнопок могет быть много). Она и будет обработчиком события, который будет вызываться если двиг ГУЯ определит что на данную кнопку кликнули мышой (возникло событие)...
Т.е. для разных кнопок одного класса можно назначать разные обработчики кликов.
Т.е. процедуры-обработчики описываются вне класса кнопки, но по типу совпадают с пропертью OnClick.
А Draw - собственный метод класса, который соответственно одинаков для всех объектов такого класса.
@!!ex (2006-10-05 13:51:00) [22]не влазят сюда.... А выкидвать на скачивание нету времени.
Модераторы, потрите эти два моих сообщения, плиз.
@!!ex (2006-10-05 13:43:00) [23]
> К8 (05.10.06 00:14)
У меня есть исходники.
Cash (2006-10-05 13:34:00) [24]К8:
Э-э-э-э... :\
А что такое click? Ну типа Draw я уже понял, а вот что делает click - нет!
Поясни.
Rial (2006-10-05 11:32:00) [25]Создаешь движок, в который добавляешь каждый из новых элементов.
MyBtn:=TGLButton.Create;
Engine.AddButton(MyBtn);
Все события обрабатываются в Engine, в зависимости от ситуации
вызываются соотв. методы элементов.
Например, есть
With MyBtn do
begin
Left:=10;
Top :=20;
With:=30;
Height:=40;
Frame:=1; - окно
end;
Engine.Frame:=2;
TEngine.OnMouseClick(Const X, Y : Integer);
begin
...
Components.First;
While (Not Conponents.Eof) do begin
If (X <= Conponents.Current.Right)and
(X >= Conponents.Current.Left)and
...
then
begin
Conponents.Current.Click(X, Y);
end;
Conponents.Next;
end;
...
end;
В зависимости от типов элементов вешаешь на них
различные события.
TEngine.Draw;
begin
Components.First;
While (Not Conponents.Eof) do begin
If (Conponents.Current.Frame = CurrentFrame)and
...
then
Conponents.Current.Draw;
Conponents.Next;
end;
end;
Ketmar (2006-10-05 00:16:00) [26]собственно, а чем не устраивает подход VCL? исходники -- в любой пиратское Delphi или в честной TurboDelphi. %-)