ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


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;    
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.