我创建了一个具有两个表单的应用程序。第一个是主表单,第二个是隐藏表单。我在Form1上放置了一个按钮,并将其设置为ShowModal第二个表单。在Win7上,表单以动画形式出现。然后,我关闭出现的表单(Form2)并再次单击该按钮。将显示Form2,但不显示动画。我每次都想要动画。我该怎么办?
发布于 2010-12-17 20:55:50
我现在唯一能想到的就是每次你想要以模态方式显示它时,手动创建表单。为此,请转到项目选项,并确保窗体不是自动创建的。那就这么做
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(self) do
try
ShowModal;
finally
Free;
end;
end;在我看来,大多数情况下,模态表单实际上应该手动创建。
发布于 2010-12-17 20:54:11
好吧,你可以选择不去担心它!或者,一种非常快速的方法是在窗体每次关闭时释放它,因为动画似乎只在窗体第一次显示时运行。
编辑:另一种方法是每当窗体关闭时在窗体上调用DestroyHandle。我现在正在猜测,但我想象Windows在窗口中的某个地方记录了一个标志,指示动画已经显示。一旦设置了该标志,动画就再也不会显示了。
发布于 2014-11-28 03:03:58
作为一种替代方法,可以通过发送窗体样式已更改的通知来欺骗windows,这将使windows为当前窗体的句柄重置“秘密标志”。因此,在显示已经创建的表单时,将再次应用酷炫的显示效果动画。然而,我不能说这样做会造成什么负面影响。
uses
Winapi.Windows, Vcl.Controls;
type
TFormHelper = class helper for TForm
public
procedure Show;
end;
implementation
procedure TFormHelper.Show;
begin
SendMessage(Handle,CM_CUSTOMSTYLECHANGED,0,0);
inherited Show;
end;注释:带有类帮助器的代码,此功能/关键字可能在较早的IDE中不可用。
https://stackoverflow.com/questions/4470584
复制相似问题