TFont überschreiben?
moin,
ich schreibe gerade eine komponente (immernoch :mrgreen:), diese ist von TLabel abgeleitet. Ich möchte die Font property meines "eigenen labels" überschreiben, nur wie mache ich das? muss ich eine klasse schreiben die von tfont abgeleitet ist? wenn ja, wie spreche ich die felder von TMyFont aus TMyLabel aus an? |
Re: TFont überschreiben?
Hallo,
ich habe Dir mal den Source zusammengestellt (ungetestet). So soll es aber funktionieren
Delphi-Quellcode:
TMyFont = class(TFont)
private FMyFrontProp: Integer; procedure SetMyFrontProp(const Value: Integer); protected procedure Changed; override; public procedure Assign(Source : TPersistent); override; published // MyFrontProp wird im OI unter TLabel.MyFont angezeigt property MyFrontProp : Integer read FMyFrontProp write SetMyFrontProp; end; TMyLabel = class(TLabel) private FMyFont : TMyFont; procedure FontChange(Sender : TObject); procedure SetMyFont(const Value: TMyFont); public constructor Create(AOwner : TComponent); override; destructor Destroy; override; published property MyFont : TMyFont read FMyFont write SetMyFont; end; { TMyFont } procedure TMyFont.Assign(Source: TPersistent); begin If Source is TMyFont then FMyFrontProp:=TMyFont(Source).MyFrontProp; inherited Assign(Source); end; procedure TMyFont.Changed; begin // hier kannst Du noch etwas machen bevor OnChange feuert inherited Changed; end; procedure TMyFont.SetMyFrontProp(const Value: Integer); begin If FMyFrontProp<>Value then begin FMyFrontProp:=Value; Changed; end; end; { TMyLabel } constructor TMyLabel.Create(AOwner: TComponent); begin inherited Create(AOWner); FMyFont:=TMyFont.Create; FMyFont.OnChange:=FontChange; end; destructor TMyLabel.Destroy; begin FMyFont.Free; inherited Destroy; end; procedure TMyLabel.FontChange(Sender: TObject); begin // Wird aufgerufen wenn sich an FMyFont etwas geändert hat. // hier könnte z.B. Invalidate aufgerufen werden end; procedure TMyLabel.SetMyFont(const Value: TMyFont); begin FMyFont.Assign(Value); end; |
Re: TFont überschreiben?
danke das du extra das beispiel geschrieben hast :]
ich werds gleichmal testen, habe aber noch 2 fragen dazu... was bewirkt Assign? Und wieso wird hier gerade TPersistent verwendet? |
Re: TFont überschreiben?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz