Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Внизнаследование класса Найти похожие ветки
← →
atmospheric (2006-02-01 02:35) [0]наследую класс, TMyImage = class(TImage)
в конструкторе пишу:
OnClick := MyImageClick;
по MyImageClick отробатываются какие то дествия XXX.
в программе создаю объект
MI[count] := TMyImage.Create(Form1);
мой объект создается и по событию OnClick я получаю XXX;
далее добовляю
MI[count].OnClick := OnMIClick;
объект создается, но я не получаю XXX.
где ошибка?
я пробовал так:
MI[count].OnClick := OnMIClick;override;
но это не помогло
← →
Джо © (2006-02-01 02:41) [1]Чего ты хочешь добиться?
← →
ЮЮ © (2006-02-01 02:50) [2]
> объект создается, но я не получаю XXX.
Естественно, ты ведь заменил OnClick.
> где ошибка?
Не дело писать код наследника в пользовательских обработчиках событий.
Перекрывать надо методы объекта, в котором вызывается пользовательский обработчик:
TMyImage = class(TImage)
...
protected
procedure Click; override;
...
end;
procedure TMyImage.Click;
begin
... // собственные действия до стандартной обработки
inherited; // собственно стандартные действия
... // собственные действия после стандартной обработки
end;
А вот inherited Click и вызоет пользовательский обработчик OnClick:
procedure TControl.Click;
begin
if Assigned(FOnClick) and (Action <> nil) and (@FOnClick <> @Action.OnExecute) then
FOnClick(Self)
else if not (csDesigning in ComponentState) and (ActionLink <> nil) then
ActionLink.Execute(Self)
else if Assigned(FOnClick) then
FOnClick(Self);
end;
← →
atmospheric (2006-02-01 10:31) [3]не пойму что-то :(
класс:
protected
procedure MyImageClick(Sender: TObject);
...
constructor TMyImage.Create(AOwner: TComponent);
begin
OnClick := MyImageClick;
...
procedure TMyImage.MyImageClick(Sender: TObject);
begin
XXX;
end;
объект
MI[count] := TMyImage.Create(Form1);
MI[count].OnClick := OnMIClick;
...
procedure TForm1.OnMIClick(Sender: TObject);
begin
;
end;
ни так:
procedure TMyImage.MyImageClick(Sender: TObject);
begin
inherited;
XXX;
end;
ни так:
procedure TMyImage.MyImageClick(Sender: TObject);
begin
XXX;
inherited;
end;
не работает :(
на это ругается:
protected
procedure MyImageClick(Sender: TObject); override;
← →
ZeroDivide © (2006-02-01 13:46) [4]TMyImage = class(TImage)
...
protected
procedure Click; override;
...
end;
procedure TMyImage.Click;
begin
... // собственные действия до стандартной обработки
inherited; // собственно стандартные действия
... // собственные действия после стандартной обработки
MyImageClick(Self); // <- Вставить сюда
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c