gpt4 book ai didi

德尔福错误: "Cannot focus a disabled or invisible window"

转载 作者:行者123 更新时间:2023-12-03 15:29:07 42 4
gpt4 key购买 nike

我在运行编译的程序时遇到错误。我已采取一切我能想到的预防措施来防止错误,例如在隐藏或聚焦表单之前启用表单。该应用程序显示一个 DimmerForm(灰色淡入淡出覆盖层),然后在覆盖层顶部显示一个 NewFileFormNewFileForm 完成其工作并确定要创建的文件,并在 MainForm 上的页面控件中创建一个新的 tabsheet 并显示新创建的选项卡。到目前为止,所有这些都有效(我可以在 NewFileForm 关闭和发生任何错误之前中断,并查看选项卡已成功创建并显示)。然后 NewFileForm 关闭,再次正常工作。

当任何东西尝试将焦点设置回 MainForm 时,就会发生错误。隐藏DimmerForm,或者点击MainForm,或者通过代码将焦点设置到MainForm都会导致出现错误消息。将代码放在 {try, except, end} 中也不会阻止错误消息。我已经搜索了代码中可能由 MainForm 聚焦触发的所有其他方法,并且在错误发生之前没有输入任何方法(因此不会导致错误)。

我在应用程序的先前版本中编写了几乎完全相同的代码,然后决定从头开始重组它。该应用程序的先前版本在表单聚焦方面运行顺利。

这是打开NewFileForm的代码:

procedure TMainForm.NewFilesToolButtonClick(Sender: TObject);
begin

ShowDimmer;
NewFileForm.ShowModal;
HideDimmer;

end;

这里是显示调光器形式的代码:

procedure ShowDimmer;
begin

// Enable to prevent errors
DimmerForm.Enabled := true;

// Hide dimmer form and show mainform
DimmerForm.Show;

end;

以下是隐藏调光器表单的代码:

procedure HideDimmer;
begin

// Enable to prevent errors
DimmerForm.Enabled := true;
MainForm.Enabled := true;

// Hide dimmer form and show mainform
DimmerForm.Hide;
MainForm.SetFocus;

end;

最佳答案

通常,您将焦点调用到尚未创建的内容(在您正在创建的表单上),请尝试将一些 onCreate 代码移至 onShow。如果没有更多细节,很难判断发生了什么,但试试这个。

关于德尔福错误: "Cannot focus a disabled or invisible window",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237290/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com