我有一个MDI表单的应用程序,我一直在尝试用Animatewindow()
创建一个Child创建效果。
我的问题是,我的所有MDI表单都使用Windowstate=wsMaximized
,并且不知道如何创建表单而不显示默认的经典窗口调整大小和动画...
这就是我正在尝试的:
procedure FORMCREATOR(t_form:tformclass);
var form:tform;
begin
frmain.sPanel5.Hide;
frmain.LockClientWindowUpdate;
form:=t_form.Create(frmain);
//顺便说一句,如果我做“t_form.Create(application)”而不是“t_form.Create(frmain);”它给出了一个错误..并且使用“....(frmain)”我无法在此过程之外访问“form.button1.caption:='test'”之类的表单,访问冲突! ..帮助plox!
frmain.UnlockClientWindowUpdate;
AnimateWindow(form.Handle,500,AW_CENTER or AW_SLIDE or AW_VER_POSITIVE);
end;
所以,当我调用它时,它只是创建表单,就像没有Animatewindow()
...它只显示最大化而没有效果:( ..
伙计们,请给我一点帮助! 感谢。
答案 0 :(得分:0)
@bummi的想法..
我改为:
procedure tfrmain.FORMCREATOR(t_form:tformclass);
var form:tform;
nome_form:string;
begin
frmain.sPanel5.Hide;
frmain.lockClientWindowUpdate;
With t_form.Create(frmain) do
begin
visible := false;
Formstyle := fsNormal; //Now i'll make all my forms as fsnormal
Parent := self;
Width := frmain.sPanel5.width;
Height := frmain.sPanel5.height;
left:=frmain.sPanel5.left;
top:=frmain.sPanel5.Top;
//这个Spanel5是MDI孩子的假定客户区,这就是为什么我在程序的开始时隐藏它
frmain.UnlockClientWindowUpdate;
AnimateWindow(handle,1000, AW_CENTER or AW_SLIDE or AW_HOR_NEGATIVE );
frmain.lockClientWindowUpdate;
Parent := frmain;
FormStyle := fsMDIChild;
windowstate:=wsmaximized;
frmain.unlockClientWindowUpdate;
end;
end;
而且......是的!它工作得很好,没有图像闪烁等等! ;)非常感谢!