ポップアップメニューをカーソル位置に表示するには?

解決


Mr.Chin  2003-12-04 09:46:02  No: 5910

当方Delphi7を使用しております。
Labelを左クリックするとポップアップメニューをカーソル位置に
表示するようにしたいのですが、なぜかデスクトップ画面の右上のほうに
表示されてしまいます。
ヘルプには(popupメソッドの項目)カーソル位置に表示されますと
書いてあるのですが・・・。
どなたか解決方法をお願い致します。


Mr.XRAY  URL  2003-12-04 10:04:01  No: 5911

>ヘルプには(popupメソッドの項目)カーソル位置に表示されますと
>書いてあるのですが・・・。

あれっ,本当ですね.

D5のヘルプでは

TpopupMenuのPopupメソッドで,例がのっていました.
参考にしてはいかがでしょうか.

以下の例では,ポップアップメニューを使用します。マウスボタンをクリッ
クすると,クリックした位置にポップアップメニューが表示されます。

procedure TForm1.FormCreate(Sender: TObject);
begin
  PopupMenu1.AutoPopup := False;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin
  with ClientToScreen(Point(X,Y)) do
    PopupMenu1.Popup(X, Y);
end;


Mr.Chin  2003-12-04 22:16:09  No: 5912

Mr.XRAYさん、ありがとうございました。
無事に表示することができました。
これで次のステップに進めます!


  2003-12-04 22:32:30  No: 5913

Form1 の好きな位置に Label1 を作成。
Label1 の MouceDown に以下のコードを書いて
実行するとできました。
(D7.0/WinXP)

procedure TForm1.Label1MouseDown(Sender: TObject; 
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  P: TPoint;
begin
  if Button = mbLeft then begin
    P := Label1.ClientToScreen(Point(X, Y));
    PopupMenu1.Popup(P.X, P.Y);
  end;
end;


Mr.Chin  2003-12-05 09:17:54  No: 5914

直さん、ありがとうございます。
プログラムには幾通りの方法があることを実感しました。
私も直さんと同じ環境だったので、思い通りにできました。


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

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






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