Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Label färbt sich nicht trotz anderer eingestellte Farbe (https://www.delphipraxis.net/180244-label-faerbt-sich-nicht-trotz-anderer-eingestellte-farbe.html)

Luki206 4. Mai 2014 14:11

Label färbt sich nicht trotz anderer eingestellte Farbe
 
Hi, ich habe ein Problem mit den Labels. Ich will diese einfärben bzw. beim Punkt Font die Farbe ändern. Klappt auch (wäre ja auch blöd wenn nicht :D) nur wenn ich jetzt das Programm ausführe, bleiben die Labels schwarz und ich weiß nicht warum. Ich muss dazu sagen das die Labels über einen Image liegen aber ich habe sie auch einmal weggezogen und es hat nicht geklappt.
Kennt jemand diesen Fehler? :gruebel:

Danke
Luki :)

Popov 4. Mai 2014 14:18

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Evtl. ParentFont oder ParentColor? Bin mir nicht sicher, einfach mal gucken.

Sir Rufo 4. Mai 2014 14:59

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Benutzt du die Styles?

Dann kannst du das mit dem Färben vergessen

Popov 4. Mai 2014 15:29

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Ich hab das in der Praxis zwar selbst noch nie genutzt, somit weiß ich nicht ob das in allen Einzelheiten funktioniert, aber TLabel besitzt auch eine Canvas, und auf der kann man schreiben was mal will:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Canvas.Brush.Style := bsSolid;
  Label1.Canvas.Brush.Color := clWhite;
  Label1.Canvas.FillRect(Label1.Canvas.ClipRect);
  Label1.Canvas.Pen.Color := clRed;
  Label1.Canvas.TextOut(0, 0, 'Hallo');
end;
Ob das bei dir klappt oder gar mit Styles, weiß ich nicht, aber einfach mal im Hinterkopf behalten.

Bernhard Geyer 4. Mai 2014 15:42

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Zitat:

Zitat von Popov (Beitrag 1257893)
Ich hab das in der Praxis zwar selbst noch nie genutzt, somit weiß ich nicht ob das in allen Einzelheiten funktioniert, aber TLabel besitzt auch eine Canvas, und auf der kann man schreiben was mal will:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Canvas.Brush.Style := bsSolid;
  Label1.Canvas.Brush.Color := clWhite;
  Label1.Canvas.FillRect(Label1.Canvas.ClipRect);
  Label1.Canvas.Pen.Color := clRed;
  Label1.Canvas.TextOut(0, 0, 'Hallo');
end;
Ob das bei dir klappt oder gar mit Styles, weiß ich nicht, aber einfach mal im Hinterkopf behalten.

So eine Implementierung gehört in die OnDraw/Paint-Methode des Labels. So wird es einmal gezeichnet und beim nächsten neuzeichnen ist das selbst gezeichnete weg.

Luki206 4. Mai 2014 16:01

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Ja ich benutze Styles, aber gibt es nicht noch eine andere Methode das Label mit Style zu färben? Oder muss ich das in dem Style machen?

himitsu 4. Mai 2014 16:11

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Kannst du den Style für das/die Labels nicht einfach deaktivieren?

Zitat:

ParentFont oder ParentColor
Die beiden werden eigentlich automatisch deaktiviert, sobald man dem Font/Color etwas zuweist.

Luki206 4. Mai 2014 16:17

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Sind beide deaktiviert :gruebel:

Sir Rufo 4. Mai 2014 16:29

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Wenn du die Styles benutzt, dann kannst du an Farbe alles einstellen - es interessiert nur nicht, denn der Style hat da Vorrang.

Erklärung und Lösung gibt es hier
http://theroadtodelphi.wordpress.com...tyles-enabled/

Volker Z. 4. Mai 2014 21:11

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Hallo,

Zitat:

Wenn du die Styles benutzt, dann kannst du an Farbe alles einstellen - es interessiert nur nicht, denn der Style hat da Vorrang.
Das ist wohl wahr. Seit Delphi XE3 gibt es aber die Eigenschaft StyleElements (seFont, seClient und seBorder sind per Default True, deshalb hat auch der Style Vorrang). Wenn man damit ein bisschen spielt, dann kann man Styles nutzen und trotzdem z. B. die Schriftfarbe vorgeben (seFont dann auf False setzen).

Siehe auch: Verwenden von TControl.StyleElements in VCL-Anwendungen

Gruß

Popov 4. Mai 2014 21:27

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Wobei, ich sehe ich hab oben einen kleinen Fehler gemacht. Die Farbe kommt von Font.Color, nicht von Pen. Auch muss man nicht alles aus meinem ersten Beispiel nutzen, zwei Zeilen reichen:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  Label1.Canvas.Font.Color := clRed;
  Label1.Canvas.TextOut(0, 0, Label1.Caption);
end;
Und den Text aus Caption nehmen und wie Bernd G. sagte, in Paint setzten.

himitsu 4. Mai 2014 21:45

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Wenn sich aber nicht die (ganze) Form neu zeichnent, bringt es dennoch nichts.

Und wenn das Label z.B. in einem Panel, oder Dergleichen, liegt, dann braucht man nicht jedes mal die ganze Form neu zu zeichnen.
Grade via RDP und Co. erlebe ich ständig soeinen Mist, wenn Unmassen unnötiger Zeichenoperationen alles lahmlegen.

Popov 4. Mai 2014 23:11

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Nenne mich Lügner, aber so wie ich das bei einigen Tests in der Vergangenheit festgestellt habe, ist Windows in der Hinsicht sehr optimiert. Es wird nichts neu gezeichnet was nicht neu gezeichnet werden muss. Wird also ein Teil des Fenster überdeckt und wieder sichtbar gemacht, wird auch nur dieses kleine Teil des Fenster neu gezeichnet.

Das mag hier im Beispiel anders sein, denn eine Anweisung ist eine Anweisung. Letztendlich ist das nur eine Möglichkeit.

himitsu 5. Mai 2014 01:22

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Genau.

Das Label, bzw. seine übergeordnete Komponente, wird neu gezeichnet, übermalt somit deinen Text,
aber wenn dabei nicht die Form gezeichnet wird, weil jemand denkt das sei nicht nötig, dann wird dein Form.OnPaint nicht ausgeführt. :zwinker:

F4n4t1k 16. Okt 2014 10:53

AW: Label färbt sich nicht trotz anderer eingestellte Farbe
 
Eure ansätze sind alle gut die Lösung aber liegt in der Labeleigenschaft Transparent wen diese auf True steht könnt ihr machen was ihr wollt bei False funktioniert die Eigenschaft Color ein wandfrei



gruß F4n4t1k


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 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