![]() |
Delphi-Version: 5
TStyleManager.TrySetStyle und Form.Show
Hallo,
scheinbar werden in DelphiXE beim Ändern eines Styles zur Laufzeit die Show-Events aller geöffneten Formulare aufgerufen. Kann man dies irgendwie global abstellen? Problem: Die Formulare enthalten Initialisierungscode, der eigentlich nur einmal ausgeführt werden darf. Vielen Dank |
AW: TStyleManager.TrySetStyle und Form.Show
OnShow ist nunmal eben kein Event, dass nur einmal ausgeührt wird.
Immer wieder, sobald Show bzw. Visible=True ausgeführt wird. Ich vermute aber mal, dass es Absichst ist, falls da im OnShow Code drin ist, der die Oberfläche Initialisiert (z.B. Komponenten ausrichten). |
AW: TStyleManager.TrySetStyle und Form.Show
Eigentlich ist die Sache ganz einfach: (private) Boolean-Variable in die Form oder das Programm, und wenn die False ist, den Kram im OnShow ausführen und dann diese Variable auf True setzen. Also sowas:
Delphi-Quellcode:
Grüße
if NOT InitDone then begin
DoSomeStuff; InitDone:= True; end; Dalai |
AW: TStyleManager.TrySetStyle und Form.Show
Danke, das ist schon klar, nur möchte ich jetzt nicht den Programmcode von 250++ Formularen ändern.
Zum Glück stammen fast alle Formulare von einer Ableitung ab, dann kann ich mich in die Methode DoShow reinhängen. Der Weg des Aufrufs geht nach dem CM_StyleChanged über - TCustomForm.CMShowingChanged(var Message: TMessage); - DoShow - FormShow Oder ich lass die Änderungen eines Styles einfach nicht zu, wenn irgendein relevantes Formular geöffnet ist. |
AW: TStyleManager.TrySetStyle und Form.Show
Hat jetzt nicht direkt mit TStyleManager zu tun, aber ich hatte schonmal bei größeren Projekten zwangsweise die App neu starten lassen, für so eine Einstellung.
Ich weiss, ist nur suboptimal, geht aber auch, und es sollte auch jeder Kunde Verständnis für haben. Schliesslich macht man das nur einmal normalerweise. Es hat sich darüber jedenfalls noch nie jemand beschwert, im Gegenteil, die Kunden waren froh das sowas überhaupt geht. Das würde Dir zumindest einen größeren Umbau ersparen, nach der 80/20 Regel, möglichst wenig Arbeit in unütze Dinge stecken. |
AW: TStyleManager.TrySetStyle und Form.Show
Vielen Dank
Das werde ich mal ins Auge fassen :) Zum Glück ist die Ursache jetzt bekannt. Immer wenn ich die Styles gesetzt hatte, waren die Einstellungen der Anwendung (und auch die Variable die den ausgewählten Style enthielt) wieder zurückgesetzt :(:-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
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