AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Collection das Font einer gekapselten Komponente speichern lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Collection das Font einer gekapselten Komponente speichern lassen

Ein Thema von RSE · begonnen am 8. Jul 2010 · letzter Beitrag vom 8. Jul 2010
Antwort Antwort
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, 17: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 17:15 Uhr) Grund: von RSE: Rechtschreibfehler + Metadaten; Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Collection das Font einer gekapselten Komponente speichern lassen

  Alt 8. Jul 2010, 18:05
Das
  FControl.Font := AValue; // Bauchschmerzen
ruft ja TControl.SetFont auf, was wiederum FFont.Assign(Value) (und nicht FFont := Value ) aufruft. Also passiert deinen Zeigern auch nix.
Uli Gerhardt
  Mit Zitat antworten Zitat
RSE

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

AW: Collection das Font einer gekapselten Komponente speichern lassen

  Alt 8. Jul 2010, 19:54
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.
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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