お世話になります。
ポップアップメニューですが 通常右クリックで出現しますが
事情があって これを右のWクリックで現れるようにしたいのですが
できるでしょうか。
すみませんがよろしくお願い致します。
Timer1をセットして
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
pt:TPoint;
begin
if Button=mbRight then
if Timer1.Enabled then
begin
pt:=ClientToScreen(Point(X,Y));
PopupMenu1.Popup(pt.X,pt.Y);
Timer1.Enabled:=False;
end
else
begin
Timer1.Enabled:=True;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
end;
Timer1のEnabledはFalse
Intervalは400くらいが適当
右ダブルクリックはVCLのイベントにありませんね。
TtPIPICH さんなら ApplicationEvents の OnMessage で WM_RBUTTONDBLCLK
メッセージを捕まえたらできるよ。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (ssRight in Shift) and (ssDouble in Shift) then
begin
{ ポップアップメニューの表示 }
end;
end;
でいけるかと。
あっ、そうか。にしのさんありがとうございます。
みなさんありがとうございます。
いろんな案があって勉強になります。
不思議に思うことがあります。
普通のポップアップメニューの設定だとコードに現れないのはナゼなのでしょう。
ガリガリとコードを入れるとそのようになるわけですが その最初の設定(デフォルト扱いでしょうか)は自動で変わってくれるわけですね。
たいへんありがとうございました。
> 普通のポップアップメニューの設定だとコードに現れないのはナゼなのでしょう。
VCL の内部のコードが面倒を見てくれるんですね。
面倒を見てくれないときは自分で書くしかないのです。
了解しました。
ツイート | ![]() |