Главная страница
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.042 c
1-1137521073
vip60
2006-01-17 21:04
2006.02.19
Многопоточное приложение для работы с файлами помогоите...


15-1138205476
Kerk
2006-01-25 19:11
2006.02.19
Кластеризация


15-1138284048
DelphiMangler
2006-01-26 17:00
2006.02.19
Откомпилировать C-файлы и H-файлы


1-1137482024
RDA
2006-01-17 10:13
2006.02.19
Вставка апострофа во всех контролах


3-1135261243
Barsky
2005-12-22 17:20
2006.02.19
Значения AutoInc поля только что введенной записи