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:
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
'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:
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