![]() |
Collection das Font einer gekapselten Komponente speichern lassen
Hallo!
ich habe folgendes CollectionItem, welches die Font eines gekapselten Controls im DFM speichert:
Delphi-Quellcode:
Anfangs hatte ich Font als readonly deklariert. Der Zeiger auf die Font-Instanz braucht ja nicht geschrieben zu werden. Nur TCollection scheint readonly-Eigenschaften nicht im DFM zu speichern. Wenn ich FControl.Font mit einem Zeiger auf eine neue Instanz überschreibe, geht der Zeiger auf die alte Instanz verloren und vielleicht passieren neben dem Speicherleck noch mehr und unschönere Dinge. Wenn ich die neue Value nur assigne, wird evtl. anschließend der Zeiger auf die neue Instanz weggeschmissen, im Glauben diesen ja gerade in TMyItem.Font gesichert zu haben. Ich habe keine Ahnung, wie das Streaming an dieser Stelle vorgeht.
TMyItem = class(TCollectionItem)
private FControl: TControl; protected function GetFont: TFont; procedure SetFont(AValue: TFont); // Bauchschmerzen published Font: TFont read Getfont write SetFont; // ohne Setter (SetFont) wird nichts im DFM gespeichert end; function TMyItem.GetFont: TFont; begin Result := FControl.Font; end; procedure TMyItem.SetFont(AValue: TFont); begin FControl.Font := AValue; // Bauchschmerzen // FControl.Font.Assign(AValue); // auch Bauchschmerzen end; Wie ist das richtige Vorgehen? |
AW: Collection das Font einer gekapselten Komponente speichern lassen
Das
Zitat:
Delphi-Quellcode:
auf, was wiederum
TControl.SetFont
Delphi-Quellcode:
(und nicht
FFont.Assign(Value)
Delphi-Quellcode:
) aufruft. Also passiert deinen Zeigern auch nix.
FFont := Value
|
AW: Collection das Font einer gekapselten Komponente speichern lassen
Hm, da hätt ich natürlich auch mal hinsehen können... Dann kann ich natürlich auch gleich Assign aufrufen, ohne Bauchschmerzen zu bekommen ;-)
Vielen Dank für den Hinweis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz