AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Property TFont in neuer Kompo klappt nicht

Ein Thema von Nalincah · begonnen am 23. Dez 2003 · letzter Beitrag vom 23. Dez 2003
Antwort Antwort
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Property TFont in neuer Kompo klappt nicht

  Alt 23. Dez 2003, 13:36
Wie kann ich in ner neuen Kompo ne Eingenschaft vom Typ TFont hinzufügen. Im grunde das gleiche wie die Eigenschaft "Font" beim Button oder nem Label. Bei mir klappt das nicht.

Immer wenn ich im OI bei meiner Kompo die Font ändern will kommt das:

Zitat:
nil kann nicht zu TFont zugewiesen werden
Mein Sourcecode (Ausschnitte):

Delphi-Quellcode:
type TCSTyp = (tAdresse, tRechnung, tLieferung);
       TCSAdressLabel = class(TCSQRRichText)
       private
         FUeberschriftFont:TFont;
       public
         constructor Create(AOwner:TComponent);override;
         destructor Destroy;override;
       published
         property UeberschriftFont : TFont read FUeberschriftFont Write FUeberschriftFont;
       end;
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Property TFont in neuer Kompo klappt nicht

  Alt 23. Dez 2003, 13:44
Wenn Du das direkte Beschreiben einer Exemplarvariablen zulässt, ist die Referenz auf das zuvor erzeugte Exemplar verloren. Darüber hinaus ist nicht klar, wo das zugewisene Exemplar letztlich wann freigegeben wird:
Delphi-Quellcode:
myFont:= TFont.Create;
try
  AnObject.Font:= myFont;
  AnotherObject.Font:= myFont;
finally
  FreeAndNil(myFont);
end;
Verwende stattdessen eine transparente Zuweisung der Form
Delphi-Quellcode:
TMyClass = class
private
  FFont: TFont;
  procedure SetFont(const AValue: TFont);
public
  property Font: TFont
    read FFont
    write SetFont;
//...

procedure TMyClass.SetFont(const AValue: TFont);
begin
  FFont.Assign(AValue);
end;
wobei Du das Exemplar hinter FFont einmalig im Konstruktor erzeugst, bzw im Destruktor zerstörst.
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: Property TFont in neuer Kompo klappt nicht

  Alt 23. Dez 2003, 13:53
Zitat von choose:
wobei Du das Exemplar hinter FFont einmalig im Konstruktor erzeugst, bzw im Destruktor zerstörst.
Was meinst du damit?
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Property TFont in neuer Kompo klappt nicht

  Alt 23. Dez 2003, 14:07
Irgendwo muss FFont mit einem Objekt "belegt" werden. Das sollte, wie bei Objekten, die aus anderen Objekten zusammengesetzt (aggregiert) sind, innerhalb des Konstruktors geschehe. zB so:
Delphi-Quellcode:
constructor TMyClass.Create;
begin
  inherited;
  FFont:= TFont.Create;
  //.. some more initialization code
end;
Das Exemplar sollte dann spätestens im Destruktor wieder freigegeben werden
Delphi-Quellcode:
destructor TMyClass.Destroy;
begin
  FreeAndNil(FFont);
  inherited;
end;
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#5

Re: Property TFont in neuer Kompo klappt nicht

  Alt 23. Dez 2003, 14:17
AHHH. Vielen Dank. Ich wollt erst das AValue anstatt FFont im Constructor erstellen Klappte natürlich nicht
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:32 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