Ich hoffe ich bin im richtigen Unterforum. Wenn nicht, bitte verschieben.
Ich experimentiere momentan ein wenig mit
VCL Styles.
Ich möchte sie während das Programm läuft, wechseln können.
Ich habe eine ListBox auf meinem Formular und lade dort die Dateien im Style Ordner rein.
Klappt problemlos. Beim klick auf eine Stildatei, möchte ich das der Skin geladen und gesetzt wird.
Hier mein Quellcode dazu:
Delphi-Quellcode:
procedure TForm1.StyleBoxClick(Sender: TObject);
var
stylename: string;
begin
stylename := LeftStr(StyleBox.Items[StyleBox.ItemIndex], Length(StyleBox.Items[StyleBox.ItemIndex])- 4);
ShowMessage(StyleName);
if TStyleManager.IsValidStyle('C:\Users\Public\Documents\Embarcadero\Studio\21.0\Styles\'+StyleName+'.vsf')
then begin
TStyleManager.LoadFromFile('C:\Users\Public\Documents\Embarcadero\Studio\21.0\Styles\'+StyleName+'.vsf');
ShowMessage('Ist ok');
TStyleManager.SetStyle(StyleName);
end;
end;
Das funktioniert. Teilweise.
Es funktioniert wenn die Styles einen kurzen Namen haben. "Auric", "AllPorts" oder sowas.
Wird geladen und gesetzt, also das Design entsprechend geändert.
Allerdings nicht wenn der Name des Styles (bzw. der Syle Datei) länger ist. "AquaGraphite", "Windows10BlackPerl" oder so. Da kommt die Fehlermeldung das der Stil nicht gefunden wurde. Was nicht sein kann, dann wäre er nicht in der ListBox.
Lasse ich den Stil von Delphi unter Projekt->Optionen->Erscheinungsbild ändern, funktioniert es. Der Skin wird also nicht kaputt sein, schätze ich.
Das alles verwirrt mich sehr...