Zitat von
Sidorion:
Ich nehm mal schwer an, das liegt an der Zuweisung:
Besser ist wohl:
FFont.Assign(Value)
Cool. Das Problem wäre nun geklärt, nur tritt jetzt ein neues auf!!!
Jetzt gibts keine Fehlermeldung mehr, alles funktioniert so weit.
Führt man das Programm aber nun aus, Wird einfach die standardschrift übernommen,..
??? halloo...
Hast du da auch gleich so n prima Vorschlag parat? Wäre toll...
Gruss
MeineFastFunktionierendeTestKomponente:
Delphi-Quellcode:
unit EChecker;
interface
uses
SysUtils, Classes, Controls, Graphics;
type
TEChecker =
class(TCustomControl)
private
{ Private-Deklarationen }
FFont: TFont;
protected
{ Protected-Deklarationen }
procedure Paint;
override;
procedure SetFFont(
const Value: TFont);
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
published
{ Published-Deklarationen }
property Font
read FFont
write SetFFont;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
enemyleft', [TEChecker]);
end;
constructor TEChecker.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FFont:=TFont.Create;
end;
destructor TEChecker.Destroy;
begin
FFont.Free;
inherited Destroy;
end;
procedure TEChecker.Paint;
begin
Canvas.Rectangle(0,0,width,height);
Canvas.Font := FFont;
Canvas.TextOut((width - Canvas.TextWidth(
Name))
div 2,(height - Canvas.TextHeight(
Name))
div 2,
name);
exit;
end;
procedure TEChecker.SetFFont(
const Value: TFont);
begin
FFont.Assign(Value);
RePaint;
end;
end.
// Auch Canvas.Font.Assign(Self.FFont); oder solche sachen gehen net. Hab ich schon ausprobiert.