Einzelnen Beitrag anzeigen

RBiniasch

Registriert seit: 23. Mär 2006
4 Beiträge
 
#1

Komponente speichert Font-Property nicht mehr

  Alt 6. Nov 2008, 11:47
Hallo,

ich habe von TPanel abgeleitete Komponente gebaut, welche auf eine Änderung des Fonts reagieren muss (der wer weiß wievielte erweiterte Button 8) ).
Dafür habe ich im Konstruktor den Eintrag

Font.OnChange := OnFontChanged;

stehen. In 'OnFontChanged' passieren dann die spannenden Dinge.

Das Problem ist nun, wenn diese Zeile im Konstruktor steht speichert Delphi (7 und 2009) Änderungen am Font nicht mehr in der dfm-Datei. Zur Entwurfszeit ist alles ok, die Komponente reagiert auf die Änderungen und das Leben ist schön. Starte ich das Programm sind alle Änderungen vergessen. Ebenso beim neu Laden des Projektes oder Kopieren des Buttons.
Kommentiere ich die Zuweisung von 'OnFontChanged' aus funktioniert der Spaß wieder.
Steckt die Zuweisung im 'Loaded' landen Änderungen am Font wieder in der dfm, aber die Komponente reagiert zur Entwurfszeit nicht mehr auf Änderungen.

Falls wer bis hierher gelesen hat und noch einen Blick auf den Konstruktor werfen möchte, hier kommt er :

Delphi-Quellcode:
constructor TMQButton.Create(tcOwner: TComponent);
begin
  inherited;

  Width := 90;
  Height := 22;

  InitBMPs;
  
  F_toGraphics := TtoGraphics.Create;

  F_toBorders := TtoDrawFrame.Create;

  F_strBtnText := EmptyStr;
  F_tcColorMain := SB_DEF_COLOR_STD_MAIN;
  F_tcColorShade := SB_DEF_COLOR_STD_SHADE;
  F_tcColorFrame := SB_DEF_COLOR_STD_FRAME;
  F_tcColorActiveMain := SB_DEF_COLOR_STD_SHADE;
  F_tcColorActiveShade := SB_DEF_COLOR_STD_MAIN;
  F_tcColorHotMain := SB_DEF_COLOR_HOT_MAIN;
  F_tcColorHotShade := SB_DEF_COLOR_HOT_SHADE;
  F_iGradientSteps := 100;
  F_iEllipseHeight := 0;
  F_iEllipseWidth := 0;
  F_setBtnStates := [bsBase];
  F_bDrawBorder := TRUE;
  F_bActive := FALSE;
  F_bShowHot := FALSE;
  F_bStayDown := FALSE;
  F_bDisableDblClick := TRUE;

  BevelOuter := bvNone;
  DoubleBuffered := TRUE;

  F_tneOnMouseEnter := nil;
  F_tneOnMouseLeave := nil;

  Font.OnChange := OnFontChanged; // Hier passierts ...

  CreateBMPs;
  ChangeBtnState;
end;
Danke fürs Lesen und falls wer eine Idee hat, immer her damit
Ralf Biniasch
  Mit Zitat antworten Zitat