Einzelnen Beitrag anzeigen

RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#1

Collection das Font einer gekapselten Komponente speichern lassen

  Alt 8. Jul 2010, 16:04
Hallo!

ich habe folgendes CollectionItem, welches die Font eines gekapselten Controls im DFM speichert:
Delphi-Quellcode:
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;
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.

Wie ist das richtige Vorgehen?
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."

Geändert von mkinzler ( 8. Jul 2010 um 16:15 Uhr) Grund: von RSE: Rechtschreibfehler + Metadaten; Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat