Вниз
Скачать: CL | DM;

наследование класса   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1138943572
hunn
2006-02-03 08:12
2006.02.19
заголовок stringgrid


2-1138559158
JEK2
2006-01-29 21:25
2006.02.19
Зеркальное отображение картинки


15-1138434491
Nik8.
2006-01-28 10:48
2006.02.19
http://www.rus-os.narod.ru/


2-1138759779
boalse
2006-02-01 05:09
2006.02.19
A и W


1-1137550952
джонни
2006-01-18 05:22
2006.02.19
Регистрация "протокола" / обработчика




   Наверх