-1

我有一个带有 MDI 表单的应用程序,并且我一直在尝试使用Animatewindow().

我的问题是,我所有的 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()......它只显示为最大化而没有效果:( ..

小伙伴们请帮我一把!谢谢。

4

1 回答 1

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;

是的 !它工作得很好,没有图像闪烁之类的东西!;) 非常感谢!

于 2013-04-24T10:05:42.840 回答