Imageを右クリックした時のイベント処理は?

解決


Gach  2003-05-19 18:02:26  No: 3560

連続でスレを立てて申し訳ありません。
Imageを右クリックした時にEditの数字を-1させたいのですが、
どのようにすれば良いのでしょうか?


にしの  2003-05-19 18:18:32  No: 3561

簡単にすますのであれば、OnMouseUpを使用しましょう。
ただし、マウスボタン押す、マウス移動、マウスボタン離すという動作も、「クリック」と判断します。
これがいやであれば、OnMouseDown,OnMouseMoveでも処理を加えるとか。


Jac  2003-05-19 20:10:42  No: 3562

コンポーネント名をImage1とEdit1とします。
Image1のOnMouseUpイベントに次のようなものを書けば良いと思います。

procedure TMainForm.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
  begin
    Edit1.Text := StrToIntDef(Edit1.Text,0) - 1 ;
  end ;
end;

Edit1.Textに書かれている内容が数字とは限らないので上記のようにしてみました。


Jac  2003-05-19 20:11:15  No: 3563

間違えました。

Edit1.Text := IntToStr(StrToIntDef(Edit1.Text,0) - 1) ;

ですね。


Gach  2003-05-19 23:53:49  No: 3564

ええと、左クリック(OnClick)はEditを+1するようにしています。
左クリックで+1、右クリックで-1を実現したいと思っています。


Gach  2003-05-20 05:57:09  No: 3565

すみません。
ソースを読み違えていました。
解決です。
お二方ありがとうございました。


Gach  2003-05-20 06:03:05  No: 3566

何度もお手数お掛けします。
メインフォームにポップアップメニューを表示するようにしているのですが、
上記ソースを使うと、-1されて、さらにポップアップメニューまで表示されてしまいます。
これを防ぐ事は出来ますでしょうか?


にしの  2003-05-20 07:41:19  No: 3567

こんな感じでしょうか。
# 変数などは適宜変更を。

ただし、ボタンの上でも効かなくなります。つまり、Form1を直に右クリックしたときだけポップアップメニューが出ます。

procedure TForm1.FormContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
var
   comp: TComponent;
   pt: TPoint;
begin
   GetCursorPos(pt);
   comp := FindDragTarget(pt, true);
   Handled := (comp<>Form1);
end;


Gach  2003-05-20 11:35:10  No: 3568

なるほど。
参考になりました。
にしのさん、ありがとうございました。


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

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






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