Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

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

 
webpauk ©   (2007-11-21 18:10) [0]

TDel = class(TComponent)
public
fID: Integer;
LblDel: TLabel;
procedure pLblDelClick(Sender: TObject);
end;

procedure TDel.pLblDelClick(Sender: TObject);
begin
 if MessageDlg("Удалить:: "+LblDel.Caption+"?", mtConfirmation, [mbYes, mbNo], 0)<>mrYes then Abort;
end;

var
 fLbl: TDel;
begin
 fLbl:=TDel.Create(Self);
 fLbl.OnClick=MyLblClick;
end;

procedure Form.MyLblClick(SeTobject);
begin
 inherited;

 doSomeThing...
end;


наследования метода Click (TDel.pLblDelClick) - не происходит.
Как?


 
Reindeer Moss Eater ©   (2007-11-21 18:11) [1]

А есть что наследвать?


 
Reindeer Moss Eater ©   (2007-11-21 18:12) [2]

Главное что именно и у кого именно.
:)


 
webpauk ©   (2007-11-21 18:18) [3]

var
fLbl: TDel;
begin
fLbl:=TDel.Create(Self);
fLbl.OnClick=MyLblClick; - наследует TDel.pLblDelClick
end;


 
Reindeer Moss Eater ©   (2007-11-21 18:19) [4]

Это тебе только так кажется.
Это простое присвоение значения свойству.


 
webpauk ©   (2007-11-21 18:20) [5]

а как?


 
Reindeer Moss Eater ©   (2007-11-21 18:23) [6]

а что как?
начни с того, что у TComponent нет вообще никакого OnClick. И твой чудесный  TDel тоже никак не реагирует на клики мыши.


 
Reindeer Moss Eater ©   (2007-11-21 18:25) [7]

Или ты думаешь, что если создать такой класс

TDummy = class(TComponent)
...
property OnLightOn : TNotifyEvent;
...
end;

То он волшебным образом реагировать на зажигание люстры в комнате?


 
webpauk ©   (2007-11-21 18:27) [8]

но ведь событие OnClick - определено...
и если fLbl.OnClick=MyLblClick; не прописывать, обработчиком будет TDel.pLblDelClick


 
Reindeer Moss Eater ©   (2007-11-21 18:30) [9]

А при чем здесь наследование?

Или ты про это?
procedure Form.MyLblClick(SeTobject);
begin
inherited;

А у предка Form есть метод MyLblClick?


 
webpauk ©   (2007-11-21 18:33) [10]

да я понимаю ошибку...
как правильно унаследовать


 
Плохиш ©   (2007-11-21 18:35) [11]


> webpauk ©   (21.11.07 18:27) [8]
> но ведь событие OnClick - определено...
> и если fLbl.OnClick=MyLblClick; не прописывать, обработчиком
> будет TDel.pLblDelClick

Нифигасе, и обосновать сиё утверждение сможешь?


 
webpauk ©   (2007-11-21 18:37) [12]


> Плохиш ©   (21.11.07 18:35) [11]

ага...
кодом


 
Плохиш ©   (2007-11-21 18:39) [13]


> webpauk ©   (21.11.07 18:33) [10]
> да я понимаю ошибку...
> как правильно унаследовать

По моему, тебе уже года два назад советовали что-нибудь почитать


 
Плохиш ©   (2007-11-21 18:39) [14]


> webpauk ©   (21.11.07 18:37) [12]
>
> > Плохиш ©   (21.11.07 18:35) [11]
>
> ага...
> кодом

и каким же?


 
webpauk ©   (2007-11-21 18:43) [15]


> Плохиш ©   (21.11.07 18:39) [14]


unit Unit1;

interface

uses
 SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
 QStdCtrls;

type
 TMyClass = class(TComponent)
 public
   Lbl: TLabel;
   procedure LblClick(Sender: TObject);
   constructor Create(AOwner: TComponent); override;
 end;

 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.xfm}

constructor TMyClass.Create(AOwner: TComponent);
begin
 Lbl:=TLabel.Create(Self);
 Lbl.Caption:="Click Me";
 Lbl.OnClick:=LblClick;
end;

procedure TMyClass.LblClick(Sender: TObject);
begin
 MessageDlg("Clicked", mtInformation, [mbOk], 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 fMyClass: TMyClass;
begin
 fMyClass:=TMyClass.Create(Self);
 with fMyClass do
 begin
   Lbl.Parent:=Self;
   Lbl.Left:=10;
   Lbl.Top:=10;
 end;
end;

end.


 
Johnmen ©   (2007-11-21 18:59) [16]

Хотел поглумиться. Не буду...


 
webpauk ©   (2007-11-21 19:11) [17]

эх вы...
всего то делов:


 TDelLabel = class(TLabel)
 private
   fOnClick: TNotifyEvent;
   procedure Click; override;
 published
   property OnClick: TNotifyEvent read fOnClick write fOnClick;
 end;

procedure TDelLabel.Click;
begin
 MessageDlg("Click", mtInformation, [mbOk], 0);
 if Assigned(FOnClick) then FOnClick(Self);
end;

 TMyClass = class(TComponent)
 public
   Lbl: TDelLabel;
   constructor Create(AOwner: TComponent); override;
 end;



 
Leonid Troyanovsky ©   (2007-11-21 19:29) [18]


> Johnmen ©   (21.11.07 18:59) [16]

> Хотел поглумиться. Не буду...

А ведь надо было дать коленом под зад.
Надо.

--
Regards, LVT.



Страницы: 1 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.018 c
2-1195648487
kudatsky
2007-11-21 15:34
2007.12.16
Ограничение на количество открытых DBF-файлов


15-1194518134
Grom PE
2007-11-08 13:35
2007.12.16
Прошу помочь с переводом сишного кода эмулятора Adlib


2-1195354236
Тип
2007-11-18 05:50
2007.12.16
смена директории


1-1190813080
Иван_А
2007-09-26 17:24
2007.12.16
Изменить цвет строки ListView


2-1195628090
marik
2007-11-21 09:54
2007.12.16
Помогите разобраться с компанентой