ヘルプファイルを表示するには?

解決


  2003-07-17 18:52:22  No: 4152

自前のヘルプファイルを作成して表示するプログラムを以下のように書きましたが

  Application.HelpFile :='MYFILERの使用方法.HLP';
  Application.HelpJump(Application.CurrentHelpFile)  ;

「このトピックは存在しません。アプリケーションの製造元に問い合わせて云々・・・(129)」のダイヤログボックスが表示されます。これがでないようにするにはどうすればいいのでしょうか?
  'MYFILERの使用方法.HLP'は表示されます(  Delphi6  Personal)


  2003-07-17 19:32:14  No: 4153

その後の研究で
Win32  API  関数  ShellExecute  を使って  解決しました。
ちなみに
  const
    strHlpName='MYFILERの使用方法.HLP';
  begin
     ShellExecute(Handle,'open',PChar(strHlpName),'',
            PChar(ExtractFilePath(Application.Exename)),
            SW_SHOWDEFAULT);
  end;


Halbow  2003-07-17 19:40:14  No: 4154

Halbow です。

ヘルプを読んでください。たんにヘルプファイルを起動するだけでしたら
ShellExecute() でよいとおもいます。使い方は検索するとたくさん見つ
かります。

--------------------

HelpJump メソッドは指定されたヘルプトピックを表示します。

function HelpJump(const JumpID: string): Boolean;

説明

HelpJump メソッドを呼び出すと,シンボル名で識別されるトピックを表示する
ことができます。HelpJump メソッドは,CurrentHelpFile プロパティで指定
されたファイルから JumpID パラメータによって識別されるトピックを表示します。


Halbow  2003-07-17 19:41:58  No: 4155

ありゃりゃ、解決しましたか。失礼。


  2003-07-17 23:55:33  No: 4156

Halbowさん  有難う御座いました。「・・・CurrentHelpFile プロパティで指定
されたファイルから JumpID パラメータによって識別されるトピックを表示します。」はよくわかりませんが研究してみます。
今後ともよろしく


たかみちえ  URL  2003-07-18 04:37:04  No: 4157

二度も解決マークがされているのになんですけど…。
  Shell(略) を使っても、根本的解決にはなりませんね。
そのAPIは、アプリケーションを起動するだけで、ヘルプファイルに使うと以下の問題があります。
  1.2重起動してしまう
  2.トピック指定表示ができない(HTMLヘルプでなら一応可能)
  3.アプリケーション終了時、同時に終了してくれない

  なので、ちゃんとApplication.HelpFileを使ったほうがいいです。
そのほうが、よりそれっぽいです^^;

  Application.HelpFileには、Application.ExeNameを使って、ヘルプのフルパスを指定してください。
(ファイル名のみだと、カレントディレクトリがヘルプファイルのあるフォルダでないと使えません)
  プロジェクトソースに書くと、Delphiに文句を言われてしまうので、メインフォームのユニットにInitialize節などで設定します。
(プロジェクトオプションで設定するものは、当てになりません)

  その後、トピックIDを指定して、
  Application.HelpContext();を使います。
この辺は、新規作成で、ヘルプボタンつきのダイアログを作ったときのソースにあるのでわかるでしょう。


  2003-07-18 23:46:17  No: 4158

たかみちえ  さんへ  有難う御座いました。ご指摘の通りでした。1と3は
    FindWindow とSendMessage 関数でどうにかクリヤーしましたが。

procedure TForm1.Button1Click(Sender: TObject);
begin
   Application.HelpJump('MYFILERの使用方法.HLP');
end;
でテストしましたがだめでした。お手上げ状態です。


Halbow  2003-07-19 07:52:34  No: 4159

Halbow です。

まえにヘルプの内容をしめしましたように、HelpJump() の引数は
表示しようとしているヘルプの中のトピックです。ヘルプに例が
ありませんか?


  2003-07-19 20:46:41  No: 4160

Halbow さん  たびたび有難う御座います。
・・・
 Application.HelpJump('MYFILERの使用方法.HLP');
・・・

で、目的の自前のヘルプ「MYFILERの使用方法」は表示され、アプリを終了すれば一緒に終了しますが、ただひとつ問題なのは

「このトピックは存在しません。アプリケーションの製造元に問い合わせて云々・・・(129)」のダイヤログボックスも表示されます。
これが解決できません。


Halbow  2003-07-20 00:04:10  No: 4161

Halbow です。

たかみちえさんの回答にあるとおりです。

> Application.HelpFileには、Application.ExeNameを使って、ヘルプ
> のフルパスを指定してください。

そして、Application.HelpJump() にはトピックを設定してください。
自前でつくったヘルプにはトピックがないのでしょうか?
なぜ、Delphiのヘルプのとおりにしないのか分かりませんです。


  2003-07-20 02:10:08  No: 4162

Halbow  さん  たびたびで真に恐縮です。

'MYFILERの使用方法.HLP'  は  Windows95  ヘルプオーサリングキット  で
VB用に作成したものを  そのまま流用しているのですがこれが問題ですか?
「自前でつくったヘルプにはトピックがないのでしょうか?」のトビックとは?
  Delphiでの  ヘルプファイルの作り方があるのでしようか?


Halbow  2003-07-20 05:22:04  No: 4163

Halbow です。

とりあえず正式な「目次」表示のヘルプ起動法を示します。
アプリが閉じれば自動的にヘルプも閉じます。

procedure TForm1.Button2Click(Sender: TObject);
begin
  Application.HelpFile := ExtractFilePath(ParamStr(0))+'MYFILERの使用方法.HLP';
  Application.HelpCommand(HELP_CONTENTS,0);
end;

「トピック」についてはヘルプの作り方で調べてください。


  2003-07-20 09:30:54  No: 4164

Halbow  さんへ  薫より
無事解決しました。{「トピック」についてはヘルプの作り方で調べてください。}・・・そういたします。有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加