Tôi đang làm việc để nhận được thiết lập helpfile bằng phần mềm của chúng tôi. Tôi đã thêm số HelpContext cho nhiều biểu mẫu/khung/điều khiển cụ thể và tất cả đều hoạt động tốt. Vấn đề là hình thức chính không mang lại bất kỳ sự trợ giúp nào cả. Đối với tất cả điều này tôi chỉ sử dụng F1 để cố gắng kích hoạt sự trợ giúp.Liên kết helpfile với một ứng dụng Delphi XE2 - mọi thứ hoạt động ngoại trừ hình thức chính
Tôi không phải là chuyên gia về Delphi hoặc helpfiles, nhưng tôi sẽ đăng những gì tôi đã làm và nơi tôi đã xem.
Chỉnh sửa: Nhờ trợ giúp của tôi, giờ đây vấn đề là do biểu mẫu chính là phụ huynh MDI. Điều này vẫn không giải quyết vấn đề .. nó gần như có vẻ như một lỗi với tôi nhưng tôi cho rằng nó có thể là cố ý vì một lý do nào đó. EndEdit
Tôi bao gồm đơn vị này: HtmlHelpViewer cho trình xem. Trong các hình thức chính Tạo constructor Tôi đã thêm Application.Helpfile: = 'asdf.chm'. Đối với tất cả các hình thức khác tôi vừa thêm vào các số bối cảnh và nó đã hoạt động ngay lập tức. Tôi đã thử nó ở dạng chính và không có gì xảy ra cả. Vì vậy, tôi đã thử thêm một sự kiện Application.OnHelp nhưng điều này không nhận được gọi trên biểu mẫu chính (và nó cho tất cả các hình thức khác, nơi trợ giúp đang hoạt động).
Kỳ nghỉ cuối cùng mà tôi có thể nghĩ đến là theo dõi sâu vào mã và xem điều gì đang xảy ra. Tôi đã truy cập vào TCustomForm.WMHelp trong Vcl.Forms là nơi chia tách đã xảy ra. Hàm trả lời có vòng lặp này:
if iContextType = HELPINFO_WINDOW then
begin
Control := FindControl(hItemHandle);
while (Control <> nil) and (not ControlHasHelp(Control)) do
Control := Control.Parent;
if Control = nil then Exit;
GetHelpInfo(Control, HType, ContextID, Keyword);
Pt := Control.ClientToScreen(Point(0, 0));
end
Khi biểu mẫu chính được gọi là Điều khiển trợ giúp sẽ là 0 và sau đó nó sẽ thoát. Mọi thứ khác sẽ ổn.
Tôi rõ ràng không biết tại sao điều này xảy ra. Câu trả lời có thể là một cái gì đó rất cơ bản. Có những câu chuyện mới trên trang chủ!
Bạn đã đặt 'HelpContext' cho chính biểu mẫu? –
@DavidHeffernan: Vâng tôi đã làm. Tôi nên đề cập đến điều này, nhưng nó chỉ là hình thức chính, không phải là con cái của nó. Tôi đặt một nút trên biểu mẫu (không có trợ giúp ngữ cảnh) và khi nó có tiêu điểm và tôi đẩy F1 phần trợ giúp cho tải biểu mẫu chính. Nếu không có tiêu điểm hiển thị thì không có sự trợ giúp nào tải. – Sentient
Tôi sẽ xem xét trình xử lý WMHelp trong trình gỡ lỗi và xem những gì được trả về từ FindControl. –