Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Mavarik 18. Jan 2012 14:29

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

Zitat von irmdaen (Beitrag 1146477)
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 ...

OK Dann sag doch einfach, dass Du es nicht verstanden hast...

Delphi-Quellcode:
procedure TForm42.FormCreate(Sender: TObject);
var
  i : integer;
begin
  For i:= 0 to Self.ComponentCount-1 do
    begin
      if self.Components[i] is TLabel then
        begin
          with TLabel(self.Components[i]) do
            begin
              Font.Color := clBlue;
              // USW...
            end;
        end;
    end;
end;
Mavarik

DeddyH 18. Jan 2012 14:32

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Was hast Du eigentlich gegen Komponenten? Wenn er/sie nur ein oder zwei solcher Labels haben möchte, dann bietet sich eine eigene Komponente doch geradezu an, vor allem, wenn man so etwas in mehreren Projekten braucht (Wiederverwendbarkeit).

Mavarik 18. Jan 2012 14:36

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

Zitat von DeddyH (Beitrag 1146491)
Was hast Du eigentlich gegen Komponenten? Wenn er/sie nur ein oder zwei solcher Labels haben möchte, dann bietet sich eine eigene Komponente doch geradezu an, vor allem, wenn man so etwas in mehreren Projekten braucht (Wiederverwendbarkeit).

Nach lieber ne Vererbung von TForm... Als noch ne Komponente...

Besonders für die, die keine Komponenten installieren können/wollen...

Mavarik

DeddyH 18. Jan 2012 14:38

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Ob das jetzt der bessere Weg ist möchte mal bezweifeln, gerade dann, wenn nur einige wenige Labels die "Link"-Funktionalität haben sollen. Ich kann mir doch nicht für jede denkbare Konstellation eine TForm-Ableitung machen.

Mavarik 18. Jan 2012 14:42

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

Zitat von DeddyH (Beitrag 1146496)
Ob das jetzt der bessere Weg ist möchte mal bezweifeln, gerade dann, wenn nur einige wenige Labels die "Link"-Funktionalität haben sollen. Ich kann mir doch nicht für jede denkbare Konstellation eine TForm-Ableitung machen.

Doch... :stupid:

Ich glaube ich habe in keine Programm auch nur ein einziges TForm...

Das sind alles immer TMyForm's

Mavarik

DeddyH 18. Jan 2012 14:44

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Wenn man immer eine ähnliche Art von Programmen (gerade hinsichtlich der GUI) schreibt, dann mag das auch angehen. Ob man das aber jetzt für andere Anwender verallgemeinern kann...

irmdaen 18. Jan 2012 14:47

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

Zitat von DeddyH (Beitrag 1146481)
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]

Herzlichen Dank!! Ich fasse es nicht, aber das ist genau was ich wollte :-D

himitsu 18. Jan 2012 14:47

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
Welche Delphi-Version?
Delphi-Referenz durchsuchenTLinkLabel

Im OnPaint ist es vollkommen grauenhaft untergebracht.
Hab ich hier auf Arbeit mit zu kämpfen, weil irgendwann mal irgendwer dachte dort etwas immer wieder neu überschrteiben zu müssen.
Wenn man dann doch mal was anderes braucht, kann man es vergessen.

Vorschlag:
Delphi-Referenz durchsuchenTComponent.Load überschreiben und dort den Style ändern. (vorher wird dabei noch automatisch der ParentFont geladen)
Dazu dann noch die Font-Eigenschaft und ParentFont per "stored False" aus der DFM ausschließen.

Mavarik 18. Jan 2012 14:49

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

Zitat von himitsu (Beitrag 1146502)
Im OnPaint ist es vollkommen grauenhaft untergebracht.

[OT]Danke[/OT]

:stupid:

DeddyH 18. Jan 2012 14:54

AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
 
IIRC wird Loaded aber nur aufgerufen, wenn die Komponente zur Entwurfszeit angelegt wurde. Macht man das dynamisch zur Laufzeit, isses wieder Essig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz