![]() |
Auswahl von Standardstil zur Laufzeit
Zur Zeit spiele ich ein wenig mit den 'Styles' (VCL) herum. Dazu möchte ich den 'Standard'-Style zur Laufzeit ändern. Das funktioniert auch (anscheinend) fehlerlos:
Delphi-Quellcode:
'StandardStyleName' wird dann in der Config-Datei der Anwendung gespeichert und beim Start derselben wieder eingelesen. Dazu hatte ich in der DPR hinter 'Application.Initialize' folgende Zeile eingefügt:
uses
Vcl.Themes, Vcl.Styles, type StyleArray = TArray<string>; var StandardStyleName: string; AvailableStyles: StyleArray; begin AvailableStyles:= TStyleManager.StyleNames; for i := 0 to length(AvailableStyles) - 1 do combobox1.Items.Add(AvailableStyles[i]); [...] StandardStyleName := Combobox1.text; // ausgewählter Style TStyleManager.TrySetStyle(StandardStyleName); // Style als Standardstyle übernehmen end
Delphi-Quellcode:
TStyleManager.TrySetStyle(config.StandardStyleName)
Das funktionierte, wie gesagt einwandfrei; Nun möchte ich aber die Styles auch zur Entwurfszeit sehen können. Normalerweise wird ja in den neueren Delphi-Versionen der mit Projekt/Optionen/Anwendung/Erscheinungsbild/Standardstil gewählte 'Standardstil' auch im Formular-Designer verwendet. Wenn ich aber die DPR modifiziert habe (s.o.), wird in der DPR die Zeile 'TStyleManager.TrySetStyle('StandardStil')', die normalerweise automatisch hinter 'Application.Initialize' eingefügt wird, als erste Zeile noch vor 'program myprog' geschrieben und damit die DPR ruiniert, ein, wie ich meine, höchst seltsames Verhalten. Im Formulardesigner ist dann immer der Default-Stil (Windows) zu sehen. Eine Fehlermeldung erscheint dabei nicht. Die kommt dann natürlich beim ersten Versuch, das Projekt zu kompilieren. Ich habe das zunächst gelöst, indem ich das Setzten des Standardstiles (aus der Config-Datei der Anwendung) von der DPR ins FormCreate verlegt habe. Dann funktioniert das automatische Einfügen in die DPR beim 'Speichern' des Standardstiles einwandfrei. Das hat im Prinzip das gewünschte Ergebnis, aber mich stört, dass nun beim Start der Anwendung zweimal kurz hintereinander ein 'Standardstil' geladen und zugewiesen wird. Das hat, so glaube ich wenigstens zu sehen, ein zusätzliches unschönes Flackern zur Folge. Nun meine Frage: läßt sich das automatische Einfügen der Zeile in die DPR irgendwie unterbinden? Ich hoffe ich konnte das Problem einigermaßen verständlich machen. Gruß LP |
AW: Auswahl von Standardstil zur Laufzeit
Die Form hat ein StyleName-Property
und prinzipiell lässt sich via der OpenToolsAPI auch die geladene DPR bearbeiten. |
AW: Auswahl von Standardstil zur Laufzeit
Du kannst deine Zeile in der DPR einfach unter die automatisch von der IDE verwaltete schreiben. Dann sollte kein Flackern mehr zu sehen sein.
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True; TStyleManager.TrySetStyle('Aqua Light Slate'); TStyleManager.TrySetStyle(config.StandardStyleName); |
AW: Auswahl von Standardstil zur Laufzeit
Zitat:
Danke für den Tip! Gruß LP |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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