Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form ohne Animation maximieren (https://www.delphipraxis.net/53968-form-ohne-animation-maximieren.html)

Marphy 12. Okt 2005 16:10

Re: Form ohne Animation maximieren
 
Tut mir Leid, dass ich so aufdringlich bin, aber ich komme allein einfach nicht auf die Lösung. :(

Bitte um Hilfe!

Danke, Marco

SirThornberry 12. Okt 2005 16:47

Re: Form ohne Animation maximieren
 
hast du es schon mit SystemParametersInfo in Zusammenhang mit SPI_SETANIMATION probiert?
In der VCL wird es teilweise genau so gemacht, und zwar wird erst abgerufen ob die Animation aktiviert ist, wenn dem so ist wird es deaktiviert, dann wird das Fenster angezeigt und danch wird der Wert zurück gesetzt (sind nur paar zeilen, aber vcl-funktionen zu posten fällt wohl in das copyright und so schwer ist es ja auch nicht)

Flocke 12. Okt 2005 18:13

Re: Form ohne Animation maximieren
 
SirThornberry hat Recht, in der VCL machen die wirklich so etwas (der Code ist jetzt nicht unbedingt Copyrightgefährdet, also poste ich ihn einfach mal):
Delphi-Quellcode:
function GetAnimation: Boolean;
var
  Info: TAnimationInfo;
begin
  Info.cbSize := SizeOf(TAnimationInfo);
  if SystemParametersInfo(SPI_GETANIMATION, SizeOf(Info), @Info, 0) then
    Result := Info.iMinAnimate <> 0 else
    Result := False;
end;

procedure SetAnimation(Value: Boolean);
var
  Info: TAnimationInfo;
begin
  Info.cbSize := SizeOf(TAnimationInfo);
  BOOL(Info.iMinAnimate) := Value;
  SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;

procedure CreateFormNoAnimate(Class: TComponentClass; var Reference);
var
  Animation: Boolean;
  Instance: TComponent;
begin
  Animation := GetAnimation;
  try
    if Animation then
      SetAnimation(False);

    Instance := TComponent(InstanceClass.NewInstance);
    TComponent(Reference) := Instance;
    try
      Instance.Create(Application);
    except
      TComponent(Reference) := nil;
      raise;
    end;
  finally
    if Animation then
      SetAnimation(True);
  end;
end;
... oder ohne Erzeugen halt so:

Delphi-Quellcode:
procedure WindowStateNoAnimate(Form: TCustomForm; State: TWindowState);
var
  Animation: Boolean;
begin
  Animation := GetAnimation;
  try
    if Animation then
      SetAnimation(False);

    Form.WindowState := State;
  finally
    if Animation then
      SetAnimation(True);
  end;
end;

Marphy 13. Okt 2005 13:02

Re: Form ohne Animation maximieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
warum nicht gleich so? :-D Danke Volker, dein Code funktioniert einwanfrei! Vor lauter Begeisterung habe ich gleich mein Demoprojekt umgeschrieben, sodass das MDI Child tatsächlich unanimiert angezeigt wird.

Danke auch dir, SirThornberry, und all den anderen Postern. :thumb:

Endlich ein Problem weniger...

Grüße und herzlichen Dank,
Marco


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz