Ich bin da nun einen halben Schritt weiter. Aus dem doppelten Fade-Effekt ist ein einfacher Fade-Effekt geworden. Das Fade-Out vor dem Stylewechsel ist mit folgender Variante weg:
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
procedure CreateParams(
var Params: TCreateParams);
override;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
Vcl.Themes;
procedure TForm1.Button1Click(Sender: TObject);
var
Style: Longint;
begin
Style := GetWindowLong(
Handle, GWL_STYLE);
SetWindowLong(
Handle, GWL_STYLE, Style
and (
not WS_BORDER));
TStyleManager.TrySetStyle('
Carbon');
end;
procedure TForm1.CreateParams(
var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style
and (
not WS_BORDER) ;
end;
end.
Allerdings scheint das CreateParams überhaupt nichts zu bewirken, das wäre nämlich das zweite Fade. Bzw. würde es funktionieren, bräuchte ich gar kein SetWindowLong vor dem Stylewechsel mehr machen.