この掲示板の過去ログに「クリックした位置の座標の数値を取得するには?」というのがあって、参考にしたのですが、それはフォーム内での位置ではなくて画面上の位置を取得しているようです。ぼくがしたいのは、フォーム内をクリックしたときの、そのフォーム内の座標が知りたいのです。どうかお願いします。
きっと「クリックした位置の座標の数値を取得するには?」というFAQで書いてあった方法のあとにTForm.ScreeenToClientでスクリーン座標からクライアント座標に変えたらいいのでは??
ちゃんと調べてなくてすみません。m(__)m
TForm.ScreeenToClientというのを始めて知りましたが、うまくいきませんでした。Form1.ScreenToClientとやってもうまくいきません。もう少し試行錯誤してみますが、何かヒントみたいなものがあったらまたお願いします
確認してみました。
確認方法は新規アプリフォームのOnClickイベントで下記ソースを記述しただけです。
procedure TForm1.FormClick(Sender: TObject);
var
AMouse: TMouse;
APos : TPoint;
begin
AMouse := TMouse.Create;
APos := AMouse.CursorPos;
APos := ScreenToClient(APos);
ShowMessage('X:' + IntToStr(APos.x) + ' Y:' + IntToStr(APos.Y));
end;
これで動きましたが...(-_-;)
ありがとうございました。解決できました!
単純にonMouseDownではダメなのですか?
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
end;
何もしなくてもX,Yの値がありますけど。
言われてみれば確かに...(^_^;)
>単純にonMouseDownではダメなのですか?
これだと、Editなどがあった場合は、イベントが発生しないと思ったのですが・・
確認してないですけど、多分そうだったと思います。
Editが有ってイベントが発生しないのは、onKeyDownです。
この場合も、FormのKeyPreviewプロパティーをTrueにして
先に受け取ることも可能です。
画面上の位置ではなく
Chartの画面ピクセル座標やポイント値に
変換するにはどのようにすればよいのでしょうか?
お願いします。
ツイート | ![]() |