Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 09:46   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Как программно связать событие?

Пишу свой компонент, но не могу найти внятной инфы по созданию своих собственных событий в компоненте. В общем имеется некий компонент в котором мне необходимо протестировать свое собственное событие, вот его описание:
Код:
type

    TNotifyEvent2 = function(Sender: TObject; Stroka: String): Boolean of object;
Обратите внимание - в моем случае событие есть функция. Теперь мне нужно прицепить на это событие свою функцию, но чтобы обязательно в режиме выполнения .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.02.2010, 09:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Теперь мне нужно прицепить на это событие свою функцию
Рекомендуется так:
В твоем компоненте ты пишешь:
Код:
Published
 MyFunca:TNotifyEvent2;
Теперь когда компонент скомпилирован, эта переменка появится в Инспекторе обьектов в события.

А программно:
Код:
type
 tform1=class(tform);
  function Func2(Sender: TObject; Stroka: String): Boolean;
 ....
  
 end;
...
 function tform1.Func2(Sender: TObject; Stroka: String): Boolean;
 begin
   Бла бла
 end;
...

var f:Тот_самый_компонент;
...
begin
 ...
 f.MyFunca:=Func2;
end;
...
Только учти Func2 должна быть полюбому обьявленна в каком нибудь классе потому что ты четко указал - of object;
Это важно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2010, 09:55   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я подсмотрел как это в TCustomMemo - через свойства:
Код:
published
property OnParsing: TNotifyEvent2 read FOnParsing write FOnParsing;
Так пойдет?

Цитата:
of object;
Это важно.
Так объявлены события в юните Classes.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.02.2010 в 10:01.
Utkin вне форума Ответить с цитированием
Старый 08.02.2010, 10:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Так пойдет?
Конечно подойдет, просто я всего этого не пишу. Написал property OnParsing: TNotifyEvent2, стал на него курсором нажал CTRL+SHIFT+S (Или CTRL+SHIFT+С, уже и не помню ) и Делфи сама дописла за меня все что я не досказал ей - Рекомендую, будет меньше ошибок в коде.
Цитата:
Так объявлены события в юните Classes.
Логично. Рассчет ведь одет на то что обработчики их являются методами класса будь то форма или еще что-то.

Заметь ведь обработчики события формы обьявляются именно внутри класса. Вот и используй эту хорошую традицию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прописать событие к программно созданному эллементу? tocsik Общие вопросы Delphi 2 07.02.2010 17:57
Как связать таблицы ksmspb Microsoft Office Excel 3 24.10.2009 19:35
Как программно связать поле в отчёте FR с полем БД? Mishechka БД в Delphi 0 11.06.2009 15:57
Как связать C++ и Access? demon-189 Общие вопросы C/C++ 1 23.04.2008 19:49
Программно связать таблицы Таня84 БД в Delphi 0 20.03.2007 18:43