Вниз
Скачать: 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.023 c
15-1138526367
palva
2006-01-29 12:19
2006.02.19
О выборе и оценке криптоалгоритма


2-1138731187
Arazel
2006-01-31 21:13
2006.02.19
Error: Ambiguous colum name C_Cost (ADOTable.SQL)


5-1125399541
SarDoX
2005-08-30 14:59
2006.02.19
Выделение в Stringgrid


15-1138532742
ferr
2006-01-29 14:05
2006.02.19
Регулярное выражение.


2-1139001993
ListBox
2006-02-04 00:26
2006.02.19
Можно ли в ListBox узнать по какой букве в строке был клик




   Наверх