Einzelnen Beitrag anzeigen

Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

Kompo ableiten: Font im OI ändern funzt nicht

  Alt 6. Jun 2006, 21:38
Hi,

ich habe mir ein TLabel abgeleitet.
Da ich nicht wusste, wie ich auf das Ändern von Font reagieren sollte (wenn die Schriftfarbe geändert wird, soll auch eine andere Eigenschaft im OI gleichzeitig geändert werden), habe ich mir die Eigenschaft Font neu angelegt.
Dazu habe ich auch im Forum was gefunden und mir den Code angepasst:
Delphi-Quellcode:
type
  TLinkLabel = class(TLabel)
  private
    dFont: TFont;
    procedure SetFont(Value: TFont);
    {...}
  published
    property Font: TFont read dFont write SetFont;
  {...}


constructor TLinkLabel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  dFont := TFont.Create;
  {...}
end;

destructor TLinkLabel.Destroy;
begin
  dFont.Free;
  inherited Destroy;
end;

procedure TLinkLabel.SetFont(Value: TFont);
begin
  dFont.Assign(Value);
  ParentFont := False;
  inherited Font := dFont; // <-- scheint nicht zu gehen (s. unten)
end;
Wenn ParentFont auf True ist, wird Font des Labels auch richtig vom der Form übernommen, allerdings ändern sich die Einträge unter Font im OI nicht.
Wenn ich die Schrift im FontDialog (im OI auf '...' neben Font) ändere, geht alles problemlos.
Wenn ich aber auf + klicke und dort Font ändere, ändert sich die Schrift des Labels nicht.
Der Fehler scheint also an der oben markierten Stelle zu liegen.

Eine bessere Lösung wäre natürlich, wenn ich einfach auf etwas wie "OnFontChange" oder so reagieren könnte...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat