Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Вниз
Динамическое создание событий Найти похожие ветки
← →
GrayWolf (2003-01-13 09:22) [0]Доброго вам времени суток, уважаемые мастера!
Не могу разобраться как динамически создавать события в dll без создания класса. Т.е. в одной функции создаю, например, пункт меню (через переменную), а вот как назначить ему событие? Просмотрел справку - ничего не нашел. Все алгоритмы не подходят, так как основываются на создании класса компонента (того же пункта меню, например). Может кто подскажет, буду очень признателен...
← →
Юрий Зотов (2003-01-13 09:27) [1]Обработчик события не может быть обычной процедурой. Он должен быть методом класса. Но вот внутри этого метода уже можно вызывать и обычную процедуру.
← →
ЮЮ (2003-01-13 09:40) [2]А что религи не позволяет описать класс, например
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;
← →
GrayWolf (2003-01-13 21:06) [3]Только так? Блин, не хотелось бы строить класс... Конечно, ничего сложного, но все же... А, кстати, проще, наверное, будет создать тогда класс пункта меню? Или я неправ?
← →
Моджахед (2003-01-13 21:12) [4]А видно, религия, действительно, не позволяет :)
← →
GrayWolf (2003-01-13 21:19) [5]Причем тут религия? Просто не хочется создавать класс...
← →
Моджахед (2003-01-13 21:30) [6]Ну, я и говорю, что, вероятно, религия. Некоторым, говорят, и процедуры создавать не хочется.
А бывают люди, которым и программы писать не хочеться. Религия, одним словом.
← →
GrayWolf (2003-01-14 09:19) [7]А что вы скажете на такой код (откопал в одном из форумов)?
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-14 19:16) [8]Скажу, что не понимаю смысла обманывать компилятор.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c