Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: 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 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.105 c
3-1080890117
TATIANA
2004-04-02 11:15
2004.05.02
Изменения размера страницы - база IBExpert


3-1081383362
big_bugzy
2004-04-08 04:16
2004.05.02
Как в трех уровневом приложении получить идентификатор?


14-1081411789
uny
2004-04-08 12:09
2004.05.02
какой клиент выбрать?


3-1081261443
Виталий Панасенко
2004-04-06 18:24
2004.05.02
Два вопроса: MS SQL и PReport


14-1081759781
Lexer
2004-04-12 12:49
2004.05.02
Характеристика программиста