自前のヘルプファイルを作成して表示するプログラムを以下のように書きましたが
Application.HelpFile :='MYFILERの使用方法.HLP';
Application.HelpJump(Application.CurrentHelpFile) ;
「このトピックは存在しません。アプリケーションの製造元に問い合わせて云々・・・(129)」のダイヤログボックスが表示されます。これがでないようにするにはどうすればいいのでしょうか?
'MYFILERの使用方法.HLP'は表示されます( Delphi6 Personal)
その後の研究で
Win32 API 関数 ShellExecute を使って 解決しました。
ちなみに
const
strHlpName='MYFILERの使用方法.HLP';
begin
ShellExecute(Handle,'open',PChar(strHlpName),'',
PChar(ExtractFilePath(Application.Exename)),
SW_SHOWDEFAULT);
end;
Halbow です。
ヘルプを読んでください。たんにヘルプファイルを起動するだけでしたら
ShellExecute() でよいとおもいます。使い方は検索するとたくさん見つ
かります。
--------------------
HelpJump メソッドは指定されたヘルプトピックを表示します。
function HelpJump(const JumpID: string): Boolean;
説明
HelpJump メソッドを呼び出すと,シンボル名で識別されるトピックを表示する
ことができます。HelpJump メソッドは,CurrentHelpFile プロパティで指定
されたファイルから JumpID パラメータによって識別されるトピックを表示します。
ありゃりゃ、解決しましたか。失礼。
Halbowさん 有難う御座いました。「・・・CurrentHelpFile プロパティで指定
されたファイルから JumpID パラメータによって識別されるトピックを表示します。」はよくわかりませんが研究してみます。
今後ともよろしく
二度も解決マークがされているのになんですけど…。
Shell(略) を使っても、根本的解決にはなりませんね。
そのAPIは、アプリケーションを起動するだけで、ヘルプファイルに使うと以下の問題があります。
1.2重起動してしまう
2.トピック指定表示ができない(HTMLヘルプでなら一応可能)
3.アプリケーション終了時、同時に終了してくれない
なので、ちゃんとApplication.HelpFileを使ったほうがいいです。
そのほうが、よりそれっぽいです^^;
Application.HelpFileには、Application.ExeNameを使って、ヘルプのフルパスを指定してください。
(ファイル名のみだと、カレントディレクトリがヘルプファイルのあるフォルダでないと使えません)
プロジェクトソースに書くと、Delphiに文句を言われてしまうので、メインフォームのユニットにInitialize節などで設定します。
(プロジェクトオプションで設定するものは、当てになりません)
その後、トピックIDを指定して、
Application.HelpContext();を使います。
この辺は、新規作成で、ヘルプボタンつきのダイアログを作ったときのソースにあるのでわかるでしょう。
たかみちえ さんへ 有難う御座いました。ご指摘の通りでした。1と3は
FindWindow とSendMessage 関数でどうにかクリヤーしましたが。
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HelpJump('MYFILERの使用方法.HLP');
end;
でテストしましたがだめでした。お手上げ状態です。
Halbow です。
まえにヘルプの内容をしめしましたように、HelpJump() の引数は
表示しようとしているヘルプの中のトピックです。ヘルプに例が
ありませんか?
Halbow さん たびたび有難う御座います。
・・・
Application.HelpJump('MYFILERの使用方法.HLP');
・・・
で、目的の自前のヘルプ「MYFILERの使用方法」は表示され、アプリを終了すれば一緒に終了しますが、ただひとつ問題なのは
「このトピックは存在しません。アプリケーションの製造元に問い合わせて云々・・・(129)」のダイヤログボックスも表示されます。
これが解決できません。
Halbow です。
たかみちえさんの回答にあるとおりです。
> Application.HelpFileには、Application.ExeNameを使って、ヘルプ
> のフルパスを指定してください。
そして、Application.HelpJump() にはトピックを設定してください。
自前でつくったヘルプにはトピックがないのでしょうか?
なぜ、Delphiのヘルプのとおりにしないのか分かりませんです。
Halbow さん たびたびで真に恐縮です。
'MYFILERの使用方法.HLP' は Windows95 ヘルプオーサリングキット で
VB用に作成したものを そのまま流用しているのですがこれが問題ですか?
「自前でつくったヘルプにはトピックがないのでしょうか?」のトビックとは?
Delphiでの ヘルプファイルの作り方があるのでしようか?
Halbow です。
とりあえず正式な「目次」表示のヘルプ起動法を示します。
アプリが閉じれば自動的にヘルプも閉じます。
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.HelpFile := ExtractFilePath(ParamStr(0))+'MYFILERの使用方法.HLP';
Application.HelpCommand(HELP_CONTENTS,0);
end;
「トピック」についてはヘルプの作り方で調べてください。
Halbow さんへ 薫より
無事解決しました。{「トピック」についてはヘルプの作り方で調べてください。}・・・そういたします。有難う御座いました。
ツイート | ![]() |