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
[-]
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