Thema: Delphi MessageDlg mit OnHelp

Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#3

AW: MessageDlg mit OnHelp

  Alt 19. Nov 2014, 12:20
Hab eh ein TApplicationEvents verwendet und dort dann OnHelp definiert.

Wenn ich bei dem Formular kein Helpfile definiere, dann wird der Event nie aufgerufen.
Wenn ich zumindest ein Dummy-Helpfile angebe (ich hab mal IBDAC.chm verwendet), dann wird das OnHelp aufgerufen, wenn ich auf einem Button mit definierte, HelpContext oder HelpKeyword auf F1 drücke.
Will ich Hilfe aber über sowas
Code:
     if MessageDlg('Yes or no?', mtConfirmation, [mbYes, mbNo, mbHelp], 1)=mrYes then
        Memo1.Lines.Add('Yes clicked');
aufrufen (in dem Dialog auf "Hilfe" clicken), dann kommt der erwähnte Fehler.

Wie soll ich da THelpManager einbauen?

Danke,
Ralf


Besser nicht Application.OnIrgendwas, sonder TApplicationEvents.OnIrgendwas benutzen. Ist sicherer so.

In XE scheint es noch so zu gehen:
OnHelp-Event definieren und dann HelpContext/HelpKeyword angeben.
Eventuell liegt es dort aber daran, daß in dem Programm eventuell noch irgendwo Altcode von der alten Hilfe vorhanden ist.

Dein Problem (tritt in XE3 auch so auf) wäre über THelpManager.RegisterViewer zu lösen.
Delphi-Quellcode:
procedure THelpManager.ShowContextHelp(const ContextID: Longint; const HelpFileName: string);
...
begin
  ...
  { if nobody handles context-sensitive help, then bail. }
  if FExtendedViewerList.Count = 0 then
    raise EHelpSystemException.CreateRes(@SNoContext);
  Mit Zitat antworten Zitat