Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизДинамически связать TNotifyEvent и процедуру Найти похожие ветки
← →
Sphinx (2005-02-11 11:03) [0]Имеем TSomeComponent в котором определено OnDoSomething вида
TSomComponent = class (TObject)
...
private
procedure FDoSomething;
public
property OnDoSomthing : TNotifyEvent read FDoSomething write FDoSomething;
...
procedure FDoSomething;
begin
if Assigned (OnDoSomeThing) then
OnDoSomthing(Self);
end;
...
и есть процедура вида:procedure DoSome(Sender: TObject);
begin
{ какие-то операции }
end;
Как можно динамически связать событие OnDoSomething и процедуру DoSome?
примерный код который нужен:SomeComponent := TSomeCpmponent.Create;
SomeComponent.OnDoSomthing := DoSome // <= естественно не работает
Как правильно записать последнюю строку чтобы при возникновении события в компаненте вызывалась процедура DoSome?
Заранее благдарен за ответ.
← →
Fay © (2005-02-11 11:08) [1]Это должен быть метод
← →
ЮЮ © (2005-02-11 11:08) [2]procedure Form1.DoSome(Sender: TObject);
begin
{ какие-то операции }
end;
DoSome должен быть методом объекта, например формы или какого-нибудь другого, который динамически в качестве обработчика события объекта класса TSomComponent установит свой метод.
← →
Sphinx (2005-02-11 11:10) [3]В том-то и дело TForm1 нету вообще :) WinAPI проект...
← →
ЮЮ © (2005-02-11 11:22) [4]Тогда описываешь ещё один класс:
TMyEvens = class
DoSome(Sender: TObject);
DoOther(Sender: TObject);
end;
создаешь при старте экземпляр MyEvens: TMyEvens
и раздаешь направо и налево его методы:
SomeComponent.OnDoSomthing := MyEvens.DoSome;
P.S.
← →
jack128 © (2005-02-11 11:22) [5]Sphinx (11.02.05 11:10) [3]
WinAPI проект...
тебе что, сложно класс написать?
THandlers = class
class procedure DoSamethingHandler(Sender: TObject);
end;
procedure THandlers.DoSamethingHandler(Sender: TObject);
begin
{ какие-то операции }
end;
SomeComponent.OnDoSomthing := THandlers.DoSamethingHandler;
← →
begin...end © (2005-02-11 11:25) [6]> Sphinx (11.02.05 11:03)
var
MyEventHandler: TNotifyEvent;
begin
TMethod(MyEventHandler).Code := @DoSome;
TMethod(MyEventHandler).Data := SomeComponent;
SomeComponent.OnDoSomething := MyEventHandler
end
← →
Sphinx (2005-02-11 11:31) [7]> jack128 © (11.02.05 11:22) [5]
Не сложно...не знал просто как правильно...
Спасибо, буду разбираться...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c