Hallo zusammen,
ich entwickle momentan eine Applikation, welche im Dauerbetrieb stabil laufen muss. Weiterhin sind ein helles und ein dunkles Design gefordert. Da es nach dem Umschalten des Styles immer wieder zu Fehler in der
VCL kommt habe ich mich für einen etwas unkonventionellen Weg entschieden. Nachdem der Benutzer das Design ändert (sollte eigentlich nicht oft vorkommen) starte ich die Applikation neu.
Dazu habe ich im Hauptformular folgenden Destructor geschrieben:
Delphi-Quellcode:
destructor TfrmMain.Destroy;
var
AppName, AppParam: string;
begin
inherited;
if SkinChangeRestart then
begin
AppName := ParamStr(0);
AppParam := SKIN_RESTART_PARAM;
ShellExecute(0, nil, PChar(AppName), PChar(AppParam), nil, SW_SHOW);
end;
end;
Bei der Konfiguration löse ich das ganze nach einer Sicherheitsabfrage wie folgt aus:
Delphi-Quellcode:
SkinChangeRestart := True;
Application.MainForm.Close;
Das funktioniert, aber ich bin mir nicht sicher, ob das der richtige Weg ist oder ob man das anders lösen sollte.
Ehe ein Hinweis auf "löse das
VCL Problem" kommt: Ich habe ja bereits einen häufig auftretenden Fehler gemeldet (RSP-38928). Ich werde bei Gelegenheit noch einen weiteren Melden der immer wieder auftritt. Mit dem Debuggen solcher Fehler bin ich überfordert bzw. dazu fehlt mir die Zeit. Das die Anwendung in Forms dynamisch erzeugte eingebettete forms und frames enthält macht das ganze nicht leichter. Aber ehe das nicht alles seitens
VCL stabil ist brauche ich eine Lösung. Die vorliegende Anwendung wird z.B. ab Oktober in Mexiko und später noch in Brasilien und den USA laufen. Da kann ich nicht mal eben hinfahren...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)