Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое создание событий [D5, D6, D7, Win95/98, WinME, Win2k, WinXP]


GrayWolf ©   (2003-01-13 09:22:00) 

Доброго вам времени суток, уважаемые мастера!
Не могу разобраться как динамически создавать события в dll без создания класса. Т.е. в одной функции создаю, например, пункт меню (через переменную), а вот как назначить ему событие? Просмотрел справку - ничего не нашел. Все алгоритмы не подходят, так как основываются на создании класса компонента (того же пункта меню, например). Может кто подскажет, буду очень признателен...


Моджахед   (2003-01-14 19:16:00) [1]

Скажу, что не понимаю смысла обманывать компилятор.


GrayWolf   (2003-01-14 09:19:00) [2]

А что вы скажете на такой код (откопал в одном из форумов)?

procedure DoOnClick(AFake: TObject; Sender: TObject);
begin
ShowMessage(Sender.ClassName);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
LHandler: TNotifyEvent;
P: Pointer;
begin
P := @DoOnClick;
Move(P, LHandler, SizeOf(Pointer));

Button1.OnClick := LHandler;
end;



Моджахед   (2003-01-13 21:30:00) [3]

Ну, я и говорю, что, вероятно, религия. Некоторым, говорят, и процедуры создавать не хочется.
А бывают люди, которым и программы писать не хочеться. Религия, одним словом.


GrayWolf   (2003-01-13 21:19:00) [4]

Причем тут религия? Просто не хочется создавать класс...


Моджахед   (2003-01-13 21:12:00) [5]

А видно, религия, действительно, не позволяет :)


GrayWolf   (2003-01-13 21:06:00) [6]

Только так? Блин, не хотелось бы строить класс... Конечно, ничего сложного, но все же... А, кстати, проще, наверное, будет создать тогда класс пункта меню? Или я неправ?


ЮЮ   (2003-01-13 09:40:00) [7]

А что религи не позволяет описать класс, например
TMyMethods = class
protected
procedure MenuItemClick(Sender: TObject);
end;

procedure TMyMethods.MenuItemClick(Sender: TObject);
begin
...
end;

...
if MyMethods = nil then MyMethods := TMyMethods.Create;
...
menu_item.OnClick := MyMethods.onClick;


Юрий Зотов   (2003-01-13 09:27:00) [8]

Обработчик события не может быть обычной процедурой. Он должен быть методом класса. Но вот внутри этого метода уже можно вызывать и обычную процедуру.


Наверх

Титульная страница Поиск, карта сайта Написать письмо