Hallo again,
ich habe ein merkwürdiges Verhalten der expandierenden bzw. implodierenden Fenster beobachtet: s. dazu folgenden Code:
Delphi-Quellcode:
Procedure Explode(Form: TForm; MilliSek: Integer);
// Expandierendes Fenster beim Öffnen:
// In Ereignis: OnShow einbauen
Begin
Winapi.Windows.AnimateWindow(Form.Handle, MilliSek, AW_CENTER);
End;
{Explode}
{-----------}
Procedure Implode(Form: TForm; MilliSek: Integer);
// Implodierendes Fenster beim Schließen:
// In Ereignis: OnClose einbauen
Begin
Winapi.Windows.AnimateWindow(Form.Handle, MilliSek, AW_HIDE
OR AW_CENTER);
End;
{Implode}
{-----------}
Procedure Zentrieren(Form: TForm);
// Zentriert das Formular am Bildschirm
// In Ereignis: OnShow einbauen
VAR
Left, Top: Integer;
Begin
// Fenster zentrieren:
Left:= (Screen.Width - Form.Width)
div 2;
Top := (Screen.Height - Form.Height)
div 2;
Form.Left:= Left;
Form.Top := Top;
Form.Position:= poDesktopCenter;
End;
{Zentrieren}
{--------------}
procedure TForm1.OnShow_Animate(Sender: TObject);
begin
// Fenster am Bildschirm zentrieren:
Zentrieren(Form1);
// Expandierendes Fenster beim Öffnen:
Explode(Form1, 750);
// Fokus setzen:
Form1.SetFocus;
end;
procedure TForm1.OnClose_Animate(Sender: TObject;
var Action: TCloseAction);
begin
// Implodierendes Fenster beim Schließen:
Implode(Form1, 350);
end;
1):
Unter Windows 7 expandiert das Fenster aus dem Nichts zu seiner endgültigen Größe.
Die Implosion verläuft analog, nur umgekehrt.
--> Verhalten: OK
2):
Unter Windows 10 wird zunächst ein durchsichtiges Fenster mit sichtbarem Rahmen & Kopfzeile erzeugt. Das Fenster expandiert aus dem Nichts in diesen durchsichtigen Rahmen bis zur endgültigen Größe hinein.
Die Implosion verläuft analog, nur rückwärts: Das Fenster stürzt in einen durchsichtigen Rahmen hinein.
--> Verhalten: UNSCHÖN!
Ist es normal, oder habe ich etwas falsch gemacht?
Oder liegt es an der Windows-10-
API?
Gibt es eine Abhilfe?
Danke im Voraus!
Gruß, Andreas