gpt4 book ai didi

delphi - 在 Delphi 中同时打开两个 HTMLHelp 文件会导致两个帮助窗口挂起

转载 作者:行者123 更新时间:2023-12-03 15:24:33 25 4
gpt4 key购买 nike

在 Delphi 中,应用程序的主帮助文件是通过 TApplication.HelpFile 属性指定的。然后,对应用程序帮助系统的所有调用都使用此属性(与 CurrentHelpFile 结合使用)来确定帮助调用应路由到的帮助文件。

除了 TApplication.HelpFile 之外,每个表单还具有 TForm.HelpFile 属性,该属性可用于为源自该特定表单的帮助调用指定不同(单独)的帮助文件。

但是,如果应用程序的主帮助窗口已打开,并且进行帮助调用以显示辅助帮助文件中的帮助,则两个帮助窗口都会挂起。现在无法访问两个帮助窗口,也无法关闭两个帮助窗口。摆脱帮助窗口的唯一方法是关闭应用程序,这会导致两个帮助窗口也自动关闭。

示例:

Application.HelpFile := 'Main Help.chm'; //assign the main help file name
Application.HelpContext(0); //dispays the main help window
Form1.HelpFile := 'Secondary Help.chm'; //assign a different help file
Application.HelpContext(0); //should display a second help window

上面的最后一行代码打开辅助帮助窗口(但没有内容),然后两个帮助窗口都挂起。

我的问题是:

  1. 是否可以同时显示两个 HTMLHelp 窗口?如果可以,应遵循什么步骤?

  2. 如果没有,是否有办法判断应用程序的帮助窗口是否已打开,然后在显示不同的帮助窗口之前以编程方式关闭它?

(我在 Windows Vista 上使用 Delphi 2007 和 HTMLHelp 文件)

更新:2008-09-18

使用上面的代码同时打开两个帮助文件实际上可以按预期工作。问题似乎出在我使用的实际帮助文件上,而不是代码上。

我用不同的帮助文件尝试了相同的代码,效果很好。

奇怪的是,我使用的两个帮助文件各自工作得很好 - 只有当您尝试同时打开这两个文件时,它们才会挂起,并且只有当您从代码中打开它们时(在 Windows 资源管理器中我可以同时打开两者都没有问题)。

无论如何 - 问题肯定出在帮助文件而不是代码 - 所以原来的问题现在几乎无效。

更新2:2008-09-18

我最终找到了帮助窗口挂起的原因。我将在下面发布答案并接受它作为正确的答案以供将来引用。我还更改了问题标题。

哎呀...看来我无法接受自己的答案...

请对其投票,使其保持在顶部。

最佳答案

假设您有两个名为“帮助文件 1.chm”和“帮助文件 2.chm”的帮助文件,并且您正在从 Delphi 代码中打开这些帮助文件。

要打开帮助文件 1,可以使用以下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HelpFile := 'Help File 1.chm';
Application.HelpContext(0);
end;

要打开帮助文件 2,可以使用以下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HelpFile := 'Help File 2.chm';
Application.HelpContext(0);
end;

但是要同时打开两个文件,以下代码将导致两个帮助窗口挂起

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HelpFile := 'Help File 1.chm';
Application.HelpContext(0);

Application.HelpFile := 'Help File 2.chm';
Application.HelpContext(0);
end;

解决方案:

该问题是由于帮助文件名中存在空格引起的。

删除文件名中的空格即可解决该问题。

下面的代码可以正常工作:

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HelpFile := 'HelpFile1.chm';
Application.HelpContext(0);

Application.HelpFile := 'HelpFile2.chm';
Application.HelpContext(0);
end;

关于delphi - 在 Delphi 中同时打开两个 HTMLHelp 文件会导致两个帮助窗口挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/81243/

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