標準ダイヤログのタイトルバーに?ボタンを付けるまでは出来たのですがこれをクリックして目的のコントロールにポップアップヘルプを表示したいのですが関数というかイベントハンドラーなのか見つけられません。どなたかご教示をお願いします。
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;
とすれば、?を押してからクリックしたコントロールの名前が表示されます
にしの さんへ
早速のご教示有難うございます。
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に書いた場合はコンパイルエラーはでませんが?ボタンをクリックしてコントロール上でクリックしても変化無です。
上に示した例は、「Form1(TForm1)上の?を使用する場合」です。
臨機応変に修正しましょう。
にしのさん 有難う御座いました。後は、ヘルプトピックへジャンプ出来るように
がんばってみます
ツイート | ![]() |