Delphi隐藏表单:Form.Hide与Form.Visible:= False有区别吗?

Dai*_*tsu 2 forms delphi hide visible

我正在查看两个代码副本,其中一个是myForm.Hide,另一个是myForm.Visible:= False.我不记得为什么我改变了这个,如果一个是bug修复或者是否有任何差异.

Dav*_*nan 13

没有区别Hide.VCL代码是:

procedure TCustomForm.Hide;
begin
  Visible := False;
end;
Run Code Online (Sandbox Code Playgroud)

Show有点不同:

procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;
Run Code Online (Sandbox Code Playgroud)


MDV*_*000 5

取决于您的 Delphi 代码有多旧以及它可以追溯到多远。Form.Hide 一次 (Win95/2000) 会隐藏表单及其任务栏图标 - 另一个不会。当然,有一些补丁等可以解决 Delphi 的问题,某些视频卡/调色板需要您考虑如何隐藏表单。(伙计,我正在显示我的年龄)。我见过将表单 Left 设置为一个很大的负数的代码,只是为了将表单隐藏在屏幕之外,导致硬件问题(Delphi 1-3 对硬件非常敏感)

此外,在 Delphi 3/4 左右,在 MDI 应用程序中使用最小化而不是隐藏存在内存泄漏(因此我们使用 Pagecontrol 与 MDI 表单上的表单对接)。因此,如果您正在查看非常旧的代码,那么这些事情很重要。如果您在 Delphi 6 或更高版本上进行编译,那么实际上没有区别。

  • 我觉得你的第一段有点难以置信。我不记得有这样的事情。如果 TCustomForm.Hide 与 Visible := False 不同,我会感到震惊。另一方面,也许我的大脑已经抹去了痛苦的记忆,只留下快乐的记忆! (3认同)
  • 我也用过那些版本,我只是不记得有多少痛苦! (2认同)