Hi, Comm.,
prinzipielle Frage zur Darstellung und Übernahme von Eigenschaften aus dem Objektinspektor:
Delphi-Quellcode:
TTestpanel = class(Tpanel)
private
FcheckA: TCheckBox;
FcheckB: TCheckBox;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
published
{ published declarations }
property checkA: TCheckBox read FcheckA write FcheckA;
property checkB: tcheckbox read FcheckB write FcheckB;
constructor create(AOWNER:tcomponent);override;
end;
constructor TTestpanel.create(AOWNER: tcomponent);
begin
inherited;
checkA:=tcheckbox.Create(self);
checkA.Caption:='A';
InsertControl(checkA);
checkb:=tcheckbox.Create(self);
checkB.Caption:='B';
checkB.top:=checkB.top+15;
InsertControl(checkB);
end;
Stellt man im Objektinspektor die Eigenschaft checkA.checked auf true, sieht man das auch auf dem Formular - aber nach Start des Programms ist dieses checked=true wieder weg.
Spendiere ich z.B. checkA eine Setter und getter:
[DELPHI]
Delphi-Quellcode:
TTestpanel = class(Tpanel)
private
FcheckA: TCheckBox;
FcheckB: TCheckBox;
procedure setcheckA(const Value: TCheckBox);
Function getcheckA:tcheckbox;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
published
{ published declarations }
property checkA: TCheckBox read FcheckA write setcheckA;
property checkB: tcheckbox read FcheckB write FcheckB;
constructor create(AOWNER:tcomponent);override;
end;
procedure TTestpanel.setcheckA(const Value: TCheckBox);
begin
FcheckA:=value;
end;
function TTestpanel.getcheckA: tcheckbox;
begin
result:=FcheckA;
end;
bleibt ales beim alten. SetcheckA wird im Debug-Modus erreicht, die Voreinstellung des Objektinspektors aber nicht übernommmen.
Nun speicherte ich den Zustand von checkA.Checked in einer Extra-Variablen:
Delphi-Quellcode:
private
FA:boolean;
FcheckA: TCheckBox;
FcheckB: TCheckBox;
procedure SetA(const Value: boolean);
function GetA: boolean;
procedure setcheckA(const Value: TCheckBox);
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
published
{ published declarations }
property checkA: TCheckBox read FcheckA write setcheckA;
property checkB: tcheckbox read FcheckB write FcheckB;
constructor create(AOWNER:tcomponent);override;
end;
procedure TTestpanel.SetA(const Value: boolean);
begin
FA:=value;
checkA.Checked:=value;
end;
function TTestpanel.GetA: boolean;
begin
a:=FA;
end;
Jetzt wird die Eigenschaft aus dem Objektinspektor auch in's Programm übernommen - aber nur, wenn sowohl setA als auch getA genutzt werden (geht auch ohne setcheckA). Geht das nur so? - Finde ich umständlich.
Wo steckt mein Wissensdefizit?
MfG
Uwe