連続でスレを立てて申し訳ありません。
Imageを右クリックした時にEditの数字を-1させたいのですが、
どのようにすれば良いのでしょうか?
簡単にすますのであれば、OnMouseUpを使用しましょう。
ただし、マウスボタン押す、マウス移動、マウスボタン離すという動作も、「クリック」と判断します。
これがいやであれば、OnMouseDown,OnMouseMoveでも処理を加えるとか。
コンポーネント名を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に書かれている内容が数字とは限らないので上記のようにしてみました。
間違えました。
Edit1.Text := IntToStr(StrToIntDef(Edit1.Text,0) - 1) ;
ですね。
ええと、左クリック(OnClick)はEditを+1するようにしています。
左クリックで+1、右クリックで-1を実現したいと思っています。
すみません。
ソースを読み違えていました。
解決です。
お二方ありがとうございました。
何度もお手数お掛けします。
メインフォームにポップアップメニューを表示するようにしているのですが、
上記ソースを使うと、-1されて、さらにポップアップメニューまで表示されてしまいます。
これを防ぐ事は出来ますでしょうか?
こんな感じでしょうか。
# 変数などは適宜変更を。
ただし、ボタンの上でも効かなくなります。つまり、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;
なるほど。
参考になりました。
にしのさん、ありがとうございました。
ツイート | ![]() |