【发布时间】:2010-12-26 05:07:11
【问题描述】:
当从主窗体显示次要窗体,从第二个窗体显示第三个窗体然后关闭这两个窗体将导致主窗体失去焦点。
在 XP SP3 中使用 Delphi 2009
这是我重现问题的步骤:
- 创建新的 VCL 表单应用程序
- 将按钮拖到创建的表单上
- 在点击处理程序中创建一个新的 TForm1 并显示它
运行程序。单击按钮以显示第二个表单。单击第二个表单上的按钮以创建第三个表单。当关闭两个新窗体时,主窗体将失去焦点。
这是我在按钮单击事件处理程序中的代码:
// 使用 Self 不会改变结果 用 TForm1.Create(nil) 做 显示;有什么方法可以阻止我的主窗体失去焦点?
【问题讨论】:
-
你的问题到底是什么?为什么会发生这种情况?或者如何规避这个问题?
-
后者。 (我也不介意知道前者)
-
尝试将 nil 参数设置为 self。
-
在 Create 方法中使用 Self 不会改变结果
-
使用 Self 作为 Owner 至少可以避免内存泄漏……但这是另一个问题。
标签: delphi winapi delphi-2009 vcl