Форум: "Начинающим";
Текущий архив: 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