Ver Mensaje Individual
  #4  
Antiguo 28-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por CarmaZone
cuando abro mi form hijo lo he puesto ke salga maximizado para ke asi ocupe todo el espacio ke keda pero al crearse el formulario hijo aparece la ventana como en el diseño en delhpi y al 1/4 de segundo se maximiza, es decir ke se ve como se automaximiza la ventana sola. Me gustaria saber si es asi correcto el funcionamiento.
Ese comportamiento se debe al efecto de animación de las ventanas. Para evitarlo puedes usar el siguiente procedimiento:

Código Delphi [-]
(*
  Enable = false inhabilita la animación
  Enable = true habilita la animación
*)
procedure EnableAnimation(Enable: Boolean);
var
  Info: TAnimationInfo;

begin
  Info.cbSize := SizeOf(TAnimationInfo);
  LongBool(Info.iMinAnimate) := Enable;
  SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;

Antes de crear el formulario inhabilitas la animación y puedes restaurarla luego de creado:

Código Delphi [-]
EnableAnimation(false);
TVentanaHija.Create(Self);
EnableAnimation(true);

Nota sin embargo, que el mismo efecto aparecerá cada vez que maximices (o restaures) la ventana hija. Para evitarlo puedes hacer los mismo pero en el manejador del mensaje WM_SYSCOMMAND del formulario hijo:

Código Delphi [-]
interface

type
  TVentanaHija = class(TForm)
  private
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
  end;

implementation

procedure TVentanaHija.WMSysCommand(var Msg: TWMSysCommand);
begin
  case Msg.CmdType and $FFF0 of
    SC_ZOOM, SC_RESTORE:
    begin
      EnableAnimation(false);
      inherited;
      EnableAnimation(true);
    end;

    else
      inherited;
  end;
end;

end.

Claro que podrías inhabilitar la animación al principio de la aplicación sin restaurarla con lo cual lo anterior sería innecesario. Pero ten en cuenta que la animación de ventanas es un efecto global del sistema de manera que si la inhabilitas en tu aplicación la inhabilitas en todo el sistema.

// Saludos
Responder Con Cita