右Wクリックでポップアップメニューを出現させるには?

解決


初心者D  2004-12-03 03:01:21  No: 12030

お世話になります。
ポップアップメニューですが  通常右クリックで出現しますが
事情があって  これを右のWクリックで現れるようにしたいのですが
できるでしょうか。
すみませんがよろしくお願い致します。


TtPIPICH  URL  2004-12-03 04:43:01  No: 12031

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くらいが適当


りおりお  2004-12-03 19:02:52  No: 12032

右ダブルクリックはVCLのイベントにありませんね。
TtPIPICH さんなら ApplicationEvents の OnMessage で WM_RBUTTONDBLCLK 
メッセージを捕まえたらできるよ。


にしの  2004-12-03 19:40:47  No: 12033

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;

でいけるかと。


りおりお  2004-12-03 19:43:11  No: 12034

あっ、そうか。にしのさんありがとうございます。


初心者  2004-12-04 02:12:47  No: 12035

みなさんありがとうございます。
いろんな案があって勉強になります。
不思議に思うことがあります。
普通のポップアップメニューの設定だとコードに現れないのはナゼなのでしょう。
ガリガリとコードを入れるとそのようになるわけですが  その最初の設定(デフォルト扱いでしょうか)は自動で変わってくれるわけですね。
たいへんありがとうございました。


りおりお  2004-12-04 02:38:41  No: 12036

> 普通のポップアップメニューの設定だとコードに現れないのはナゼなのでしょう。

VCL の内部のコードが面倒を見てくれるんですね。
面倒を見てくれないときは自分で書くしかないのです。


初心者D  2004-12-04 02:59:55  No: 12037

了解しました。


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

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






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