|
||
解説: PopupMenu はユーザーがコントロールで右クリックしたときに表示されるポップアップメニューです。"切り取り"や"コピー"などのテキストコンテンツをよく見かけると思います。こうしたテキストコンテンツを場面に応じ表示させることができます。快適に使うためのユーザーインターフェースには欠かせないコンポーネントです。 Memo コンポーネントなどの標準で表示される、右メニューを非表示にさせたい時も利用できます。 使用例: 以下は、Form の OnMouseDown イベントハンドラで PopupMenu の閉じられたタイミングを知り、任意の処理を実行する例です。 Label と PopupMenu を適当に配置してください。PopupMenu には "実行" というメニュー(中身はいらないです)を用意しておきます。 Form で右クリックするとメニュー("実行")が表示され、Label に "start" の文字が現れます。"実行" をクリックすると PopupMenu が閉じら、Label の文字が "end" に変わります。 //------------------------------------------------------------------- void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //ClientToScreen メソッドでスクリーン座標に変換 TPoint screenPos = ClientToScreen(Point(X, Y)); //PopupMenuはユーザーのレスポンスがあるまで消えない。 if(Button == mbRight) //ポップアップメニューを表示 PopupMenu1->Popup(screenPos.x, screenPos.y); //Popup メソッドが返ってきたら Popup は消えたと判断する。 Label1->Caption = "end"; /*ここにPopup が消えてから処理したいコードを記述します。*/ } //------------------------------------------------------------------- void __fastcall TForm1::PopupMenu1Popup(TObject *Sender) { Label1->Caption = "start"; } //------------------------------------------------------------------- |