Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3244060
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T18:30:22+00:00 2026-05-17T18:30:22+00:00

I have a Delphi 2006 app with a CHM help file. It all works

  • 0

I have a Delphi 2006 app with a CHM help file. It all works OK except that I cannot get any help to connect to the “Help” button on the TOpenDialog and TSaveDialog.

A simple program demonstrating this is shown below. Clicking button 2 opens the help file and displays the correct page. Clicking button 1 opens the dialog, but clicking on the help button in the dialog has no effect.

unit Unit22;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,
  HTMLHelpViewer ;

type
  TForm22 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form22: TForm22;

implementation

{$R *.dfm}

procedure TForm22.Button1Click(Sender: TObject);
begin
OpenDialog1.HelpContext := 10410 ;
OpenDialog1.Execute ;
end;

procedure TForm22.Button2Click(Sender: TObject);
begin
Application.HelpContext  (10410) ;
end;

procedure TForm22.FormCreate(Sender: TObject);
begin
Application.HelpFile := 'c:\help.chm' ;
end;

end.
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T18:30:23+00:00Added an answer on May 17, 2026 at 6:30 pm

    With default settings TOpenDialog’s help message handling doesn’t work (you should submit it to Quality Central).

    The specific reason is because Windows sends the help message to the dialog’s parent, rather than the dialog itself, so unless your form is set up to process it it just gets ignored.

    The fix is to set Application.ModalPopupMode to pmAuto instead of the default of pmNone. You can do that once during your normal startup code, or just before you show the dialog. When that’s set Delphi creates an intermediate window (Dialogs.pas::TRedirectorWindow) which handles the message correctly.

    If for some reason you can’t change the ModalPopupMode then, as I said, you need to handle the message on your form:

    TForm22 = class(TForm)
    ...
      procedure WndProc(var Message: TMessage); override;
    end;
    
    initialization
    
    var
      HelpMsg: Cardinal;
    
    procedure TForm22.WndProc(var Message: TMessage);
    begin
      inherited;
      if (Message.Msg = HelpMsg) and (OpenDialog1.Handle <> 0) then
        Application.HelpContext(OpenDialog1.HelpContext);
    end;
    
    initialization
      HelpMsg := RegisterWindowMessage(HelpMsgString);
    end.
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

HI I have a dynamic link library writting in Delphi 2006 that has forms.pas
I have a Delphi app that we're migrating to C++. One thing I often
I have a very strange problem with the Delphi 2006 IDE. If the IDE
We have a large (about 580,000 loc) application which in Delphi 2006 builds (on
I have a classic client/server (fat client and database) program written in Delphi 2006.
I have a Delphi 7 application that has two views of a document (e.g.
I have a delphi (Win32) web application that can run either as a CGI
I have a Delphi 5 executable that calls into a .NET assembly via the
I have a Delphi application similar to Taskbar Shuffle that includes a hook dll.
i have some vcl.net apps(delphi 2006 , .net 1.1 ) and i like to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.