Font property lässt sich nicht bearbeiten

Rund um die LCL und andere Komponenten
Antworten
braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Font property lässt sich nicht bearbeiten

Beitrag von braunbär »

Hallo, ich habe eine eigene von TEdit abgeleitete Eingabe-Komponente, die unter anderem ihren eigenen Label verwaltet.
Jetzt wollte ich ihr eine im OI zu setzende Property Captionfont verpassen, mit der der Font des zur Edit-Komponente gehörenden Labels geändert werden kann.


Die entsprechende Deklaration schaut so aus:

Code: Alles auswählen

 
  TfdEdit = class(TEdit)
  private
   FLabel: TLabel;
   FCaptionFont: TFont;
   ....
    procedure SetCaptionProperties;
    procedure SetCaptionFont(value: TFont);
   ...
 
  published
  ...
    property CaptionFont: TFont read FCaptionFont write SetCaptionFont;
 
  end;
 
 


und der Setter für die Font:

Code: Alles auswählen

 
procedure TfdEdit.SetCaptionProperties;
begin
  ...
  if assigned(FCaptionFont) then FLabel.Font:=FCaptionfont;
  ...
end;
 
procedure TfdEdit.SetCaptionFont(value: TFont);
begin
  if value = nil then exit// habe ich probeweise hinzugefügt, hilft aber auch nichts
  FCaptionFont := value;
  SetCaptionProperties;
end;
 


Wenn ich nun im OI auf den Button zum Auswählen einer Font klicke, kommt die Fehlermeldung:

[Window Title]
Fehler

[Content]
Cannot assign a Nil to a TFont.

[Ok]

Die Meldung kommt, obwohl ich vor der Zuweisung auf nil abfrage und bei nil keine Zuweisung mache, das ist also etwas, was der OI macht, bevor ich an die Daten komme. Im übrigen kommt die Meldung schon, bevor ich den Font-Auswahldialog präsentiert bekomme, der erscheint, wenn ich beispielsweise die property Font des TEdit ändern will.

Hat jemand einen Tipp für mich?

und nebenbei prinzipiell: Wie kann ich generell das Verhalten meiner Komponente halbwegs komfortabel debuggen, wenn schon im Object Inspector ein derartiger Fehler auftritt. Als Notlösung Debug Meldungen auf eine Datei schreiben erscheint mir schon sehr umständlich, aber mir fällt sonst nicht viel dazu ein.
Dateianhänge
TFont.PNG

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Font property lässt sich nicht bearbeiten

Beitrag von braunbär »

Ok, jetzt bin ich doch noch selbst draufgekommen - CaptionFont muss mit einem gültigen Font initialisiert sein, wenn da nil drinnen steht, streikt der OI.
Ist wohl ein kleiner Schönheitsfehler des OI, aber es gibt schlimmeres.

Bleibt die Frage nach Tipps, wie man lästigere Design-Time-Probleme am Besten debuggen kann.

Antworten