Вниз
Скачать: CL | DM;

Привязка сообщений   Найти похожие ветки 

 
Hyboid ©   (2004-04-12 13:56) [0]

Подскажите пожалуйста механизм привязки сообщений к объекту.
Правильно ли выполняется динамическое создание таймера ?

Procedure MyOnTimer(Sender : TObject);
begin
 ...
end;

var MyTimer : TTimer;

...
 MyTimer := TTimer.Create(nil);
 MyTimer.OnTimer := MyOnTimer;

...


 
Anatoly Podgoretsky ©   (2004-04-12 14:00) [1]

Создание правильное, а вот назначения обработчика неправильное, обработчик должет быть типа TNotifyEvent


 
serge35   (2004-04-12 14:00) [2]

А таймер обязательно создавать динамически?


 
Hyboid ©   (2004-04-12 14:04) [3]

Таймер приведен лишь в качестве примера. Необходимо создавать некоторый объект, который бы реагировал на события.


 
serge35   (2004-04-12 14:10) [4]

По таймеру?


 
Hyboid ©   (2004-04-12 14:16) [5]

На те события, на которые этот объект вообще может отвечать.
Как объявить обработчик типа TNotifyEvent ?


 
serge35   (2004-04-12 14:19) [6]

Если ты решил создать некий объект и хочешь по нему задать некий вопрос, то получишь некий ответ.


 
Anatoly Podgoretsky ©   (2004-04-12 14:22) [7]

Hyboid ©   (12.04.04 14:16) [5]
Метод какого либо класса


 
Hyboid ©   (2004-04-12 14:26) [8]

В принципе, конечно, можно и конкретизировать. Например, как динамически создать кнопку и повесить обработчик на ее нажатие. Но разве привязка обработчиков выполняется не единым образов для всех объектов?


 
Hyboid ©   (2004-04-12 14:29) [9]

Anatoly Podgoretsky.
Т.е. в случае с таймером я должен написать:

type
 TMyTimer = class(TTimer)
   ...
   Procedure OnTimer(Sender : TObject);
 end;

Procedure TMyTimer.OnTimer(Sender : TObject);
begin
 ...
end;



 
Anatoly Podgoretsky ©   (2004-04-12 14:30) [10]

Единым!

СвойствоEvent := Обработчик соответствующего типа;


 
serge35   (2004-04-12 14:30) [11]

У кнопки есть несколько событий, кроме нажатия.
А у TEdit такого события нет и т.д.


 
Anatoly Podgoretsky ©   (2004-04-12 14:33) [12]

Hyboid ©   (12.04.04 14:29) [9]
Да подходит, только желательно ограничить обработчик, поместить его описание в секцию private

MyTimer := TMyTimer.Create(nil);
MyTimer.OnTimer := OnTimer;

Некрасиво давать одинаковые имена свойству и методу, будут серьезные проблемы.


 
Hyboid ©   (2004-04-12 14:53) [13]

Короче получилось вот что:

type
 TMyTimer = class(TTimer)
   Procedure MyOnTimer(Sender : TObject);
 end;

var t    : TMyTimer;

Procedure TMyTimer.MyOnTimer( Sender : TObject );
begin
 ...
end;

...
 t := TMyTimer.Create(nil);
 t.Interval := 500;
 t.onTimer := t.MyOnTimer;
...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.035 c
1-1081851992
siriusP
2004-04-13 14:26
2004.05.02
Свойство типа объект в инспекторе объектов?


1-1082092101
guest_Dmitry
2004-04-16 09:08
2004.05.02
Подскажите компонент


1-1082092275
Pirate
2004-04-16 09:11
2004.05.02
Сравнение по маске


1-1082006271
Никита
2004-04-15 09:17
2004.05.02
Использование компонента TWebBrowser


1-1082097647
Litva
2004-04-16 10:40
2004.05.02
Что луче?...




   Наверх