Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Fensteranimation deaktivieren bei TStyleManager.TrySetStyle(sStyleName)

  Alt 12. Apr 2018, 14:05
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.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat