Sto lavorando per ottenere la configurazione del file di aiuto con il nostro software. Ho aggiunto i numeri di HelpContext per molti moduli/frame/controlli specifici e funzionano tutti bene. Il problema è che la forma principale non porta alcun tipo di aiuto. Per tutto questo sto usando solo F1 per cercare di attivare l'aiuto.Collegamento di file di aiuto a un'applicazione Delphi XE2 - tutto funziona tranne il modulo principale
Non sono affatto un esperto di Delphi o di helpfiles, ma posterò quello che ho fatto e dove ho guardato.
Modifica: Grazie a un po 'di aiuto ora vedo che il problema è dovuto al fatto che il modulo principale è un genitore MDI. Questo ancora non risolve il problema .. sembra quasi un insetto per me, ma suppongo che potrebbe essere intenzionale per qualche motivo. EndEdit
Includo questa unità: HtmlHelpViewer per il visualizzatore. Nelle forme principali Crea costruttore ho aggiunto Application.Helpfile: = 'asdf.chm'. Per tutti gli altri moduli ho appena aggiunto numeri di contesto e ha funzionato subito. L'ho provato sul modulo principale e non succede nulla. Così ho provato ad aggiungere un evento Application.OnHelp ma questo non viene richiamato sul modulo principale (e lo fa per tutte le altre forme in cui la guida funziona).
L'ultima risorsa a cui potevo pensare era di tracciare in profondità nel codice e vedere cosa stava succedendo. Ho ottenuto TCustomForm.WMHelp in Vcl.Forms come il luogo in cui la divisione stava accadendo. Detta funzione ha questo ciclo:
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
Quando la forma principale chiamava il controllo aiuto sarebbe pari a zero e poi sarebbe uscire. Qualsiasi altra cosa andrebbe bene.
Ovviamente non so perché questo sta accadendo. La risposta potrebbe essere qualcosa di molto semplice. Qualsiasi idea sarebbe apprezzata!
Hai impostato 'HelpContext' per il modulo principale stesso? –
@DavidHeffernan: Sì, l'ho fatto. Avrei dovuto dirlo, ma è solo la forma principale, non i suoi figli. Inserisco un pulsante nel modulo (senza guida di contesto) e quando ha il focus e spingo F1 il helpcontext per i caricamenti del modulo principale. Se non c'è una messa a fuoco visibile, non viene caricato alcun aiuto. – Sentient
Dare un'occhiata al gestore WMHelp sotto il debugger e vedere cosa viene restituito da FindControl. –