Главная страница
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.024 c
14-1081088912
Гаврила
2004-04-04 18:28
2004.05.02
Постоянная работа для программера в Москве


14-1081870143
Тимохов
2004-04-13 19:29
2004.05.02
Excel


14-1081622468
Brahman
2004-04-10 22:41
2004.05.02
В это вечер..


1-1081843166
IraiZor
2004-04-13 11:59
2004.05.02
Про переменную типа TStrings


1-1081755324
Miroslav
2004-04-12 11:35
2004.05.02
Delphi&Assembler