0

在 OnFormShow 事件中,我需要(对于一组特定的条件)不显示表单。

像“如果计数器 > 15 不显示表格”之类的东西。

我当然可以在表单创建上重构和移动很多东西,但这是很多工作,因为这是一个常见的表单,涉及的更改太多。

现在我在 OnFormShow 结束时关闭了表单,但无论如何我看到表单出现了几毫秒。

不幸的是,告诉我不要显示表单的条件是在 OnFormShow 内部决定的。有没有避免表格显示的技巧?

4

3 回答 3

9

重构您的代码,使其在您准备好之前不会显示。避免调用 Show,或者如果您尚未这样做,请将 Visible 设置为 False。

我怀疑当您到达 OnShow 时为时已晚,但即使这样做也表明设计不佳。将代码从 OnShow 移出到不同的方法中确实应该不会很麻烦。

于 2011-08-22T12:48:12.887 回答
6

重构+1,但同时,试试这个:

AlphaBlend := 真;

AlphaBlendValue := 0;

这应该使表单不可见,并且似乎可以在我的 OnShow 测试应用程序 (D2010/XP) 中使用。我猜你需要添加代码来关闭表单,可能是一个计时器?

于 2011-08-22T13:25:36.930 回答
4

一个非常糟糕的解决方案是

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;
于 2011-08-22T14:02:11.147 回答