在 OnFormShow 事件中,我需要(对于一组特定的条件)不显示表单。
像“如果计数器 > 15 不显示表格”之类的东西。
我当然可以在表单创建上重构和移动很多东西,但这是很多工作,因为这是一个常见的表单,涉及的更改太多。
现在我在 OnFormShow 结束时关闭了表单,但无论如何我看到表单出现了几毫秒。
不幸的是,告诉我不要显示表单的条件是在 OnFormShow 内部决定的。有没有避免表格显示的技巧?
重构您的代码,使其在您准备好之前不会显示。避免调用 Show,或者如果您尚未这样做,请将 Visible 设置为 False。
我怀疑当您到达 OnShow 时为时已晚,但即使这样做也表明设计不佳。将代码从 OnShow 移出到不同的方法中确实应该不会很麻烦。
重构+1,但同时,试试这个:
AlphaBlend := 真;
AlphaBlendValue := 0;
这应该使表单不可见,并且似乎可以在我的 OnShow 测试应用程序 (D2010/XP) 中使用。我猜你需要添加代码来关闭表单,可能是一个计时器?
一个非常糟糕的解决方案是
procedure TForm1.FormShow(Sender: TObject);
begin
inc(n);
if n > 15 then
begin
Left := Screen.DesktopWidth + 32;
Top := Screen.DesktopHeight + 32;
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
end;