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

解決


 2004-02-18 05:08:35  No: 7192  IP: [192.*.*.*]

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

編集    削除
にしの  2004-02-18 05:13:05  No: 7193  IP: [192.*.*.*]

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

編集    削除
 2004-02-18 05:32:18  No: 7194  IP: [192.*.*.*]

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

編集    削除
MrXRAY  URL  2004-02-18 05:32:24  No: 7195  IP: [192.*.*.*]

以下のコードでは,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  IP: [192.*.*.*]

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

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

編集    削除
 2004-02-18 05:38:49  No: 7197  IP: [192.*.*.*]

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

編集    削除
たかみちえ  URL  2004-02-18 05:45:42  No: 7198  IP: [192.*.*.*]

GetCursorPos APIを使ってみては?

編集    削除
たかみちえ  URL  2004-02-18 05:47:12  No: 7199  IP: [192.*.*.*]

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

編集    削除
Mr.XRAY  URL  2004-02-18 05:54:03  No: 7200  IP: [192.*.*.*]

マウスカーソルの位置というは引数の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  IP: [192.*.*.*]

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

編集    削除