AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFont überschreiben?

Ein Thema von Pseudemys Nelsoni · begonnen am 21. Jun 2004 · letzter Beitrag vom 22. Jun 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

TFont überschreiben?

  Alt 21. Jun 2004, 17:26
moin,

ich schreibe gerade eine komponente (immernoch ), 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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: TFont überschreiben?

  Alt 21. Jun 2004, 19:08
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;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: TFont überschreiben?

  Alt 22. Jun 2004, 15:10
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TFont überschreiben?

  Alt 22. Jun 2004, 22:11
Zitat von Pseudemys Nelsoni:
was bewirkt Assign? Und wieso wird hier gerade TPersistent verwendet?
Schau mal in der OH unter TFont.Assign nach.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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