So, das hier scheint (zumindest unter Windows 10) zu funktionieren:
Delphi-Quellcode:
procedure TfrmMain.SetStyle(
const AStyleName:
string);
begin
LockWindowUpdate(
Handle);
BorderStyle:= bsNone;
TStyleManager.TrySetStyle(AStyleName, FALSE);
Application.ProcessMessages;
LockWindowUpdate(
Handle);
BorderStyle:= bsSizeable;
LockWindowUpdate(0);
end;
Zugegeben, es ist ziemlich freaky. Das doppelte LockWindowUpdate scheint notwendig zu sein, weil sich beim TrySetStyle das WindowHandle ändert. Es flickert zwar noch ein bisschen, aber die Animation ist weg und der Style-Wechsel geht wesentlich schneller. Die Probleme mit den Drittkomponenten scheinen im Moment auch beseitigt.
Für Verbesserungen bin ich aber gerne zu haben