Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Property zu abgeleiteter Klasse hinzufügen (https://www.delphipraxis.net/144906-property-zu-abgeleiteter-klasse-hinzufuegen.html)

gkoeder 19. Dez 2009 12:20


Property zu abgeleiteter Klasse hinzufügen
 
Hallo!

Ich möchte eine von tCustomListView abgeleitete ListView erstellen. Bislang klappt auch alles sehr gut, nur stehe ich beim hinzufügen eines simplen Properties ziemlich auf dem Schlauch. Die Deklaration sieht folgendermaßen aus:

Delphi-Quellcode:
type
  tArchiveListView = class(tCustomListView)
  private
    FUseSystemFont: Boolean;
    ...
  public
    constructor Create(AOwner: TComponent); override;
  published
    ...
    property UseSystemFont: Boolean read FUseSystemFont write FUseSystemFont;
  end;

constructor tArchiveListView.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  If fUseSystemFont then
    ApplyExplorerFont(Font);
end;
UseSystemFont ist im ObjektInspektor sichtbar und kann auch gesetzt werden. Irritierenderweise ist der Wert von fUsesystemFont zur Laufzeit immer False, unabhängig davon, ob ich diesen vorab im ObjektInspektor auf True gesetzt habe.

Wird die neu erstellte Komponente auf einem Form verwendet, so wird der Wert korrekt in den Objektdaten des Forms gespeichert:

Delphi-Quellcode:
 
  ...
  object tArchiveListView1: tArchiveListView
    Left = 20
    Top = 20
    Width = 453
    Height = 477
    TabOrder = 4
    ViewStyle = vsReport
    UseSystemFont = True
  end
Leider ist auch hier bei jedem öffnen des Projekts die Eigenschaft wieder auf False gesetzt.

Wie gesagt, ich stehe gerade ziemlich auf dem Schlauch - hat jemand eine Idee, wo der Fehler liegt bzw. wie ich diese eigentlich relativ einfache Eigenschaft korrekt implementiere?

Danke!

Gruß,
Gerald

jfheins 19. Dez 2009 12:39

Re: Property zu abgeleiteter Klasse hinzufügen
 
Logisch - die property kann ja erst mit einem Wert belegt werden, nachdem der Konstruktor aufgerufen wurde ;)

gkoeder 19. Dez 2009 13:25

Re: Property zu abgeleiteter Klasse hinzufügen
 
Zitat:

Zitat von jfheins
Logisch - die property kann ja erst mit einem Wert belegt werden, nachdem der Konstruktor aufgerufen wurde ;)

Hmm ... das klingt logisch. Wie bzw. wo sollte dann die korrekte Implementierung erfolgen?

Dankeschön!

Hawkeye219 19. Dez 2009 13:52

Re: Property zu abgeleiteter Klasse hinzufügen
 
Hallo Gerald,

nach dem Laden einer Komponente aus der .dfm-Datei ruft die VCL die Methode Delphi-Referenz durchsuchenLoaded für diese Komponente auf. In diesem Beitrag findest du ein Beispiel für das Überschreiben der Methode.

Gruß Hawkeye

gkoeder 19. Dez 2009 17:43

Re: Property zu abgeleiteter Klasse hinzufügen
 
Zitat:

Zitat von Hawkeye219
Hallo Gerald,

nach dem Laden einer Komponente aus der .dfm-Datei ruft die VCL die Methode Delphi-Referenz durchsuchenLoaded für diese Komponente auf. In diesem Beitrag findest du ein Beispiel für das Überschreiben der Methode.

Gruß Hawkeye

Super! Danke, das hat das Problem gelöst!

Gruß,
Gerald


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz