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

解決


初心者D  2004-12-02 18:01:21  No: 12030  IP: 192.*.*.*

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

編集 削除
TtPIPICH  URL  2004-12-02 19:43:01  No: 12031  IP: 192.*.*.*

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 10:02:52  No: 12032  IP: 192.*.*.*

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

編集 削除
にしの  2004-12-03 10:40:47  No: 12033  IP: 192.*.*.*

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 10:43:11  No: 12034  IP: 192.*.*.*

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

編集 削除
初心者  2004-12-03 17:12:47  No: 12035  IP: 192.*.*.*

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

編集 削除
りおりお  2004-12-03 17:38:41  No: 12036  IP: 192.*.*.*

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

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

編集 削除
初心者D  2004-12-03 17:59:55  No: 12037  IP: 192.*.*.*

了解しました。

編集 削除