TFPCustomFontClass = class of TFPCustomFont; davon neue Fontklasse ableiten?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
multiplatform-coder
Beiträge: 63
Registriert: Do 20. Apr 2023, 18:25

TFPCustomFontClass = class of TFPCustomFont; davon neue Fontklasse ableiten?

Beitrag von multiplatform-coder »

Ich habe eine TTrueTypeFont Klasse abgeleitet von TFPCustomFont, ich erhalte die Compiler Fehlermeldung:

fclimgtest.lpr(71,26) Error: Incompatible types: got "TTrueTypeFont" expected "TFPCustomFontClass"

Nun habe ich meine Fontvarable vom Typ TCustomFontClass definiert in der Hoffnung dass dies typverträglich ist tum Naxhfolgetyp, wie das bei sonstigen Klassentypen der Fall ist, aber offensichtlich nicht bei class of...

Wie leite ich die Klasse richtig ab? Meine KLassendefinition sieht so aus:

Code: Alles auswählen

  TTrueTypeFont = class(TFPCustomDrawFont)
  private
    thefont: ttfFont;
    function GetHeight: Integer;
  public
    procedure DoDrawText (x,y:integer; text:string); override;
    procedure DoGetTextSize (text:string; var w,h:integer); override;
    function DoGetTextHeight (text:string) : integer; override;
    function DoGetTextWidth (text:string) : integer; override;

    constructor Create(FontfileName: String; ASize: Integer);
    procedure DrawText(x,y: Integer; Text: String);
    procedure PrintText(x,y: Integer; Text: String);
    destructor Destroy; override;
    procedure GetTextSize (text:string; var w,h:integer);
    function GetTextHeight (text:string) : integer;
    function GetTextWidth (text:string) : integer;
    property Height: Integer read GetHeight;
  end;
  
Überschreiben tu ich die in der Vorgängerklasse definierten Methoden.

Wie mache ich diese Klassenableitung richtig? Ich beziehe mich auf die Font Klasse in der Unit FPCanvas aus dem FCLImage Paket.

multiplatform-coder
Beiträge: 63
Registriert: Do 20. Apr 2023, 18:25

Re: TFPCustomFontClass = class of TFPCustomFont; davon neue Fontklasse ableiten?

Beitrag von multiplatform-coder »

Habe den Feler selber gefunden, Nich TFPCustomDrawFont sondern TFPCustomFont ist der richtige Vorfahre. Brett vorm Kopp gehabt. Sorry!

Und die Methoden die ich überschreiben will, gibt es in TFPCustomFont noch gar nicht, also gibt es da auch nichts zu überscreiben. Das Complieren funktioniert jetzt nach Fehlerkorrektur,

Antworten