Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизПривязка сообщений Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c