|
|
||||
Tips > |
|||||
OnShowHint イベントでヒントを一元管理する |
更新 : 2009/12/06 |
||||
|
|
||
解説: コントロールの上にマウスカーソルを当て、ヒントを表示したい時があります。 各コントロールのイベントハンドラにヒントを書くのもいいのですが、数が増えてくると分かりづらくなってきます。そんなとき、一元管理すれば扱いが楽です。 TApplcation クラスの OnShowHint を使うと、コントロールの上にマウスカーソルが移動してきたときに、ヘルプを表示させるイベントハンドラが記述できます。 引数の HintInfo.HintControl を調べれば、マウスカーソルがどのコントロールの上にあるかが分かります。 使用例: 適当に配置したコントロールの上にマウスカーソルを移動するとヒントが表示されます。ヒントはコントロール名が表示されるようになっています。カスタマイズする場合は、コードを追加してください。 コンポーネントの設定は、Edit, Button, CheckBox, RadioButton など適当に配置しておきます。 プロパティの設置は特に必要ありません。 OnShowHint で、HintStr パラメータに各コンポーネントの名前が表示されるようにコードを記述します(AppShowHint は private で宣言しておいてください)。 コンストラクタで、Application の ShowHint を true に設定して、OnShowHint に AppShowHint を割り当てておきます。各コントロールのヒントも表示可能に設定しておきます。 アプリケーションを起動して、マウスカーソルをコントロールの上に移動させてみてください。ヒントが表示されるはずです。 ヒントをカスタマイズして、必要に応じたメッセージを表示させる、なども試してみてください。 //------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Application->ShowHint = true; Application->OnShowHint = AppShowHint; // コントロールの ShowHint プロパティを true に設定する for (int i = 0; i < ControlCount; i++) Controls[i]->ShowHint = true; } //------------------------------------------------------------------- void __fastcall TForm1::AppShowHint(System::AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo) { for (int i = 0; i < ControlCount; i++) HintInfo.HintStr = HintInfo.HintControl->Name; } //------------------------------------------------------------------- |