我用两种形式创建了一个应用程序。第一个是主要形式,第二个是隐藏。 我在Form1上放了一个按钮,然后我把ShowModal作为第二个表单。在Win7上,表单显示动画。然后我关闭出现的表单(Form2),然后再次单击该按钮。 Form2在没有动画的情况下出现。我每次都想要动画。我该怎么办?
答案 0 :(得分:3)
我现在唯一能想到的就是每次想要以模态方式显示时手动创建表单。为此,请转到项目选项并确保不会自动创建表单。然后做
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(self) do
try
ShowModal;
finally
Free;
end;
end;
在我看来,大多数情况下,模态形式实际上应该是手动创建的。
答案 1 :(得分:1)
好吧,你可以选择不担心它!或者,一个非常快速的黑客将是每次关闭时释放表单,因为动画似乎只在第一次显示表单时运行。
编辑:另一种方法是在表单关闭时调用DestroyHandle。我现在在猜,但我想Windows会在窗口的某处记录一个标志,表明动画已经显示出来。设置此标志后,动画永远不会再次显示。
答案 2 :(得分:0)
作为一种替代方式,可以通过发送表单风格已更改的通知来欺骗窗口,这将使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;
注意:代码具有类助手功能,旧功能可能无法使用此功能/关键字。