Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.192 c
6-72452
s002156Shurik
2002-11-22 19:35
2003.01.23
Как работать с сокетами под дос?


1-72273
Петр__
2003-01-15 11:02
2003.01.23
Документация к разработанной программе.


14-72482
TTCustomDelphiMaster
2003-01-04 19:05
2003.01.23
Top10


14-72462
herosofnn
2003-01-04 11:18
2003.01.23
Excel


3-72058
Picco
2003-01-05 13:09
2003.01.23
форматы Access 97,2000,2002





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский