マウスを動かさずにOnMouseMoveイベントを発生させるには?

解決


  2004-02-18 05:08:35  No: 7192

タイトルのままなのですが、マウスを動かさずにOnMouseMoveイベントを発生させる方法がわかりません。初心者です。教えてください。


にしの  2004-02-18 05:13:05  No: 7193

文面通りであれば、単にOnMouseMoveイベントに割り当てたプロシージャを呼ぶだけです。


  2004-02-18 05:32:18  No: 7194

にしの様  お世話になります。
単にOnMouseMoveを呼び出しましたら、動きました。
こちらのプログラムではOnMouseMoveを実行した後、また何か処理されてしまい画面に反映されないようです。確認してみます。


MrXRAY  URL  2004-02-18 05:32:24  No: 7195

以下のコードでは,FormにButtonを配置し,Button1をクリックすると,
文面の通り,Button1のOnMouseMoveイベントが発生します.

procedure TForm1.Button1Click(Sender: TObject);
begin
     Button1MouseMove(Self,[ssShift],0,0);
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     ShowMessage('OnMouseMoveイベントを呼んだよ');
end;


Mr.XRAY  URL  2004-02-18 05:35:05  No: 7196

>Button1をクリックすると,
>文面の通り,Button1のOnMouseMoveイベントが発生します.

ゴメンなさい.これではクリックしなくても発生してしまいますね.


  2004-02-18 05:38:49  No: 7197

MrXRAYさん  ありがとうございます。
とりあえず、動いたのですが、この時マウスカソールの位置を知ることができますか?


たかみちえ  URL  2004-02-18 05:45:42  No: 7198

GetCursorPos APIを使ってみては?


たかみちえ  URL  2004-02-18 05:47:12  No: 7199

お、Mouse.Cursorposでも可です。
どちらか好きな方をつかってください。


Mr.XRAY  URL  2004-02-18 05:54:03  No: 7200

マウスカーソルの位置というは引数のX,Yですが...

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
    AP1,AP2: TPoint;
begin
     AP2.X:=X;
     AP2.Y:=Y;
     Canvas.TextOut(20,20,'X='+IntToStr(X)+'   Y='+IntTosTr(Y));
     AP1:=Button1.ClientToScreen(AP2);
     Canvas.TextOut(20,40,'X='+IntToStr(AP1.X)+'   Y='+IntTosTr(AP2.Y));
end;

な感じの値のことですか.
それでさっきのマウスイベントですが,以下ならButton1のクリックで発生
します.意味があるかどうかはともかく...

procedure TForm1.FormCreate(Sender: TObject);
begin
     OnMouseMove:=nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     OnMouseMove:=FormMouseMove;
     FormMouseMove(Self,[ssShift],0,0);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     ShowMessage('MouseMoveイベント発生');
     OnMouseMove:=nil;
end;


  2004-02-18 05:55:16  No: 7201

たかみちえさん  ありがとうございます。
'GetCursorPos'  ですね。早速調べてみます。


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

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






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