当方Delphi7を使用しております。
Labelを左クリックするとポップアップメニューをカーソル位置に
表示するようにしたいのですが、なぜかデスクトップ画面の右上のほうに
表示されてしまいます。
ヘルプには(popupメソッドの項目)カーソル位置に表示されますと
書いてあるのですが・・・。
どなたか解決方法をお願い致します。
>ヘルプには(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.XRAYさん、ありがとうございました。
無事に表示することができました。
これで次のステップに進めます!
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;
直さん、ありがとうございます。
プログラムには幾通りの方法があることを実感しました。
私も直さんと同じ環境だったので、思い通りにできました。
ツイート | ![]() |