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/)
-   -   Vcl styles change @ run time (https://www.delphipraxis.net/179514-vcl-styles-change-%40-run-time.html)

bernhard_LA 12. Mär 2014 09:10

Vcl styles change @ run time
 
ich habe auf der Seite http://www.delphifeeds.com/go/f/1128...hiFeeds.com%29 schöne Beispiele gefunden die VCL Styles zur Laufzeit eines Programmes zu ändern.

In einer TestApp ( leeres Formular) geht auch alles bestens. Nur im meiner richtigen App bekomme ich leider "Zentnerwiese AV's" weil eine Änderungen des VCL Styles auch automatische versucht alles Forms in meiner Anwendung zu schliessen und via Mainform.FormCreate die ganze Anwendung und alle "SubForms" neu lädt. Diese Verfahren kann so nicht funktionieren da der Zustand der Daten nicht mit abgespeichert und wieder hergestellt wird. Ich sehe auch keinen Weg in meiner App einen Programmteil zu schreiben procedure OnSytelChange_save_mydata() und anschliessend procedure AfterStyleChange_reload_mydata(...)

Was macht Ihr ?

himitsu 12. Mär 2014 10:21

AW: Vcl styles change @ run time
 
Zitat:

Zitat von bernhard_LA (Beitrag 1251645)
Was macht Ihr ?

Ich verwende keine Styles und hab derartige Probleme erst garnicht. :roll:

Nja, entweder du baust dir was zum Laden/Wiederherstellen,

oder du änderst halt nicht zur Laufzeit die Styles

oder du verwendest Stylekomponenten, welche den Style ohne Neuerstellen tauschen können.

Der schöne Günther 12. Mär 2014 10:28

AW: Vcl styles change @ run time
 
Ich habe den Blogbeitrag jetzt nicht gelesen, aber ich dachte Styles zur Laufzeit ändern geht? Das Problem ist zwar, dass sich das Fenster-Handle der MainForm (oder war es Application? :gruebel:) ändert, aber sonst...

himitsu 12. Mär 2014 10:45

AW: Vcl styles change @ run time
 
Zumindestens in der VCL wird ein CM_RECREATEWND abgesehndet, worauf hin erstmal das Fensterhandle und alle Handle der darauf befindlichen WinControls gelöscht werden.
Darauf hin, werden diese WinControls aus den gespeicherten Daten in den Delphi-Klassen neu aufgebaut.

Alles was nicht gespeichert wurde und sich nur im WinControl befand, also nicht als Kopie in der Delphi-Komponente lag, ist dann weg.

Das Meiste sollte aber schon als Kopie vorhanden sein (Texte von Memos/Edits, aber z.B. nicht die Position und Form des Cursors oder der ScrollBar)

Bernhard Geyer 12. Mär 2014 12:56

AW: Vcl styles change @ run time
 
Im Prinzip geht es, jedoch muss die Anwendung auch darauf vorbereitet werden das es überall auch wirklich geht.
Ich würde bei einem Theme-Wechsel die Anwendung neu start (Meldung: "Durch ein ändern des Themes muss die Anwendung neu gestartet werden") und gut ist. (Fast) Niemand wird ein Programm kaufen das als Aleinstellungsmerkmal zu anderen Programmen hat das man das Aussehen während des Betriebs wechseln kann. (Fast) allen wird es reichen wenn das nach einem neustart passt.


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