Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: 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 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
15-1138358865
Andy BitOff
2006-01-27 13:47
2006.02.19
Фоном открыть jpg и прочитать его размеры (VBA Excel)


1-1137740085
GangsterMan
2006-01-20 09:54
2006.02.19
Отсутствует реакция на ХотКей


4-1133428554
Verg
2005-12-01 12:15
2006.02.19
Прерывания в многопроцессорной архитектуре


2-1138784272
dabreezy
2006-02-01 11:57
2006.02.19
Вопрос по TiniFile


11-1119532053
вад
2005-06-23 17:07
2006.02.19
IdSMTP