Delphi使用AnimateWindow创建最大化的MDI子项

时间:2013-04-23 13:24:44

标签: delphi mdi

我有一个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() ...它只显示最大化而没有效果:( ..

伙计们,请给我一点帮助! 感谢。

1 个答案:

答案 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;

而且......是的!它工作得很好,没有图像闪烁等等! ;)非常感谢!