Главная страница
    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.009 c
4-72578
Sergei
2002-12-06 16:52
2003.01.23
Добавление Control В Диалоговое меню


1-72210
ArhangeJI
2003-01-14 12:42
2003.01.23
ComboBox как избавиться от двух символов в конце текста...


1-72228
Джин
2003-01-14 15:31
2003.01.23
Создание компонент


14-72516
незнаика
2003-01-05 17:49
2003.01.23
Вопрос


3-72115
Vitalik S
2002-12-29 11:02
2003.01.23
Глюк с Хранимой процедурой





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский