在Delphi中,應用程序的主幫助文件是通過TApplication.HelpFile財產分配。所有對應用程序幫助系統的調用都會使用此屬性(與CurrentHelpFile一起使用)來確定幫助調用應該路由到的幫助文件。開業德爾福2個HTML幫助文件,同時導致兩個幫助窗口掛
除了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
代碼的最後線的上方打開次級幫助窗口(但沒有內容),然後既幫助窗口掛起。
我的問題是這樣的:
是否有可能同時顯示兩個窗口HTML幫助,如果是這樣,什麼是應遵循的程序?
如果沒有,有沒有辦法告訴應用程序的幫助窗口是否已經打開,然後顯示不同的幫助窗口前關閉它編程?
(我使用德爾福2007年與Windows Vista上的HTML幫助文件)
更新:2008-09-18
打開兩個在同一時間幫助文件是實際可行的預計使用上面的代碼。問題似乎與我使用的實際幫助文件 - 而不是代碼。
我嘗試了不同的幫助文件相同的代碼,它工作正常。
奇怪的是,我使用的兩個幫助文件各自都能正常工作 - 只有當您試圖同時打開它們並且它們掛起時,並且只有在代碼中打開它們時(Windows資源管理器中的I可以在沒有問題的情況下同時打開)。
反正 - 問題肯定是有幫助文件,而不是代碼 - 使原來的問題是,現在幾乎無效。
更新2:2008-09-18
我終於找到了掛幫助窗口的原因。我將在下面發佈答案並接受它作爲將來參考的正確答案。我也改變了問題標題。
哎呀......看來,我不能接受我自己的答案...
請投上一票,使其保持在頂部。
解決方法是一個好主意,但具有第二應用程序只是打開幫助文件可能是矯枉過正。你可以使用ShellExecute(Handle,'open',PChar('HelpFileName.chm'),nil,nil,SW_SHOWNORMAL)獲得相同的結果。 – user5888 2008-09-18 05:31:50