Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1195689628
Неместная
2007-11-22 03:00
2007.12.16
Bitmap &amp; Stream


2-1195503680
дима
2007-11-19 23:21
2007.12.16
Поля


15-1194870352
Leonid Troyanovsky
2007-11-12 15:25
2007.12.16
Вредные советы чайникам


2-1195577006
allucard
2007-11-20 19:43
2007.12.16
Как определить размер переменной, занимаемый в памяти


2-1195515747
ht9
2007-11-20 02:42
2007.12.16
Форма bsnone





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский