Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
127 Beiträge
 
Delphi 11 Alexandria
 
#1

Auswahl von Standardstil zur Laufzeit

  Alt 26. Jun 2024, 14:36
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

Geändert von Maekkelrajter (26. Jun 2024 um 14:48 Uhr)
  Mit Zitat antworten Zitat