so hier den ganzen komponente quellcode
ist nur so ne beispiel, deshalb kein besondere sagenhafte Name vergeben.
Delphi-Quellcode:
unit PageControl1;
interface
uses
SysUtils, Classes, Controls, ComCtrls;
type
TAb =
class(TPersistent)
private
m_owndraw: Boolean;
public
constructor Create;
published
property DrawOwn: Boolean
read m_owndraw
write m_owndraw;
end;
TTest =
class(TPageControl)
private
m_tab: TAb;
procedure SetTab( ab: TAb );
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
published
property DrawOwn: TAb
read m_tab
write SetTab;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Samples', [TTest]);
end;
{ TAb }
constructor TAb.Create;
begin
Self.m_owndraw := True;
end;
{ TTest }
constructor TTest.Create(AOwner: TComponent);
begin
inherited;
Self.m_tab := TAb.Create;
end;
destructor TTest.Destroy;
begin
Self.m_tab.Free;
inherited;
end;
procedure TTest.SetTab(ab: TAb);
begin
Self.m_tab := ab;
Self.OwnerDraw := ab.DrawOwn;
end;
end.
Du hältst dich nicht an die
Namenskonventionen von Borland und verwirrst dadurch die Mitleser und auch dich selbst.
Daher sollte der Code so aussehen:
Delphi-Quellcode:
private
FDrawOwn : Boolean;
procedure SetDrawOwn(const Value:Boolean);
public
property DrawOwn: Boolean read FDrawOwn write SetDrawOwn;
So erkennt man leichter was zusammengehört (weil "DrawOwn" konsistent verwendet wird).
Wenn auf das Property DrawOwn niegends schreibend zugegriffen wird, dann optimiert der Kompiler die Procedure SetDrawOwn einfach weg.
Man erkennt es daran, dass die blauen Punkte nach dem Kompilieren fehlen.
ich komme von C++ da ist gewoehnlich membervariable mit einem m voranzustellen.
ich weiss nicht was F bei klassevariable bei delphi bedeutet, kann mir jemand bitte aufklaeren wofuer das steht?