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/)
-   -   Delphi TPanel.ParentBackground setzt sich - irgendwann - zurück (?) (https://www.delphipraxis.net/187805-tpanel-parentbackground-setzt-sich-irgendwann-zurueck.html)

Daniel 5. Jan 2016 13:11

TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Moin,

jaja, seltsamer Titel. Ist aber auch ein seltsames Problem. ;-)
Ich habe hier eine Handvoll Panels, die z.B. rot sind. Weist man einem Panel eine spezielle Farbe zu, wird dessen Eigenschaft "ParentBackground" automatisch auf "false" gesetzt. Schön und gut.
Aber genau diese Eigenschaft hat sich bei manchen - nicht bei allen - Panels zurückgesetzt und steht wieder auf "true". Jetzt hat das Ding in seiner Eigenschaft "Color" noch den zuvor zugewiesenen Farbwert, zeigt ihn aber nicht an, weil eben "ParentBackground" plötzlich auf "true" steht. Das Einzige, was ich aktuell mit Sicherheit weiß, ist, dass diese Änderung nicht per Hand erfolgte.
Ich habe ja so ein wenig die Farb-Schemata von Windows unter Verdacht und dass sich das Panel zur Designzeit ändert, wenn das Windows-Farbschema auf "Basic" gesetzt oder zurückgesetzt wird. Unter Windows 8.1 kann ich das aber nur noch schwerlich testen.

Ist Euch das bekannt und weiß jemand, welche Umstände dazu führen können?

Sir Rufo 5. Jan 2016 13:38

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Liegt wohl hier dran
Delphi-Quellcode:
{ TCustomPanel }

constructor TCustomPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
    csSetCaption, csOpaque, csDoubleClicks, csReplicatable, csPannable, csGestures];
  { When themes are on in an application default to making
    TCustomPanel's paint with their ParentBackground }
  if StyleServices.Enabled then
    ControlStyle := ControlStyle + [csParentBackground] - [csOpaque];
  [...]

Daniel 5. Jan 2016 13:43

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Die Stelle habe ich mir auch angeguckt, das müsste dann doch aber grundsätzlich alle Panels betreffen oder nicht?
:gruebel:
Es sind nicht alle Formulare betroffen und ich kann das Verhalten jetzt hier so auch nicht nachstellen.

Helmi 5. Jan 2016 13:56

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
liegen denn wirklich alle Panels auf dem gleichen Parent?

Daniel 5. Jan 2016 14:03

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Nein, die Panels liegen auf unterschiedlichen Parents.
Ich habe schon überlegt, ob es Wechselwirkungen zwischen verschiedenen Panels geben könnte, aber auch dabei konnte ich das Verhalten nicht nachstellen.
Ich weiß ja nicht einmal, wann genau sich die Eigenschaft zurückgestellt hat.

Helmi 5. Jan 2016 14:08

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
sind das verschiedene Objekte die als Parents dienen?
Vielleicht ist das Problem durch die Parents verursacht

stahli 5. Jan 2016 14:10

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Ist ein PageControl im Spiel?
Vielleicht unterbricht das dann den Nachrichtenfluss.

Daniel 5. Jan 2016 14:30

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
In manchen Fällen ist der Parent das Form selbst, in anderen Fällen andere Panels.
Ein PageControl ist weit und breit nicht verbaut.

hm. Spannend.
Ist natürlich blöd, wenn im Meldungsfenster "Kernreaktor überhitzt - abschalten?" weiße Schrift auf weißem und nicht rotem Grund erscheint. :stupid:

TiGü 5. Jan 2016 16:01

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Passiert das nur beim Kunden auf einen Rechner oder betrifft das mehrere Rechner und du kannst es bei dir am Entwicklungsrechner nachstellen?

bra 5. Jan 2016 16:06

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Tritt das auf, wenn du den Rechner mit Strg+Alt+Entf sperrst?

Ich habe diese Phänomen bei mir mit Windows 8.1 nämlich auch. Ich habe dort als Windowsfarben einen dunkleren Hintergrund mithilfe von alten Windows 7-Registry-Einträgen eingestellt. Funktioniert wunderbar, solange man nicht den Rechner sperrt. Ab dann sind die Farben wieder auf den Windows-Standard zurückgesetzt - bis zum nächsten manuellen setzen oder einem Neustart. Witzigerweise werden die Farben aber in einigen Fenstern noch angezeigt, bis man die irgendwann mal in der Größe ändert ö.ä.

DeddyH 5. Jan 2016 16:14

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Könnte man statt die Panels selbst einzufärben nicht einfach Shapes mit alClient drauf setzen und die dann anmalen? Die sind ja vom Theming nicht betroffen, Windows hält sich da also raus.

Daniel 5. Jan 2016 16:28

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Die Änderung muss zur Designzeit passiert sein, da die Werte auch so in den DFM-Dateien stehen.
Es ist also schon in der IDE falsch und dann später konsequenterweise auch bei der (einzigen) Installation der Anwendung.

Ich habe meinen Rechner eben mehrmals ge- und entsperrt, während eines der Formulare in der IDE geöffnet war - kein Effekt.


Vorläufig bin ich etwas ratlos. Ich lasse mir jetzt eine Liste aller Panels erstellen, bei denen (a) eine Farbe gesetzt ist und (b) ParentBackground auf "false" steht. Damit kann ich die Lage wenigstens vorläufig wieder glatt ziehen. Auf Shapes würde ich nur ungern zurückgreifen - denn es hat ja an sich jahrelang funktioniert.

haentschman 5. Jan 2016 17:07

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Hallöle...:P
Zitat:

Vorläufig bin ich etwas ratlos. Ich lasse mir jetzt eine Liste aller Panels erstellen, bei denen (a) eine Farbe gesetzt ist und (b) ParentBackground auf "false" steht
Der CnPack hat eine Funktion wo man projektübergreifend bestimmte Controls (nach Klassenname z.B.) suchen und bestimmte Eigenschaften setzen kann. Dürfte am schnellsten gehen. :thumb:
Nachtrag: Du hast ja 2 Bedingungen. Beim CnPack geht leider nur eine. :?

Daniel 5. Jan 2016 17:23

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
Mein Tool kann beides. :-) Hat mir in den vergangenen Jahren schon viele wertvolle Dienste bei Kundenprojekten geleistet.

himitsu 5. Jan 2016 17:50

AW: TPanel.ParentBackground setzt sich - irgendwann - zurück (?)
 
RDP: Bei mir hat Delphi (ab 2006) schon immer die Macke, dass es manchmal knallt, beim Recreate der darin angezeigten Componenten, wenn ich mich neu connecte.
Ist vermutlich ein ähnliches Problem, wie mit dem Sperren.

Wer weiß ob sich da auch mal das eine oder andere Property verabschiedet hatte,
aber direkt aufgefallen ist mir noch nichts.


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