状況依存ヘルプをひょうじするには?

解決


  2003-07-25 22:26:40  No: 4236

標準ダイヤログのタイトルバーに?ボタンを付けるまでは出来たのですがこれをクリックして目的のコントロールにポップアップヘルプを表示したいのですが関数というかイベントハンドラーなのか見つけられません。どなたかご教示をお願いします。


にしの  2003-07-25 22:45:41  No: 4237

WM_HELPというメッセージが、そのコントロールにとばされます。

Formに、

protected
  procedure WMHelp(var Message: TWMHelp); message WM_HELP;
を用意して、その実体を、

procedure TForm1.WMHelp(var Message: TWMHelp);
var
  ctrl: TControl;
  HELPINFO: THelpInfo;
begin
  ctrl:= FindControl(Message.HelpInfo^.hItemHandle);
  if ctrl <> nil then
  begin
    ShowMessage(ctrl.Name);
  end;
end;

とすれば、?を押してからクリックしたコントロールの名前が表示されます


  2003-07-26 22:57:18  No: 4238

にしの  さんへ
早速のご教示有難うございます。

Form1のUnit1に
protected
  procedure WMHelp(var Message: TWMHelp); message WM_HELP;

OKBottomDlgのUnit2の
var
  OKBottomDlg: TOKBottomDlg;

implementation
 uses Unit1;
{$R *.dfm}
の次に
procedure TForm1.WMHelp(var Message: TWMHelp);
var
略(本体)
end;
としましたがUnit2で';'が必要な場所に'.'があるとかコンパイルエラーが出ます。
初歩的なミスで恐縮ですが
  なおダイヤログにはLabelとEditを用意しています。この本体をUnit1に書いた場合はコンパイルエラーはでませんが?ボタンをクリックしてコントロール上でクリックしても変化無です。


にしの  2003-07-27 00:04:56  No: 4239

上に示した例は、「Form1(TForm1)上の?を使用する場合」です。
臨機応変に修正しましょう。


  2003-07-27 01:09:59  No: 4240

にしのさん  有難う御座いました。後は、ヘルプトピックへジャンプ出来るように
がんばってみます


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

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






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