Delphi-PRAXiS

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/)
-   -   Labels ohne transparenten Hintergrund (https://www.delphipraxis.net/194105-labels-ohne-transparenten-hintergrund.html)

Rainer Wolff 17. Okt 2017 15:14

Labels ohne transparenten Hintergrund
 
Hallo,

ich habe mal wieder ein seltsames Problem. In einer leicht verschachtelten Oberfläche(Main-Form mit Pagecontrol, darauf ein Tabsheet, in das ein Formular eingehängt ist) sitzen Labels mit gelber Schrift auf teal-Hintergrund (ok, über die Optik kann man streiten).

Im Designer sieht alles gut aus, bei Programmstart meistens auch. Aber es kommt immer wieder vor, daß die Labels plötzlich einen transparenten Hintergrund haben, und gelbe Schrift auf grauem Hintergrund ist einfach schlecht zu lesen.

Ich kann das Verhalten aber leider nicht reproduzieren.

Mit den Labels mache ich nix dynamisch, die sind statisch auf das Formular gepappt.

Kennt jemand dieses Phänomen?

himitsu 17. Okt 2017 15:20

AW: Labels ohne transparenten Hintergrund
 
Ich kenn das jetzt zwar nicht so,

Aber du kannst ja die Transparenz abschalten und die Hintergrundfarbe (Color, bzw. via ParentColor) im Label setzen.
Bei ParentColor, in Verbindung mit Styles hatte ich aber schon das Problem, dass die falsche Farbe ausgelesen wird, also nicht die vom aktuellen Style. :wall:

Rainer Wolff 17. Okt 2017 15:51

AW: Labels ohne transparenten Hintergrund
 
Zitat:

Zitat von himitsu (Beitrag 1383547)
Ich kenn das jetzt zwar nicht so,

Aber du kannst ja die Transparenz abschalten und die Hintergrundfarbe (Color, bzw. via ParentColor) im Label setzen.
Bei ParentColor, in Verbindung mit Styles hatte ich aber schon das Problem, dass die falsche Farbe ausgelesen wird, also nicht die vom aktuellen Style. :wall:

Genau so mache ich das ja, also label.transparent=false, label.color=clTeal, parentcolor=false (im Object Inspector, nicht per Code).

Aber im Moment schaue ich per Teamviewer auf den Bildschirm meines Kunden, Label transparent, Label bei mir in der Anwendung clTeal. Beide laufen unter Windows 10.

Gestern andere Anwendung beim Kunden, ich komm an den Bildschirm, Labels transparent. Ich starte versuchsweise eine App, in der ich aus einem Label ein RZLabel gemacht habe, alles ist schön clTeal. Ich starte die Originalanwendung wieder, auch wieder alles clTeal????

himitsu 17. Okt 2017 19:44

AW: Labels ohne transparenten Hintergrund
 
Das "echte" Windows-TextAnzeigeControl (STATIC) ist TStaticText.

TLabel, TPaintBox, TShape, TImage, usw. sind keine eigenständigen Windows-Controls.
Sie zeichnen sich auf den Canvas ihres Parent-Controls, nachdem sie sich dort reingehackt haben. :angle:

Transparent=False bedeutet da eigentlich, dass das TLabel in seinem Bereich alles übermalt.

Rainer Wolff 17. Okt 2017 20:12

AW: Labels ohne transparenten Hintergrund
 
Zitat:

Zitat von himitsu (Beitrag 1383560)

Transparent=False bedeutet da eigentlich, dass das TLabel in seinem Bereich alles übermalt.

Warum macht es das dann nicht??? grummel

Hab vorhin nochmal den Teamviewer offen gehabt: Als ich um 17:30 das Programm aktualisiert und gestartet habe, war der Labelhintergrund grün, eine Stunde später nochmal eingewählt, der Hintergrund ist weg. Auaaaaaaaaaaaaaaaaaaaa!!!!

Harry Stahl 17. Okt 2017 21:53

AW: Labels ohne transparenten Hintergrund
 
Wie verwendest Du die Doublebuffered Eigenschaft? Z.B. in der Form, welche Du zur Laufzeit in das Tabsheet einfügst? Ändert sich das Verhalten, ween Du das Gegenteil der aktuell verwendeten Einstellung dafür vornimmst?

himitsu 18. Okt 2017 09:38

AW: Labels ohne transparenten Hintergrund
 
TLabel hackt sich beim Parent rein,
TeamViewer hackt sich überall rein,
Windows weiß eh oftmals nicht, was es will,
vergiß nicht, dass Delphi da auch noch drin rumpfuscht
und dann wundert sich jemand, wenn etwas mal nicht richtig läuft.

Viele nutzen die Labels "anders" ... könnte auch gut sein, dass es ein "unbekannter" Bug im Delphi/VCL ist.


Via RDP, TeamViewer usw. verhalten sich so manche Komponenten bissl "komisch".
Sogar bei DevExpress gibt es im RDP manchmal komisch regelämßige Verfärbungen.

Rainer Wolff 19. Okt 2017 14:18

AW: Labels ohne transparenten Hintergrund
 
Zitat:

Zitat von himitsu (Beitrag 1383584)
TLabel hackt sich beim Parent rein,
TeamViewer hackt sich überall rein,
Windows weiß eh oftmals nicht, was es will,
vergiß nicht, dass Delphi da auch noch drin rumpfuscht
und dann wundert sich jemand, wenn etwas mal nicht richtig läuft.

Viele nutzen die Labels "anders" ... könnte auch gut sein, dass es ein "unbekannter" Bug im Delphi/VCL ist.


Via RDP, TeamViewer usw. verhalten sich so manche Komponenten bissl "komisch".
Sogar bei DevExpress gibt es im RDP manchmal komisch regelämßige Verfärbungen.

Das passiert aber nicht nur bei Fernwartung, sondern auch direkt am Bildschirm.

Den Tip mit der Doublebuffered-Eigenschaft habe ich jetzt auch erfolglos getestet. Ausserdem habe ich noch ein paar TLabels durch TRzLabels ersetzt. Gestern ein paar mal kontrolliert, alles ok.

Heute wähle ich mich wieder ein: Die TLabels haben noch ihre gelbe Schrift auf transparentem Hintergrund, die TRzLabels haben jetzt schwarze Schrift auf transparentem Hintergrund. Suuuuuuuuper.

Programm neu gestartet: alles wieder gut. :wall:

HolgerX 19. Okt 2017 15:17

AW: Labels ohne transparenten Hintergrund
 
Hmm..

Könnte es sein, das der TeamViewer eine dynamische Farbenreduktion durchführt, wenn er meint, dass die Leitung nicht schnell genug ist?

Eventuell werden deshalb einige Farben falsch dargestellt, weil diese in den Reduzierten Farbraum nicht reinpassen. Durch die Farbveränderung kann dann auch die Transparentfarbe wegfallen...

(Nur so eine Idee ;) )

Uwe Raabe 19. Okt 2017 15:31

AW: Labels ohne transparenten Hintergrund
 
Zitat:

Zitat von Rainer Wolff (Beitrag 1383685)
Ausserdem habe ich noch ein paar TLabels durch TRzLabels ersetzt. Gestern ein paar mal kontrolliert, alles ok.

Heute wähle ich mich wieder ein: Die TLabels haben noch ihre gelbe Schrift auf transparentem Hintergrund, die TRzLabels haben jetzt schwarze Schrift auf transparentem Hintergrund. Suuuuuuuuper.

Programm neu gestartet: alles wieder gut. :wall:

Ich vermute mal, du kannst das nicht in einem simplen Projekt forcieren?

Irgendwie kommt mir das so vor, als würde da jemand am Canvas herumfummeln und den alten Zustand nicht wieder herstellen. Oder der Standardschuldige in solchen Fällen: Grafikkartentreiber?


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