Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben (https://www.delphipraxis.net/165832-komponente-benuetzt-parentfont-und-soll-font-style-und-font-color-ueberschreiben.html)

irmdaen 18. Jan 2012 11:57


Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Hallo, ich versuche eine von TCustomLabel abgeleitete Komponente zu erstellen, die als Linklabel dienen soll. Das neue Label soll alle Font-Eigenschaften seines Parent (z.B. der TForm, auf der das Label liegt) verwenden, bis auf Font.Style (unterstrichen) und Font.Color (blau).

Was ich versucht habe: Ich setze in der Komponente in der Create-Methode ParentFont := true, aber sobald ich zusätzlich Font.Style und Font.Color setze, wird Font.ParentFont automatisch wieder auf false gesetzt (erkennbar an der falschen Schriftart) :(

Und auf die Schriftart von Parent (der TForm) kann ich von der Komponente aus auch nicht zugreifen, da Parent.Font.Name keine public Eigenschaft ist :(

Das gewünschte Ergebnis erhalte ich nur, indem ich in der Komponente nur ParentFont auf true setze und die Font.Style und Font.Color erst nach Einbau der Komponente in meiner TForm überschreibe :gruebel:

Gibt es keine Möglichkeit, alles in die Komponente selbst zu packen, ohne nachträglich noch Eigenschaften verändern zu müssen :?:

p80286 18. Jan 2012 12:09

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Wenn Du nicht über .Create gehst, dann nicht.

Gruß
K-H

Mavarik 18. Jan 2012 12:13

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Viel einfacher!

Verlager das problem in das Form...

Itteriere über alle Komponenten auf dem Form und setzt die Font Eigenschaften...

So brauchst Du nix ableiten und keine eigene Componente erzeugen!

Mavarik

DeddyH 18. Jan 2012 12:21

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Oder die Paint-Methode überschreiben und dort Canvas.Font entsprechend formatieren.

shmia 18. Jan 2012 13:22

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von irmdaen (Beitrag 1146446)
ich versuche eine von TCustomLabel abgeleitete Komponente zu erstellen, die als Linklabel dienen soll

Gibt's doch schon.

irmdaen 18. Jan 2012 13:42

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Zitat:

Zitat von DeddyH (Beitrag 1146455)
Oder die Paint-Methode überschreiben und dort Canvas.Font entsprechend formatieren.

Das habe ich schon ausprobiert, funktioniert aber leider nicht: Ich will ja die Schriftart vom Parent, die hole ich mir in Create mit ParentFont := true. Aber die Canvas.Font.Color und Style in der überschriebenen Paint-Methode werden dann ignoriert!

Mavarik 18. Jan 2012 13:55

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Zitat:

Zitat von irmdaen (Beitrag 1146473)
Das habe ich schon ausprobiert, funktioniert aber leider nicht: Ich will ja die Schriftart vom Parent, die hole ich mir in Create mit ParentFont := true. Aber die Canvas.Font.Color und Style in der überschriebenen Paint-Methode werden dann ignoriert!

LOL Hast Du mein Posting gelesen?

irmdaen 18. Jan 2012 14:06

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Zitat:

Zitat von Mavarik (Beitrag 1146453)
Viel einfacher!

Verlager das problem in das Form...

Itteriere über alle Komponenten auf dem Form und setzt die Font Eigenschaften...

So brauchst Du nix ableiten und keine eigene Componente erzeugen!

Mavarik

Vielen Dank, aber in der Form selbst hatte ich es schon hingekriegt. Aber weil ich das noch öfters brauchen werde, hätte ich es halt gern verallgemeinert gehabt in einer Komponente, einfach sie ins Formular ziehen und fertig ...

irmdaen 18. Jan 2012 14:08

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Zitat:

Zitat von p80286 (Beitrag 1146449)
Wenn Du nicht über .Create gehst, dann nicht.

Gruß
K-H

Bitte wie meinst du das? Wenn ich in Create alle Einstellungen mache, passiert folgendes:
In dieser Reihenfolge
ParentFont := true;
Font.Color := clBlue;
Font.Style := [fsUnderline];
ist das Label blau und unterstrichen, hat aber nicht die Schriftart vom Parent.
In dieser Reihenfolge
Font.Color := clBlue;
Font.Style := [fsUnderline];
ParentFont := true;
hat das Label die Schriftart vom Parent, aber ist nicht blau und nicht unterstrichen. :-(

DeddyH 18. Jan 2012 14:14

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Entweder es hat dieselbe Schrift wie der Parent oder eben nicht. Wenn Du zuerst sagst "Ja, hat es" und dann nachträglich die Schrift änderst, ist es ja wieder eine andere als die des Parents. Von daher ist das Verhalten ja nur logisch und richtig.

[edit] Schnell zusammengeschustert und nicht sonderlich schön, tut aber:
Delphi-Quellcode:
type
  TTestLabel = class(StdCtrls.TLabel)
  protected
    procedure Paint; override;
  end;

...

procedure TTestLabel.Paint;
begin
  Canvas.Font.Assign(Font);
  Canvas.Font.Style := Canvas.Font.Style + [fsBold, fsUnderLine];
  Canvas.Brush.Style := bsClear;
  Canvas.Font.Color := clNavy;
  if AutoSize then
    Width := Canvas.TextWidth(Caption);
  Canvas.TextOut(0, 0, Caption);
end;
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.
Seite 1 von 3  1 23      

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