クリックした位置のフォーム内での座標の位置を取得するには?

解決


たけちん  2002-11-26 23:37:20  No: 2214

この掲示板の過去ログに「クリックした位置の座標の数値を取得するには?」というのがあって、参考にしたのですが、それはフォーム内での位置ではなくて画面上の位置を取得しているようです。ぼくがしたいのは、フォーム内をクリックしたときの、そのフォーム内の座標が知りたいのです。どうかお願いします。


glebe_f  2002-11-26 23:59:35  No: 2215

きっと「クリックした位置の座標の数値を取得するには?」というFAQで書いてあった方法のあとにTForm.ScreeenToClientでスクリーン座標からクライアント座標に変えたらいいのでは??
ちゃんと調べてなくてすみません。m(__)m


たけちん  2002-11-27 01:37:38  No: 2216

TForm.ScreeenToClientというのを始めて知りましたが、うまくいきませんでした。Form1.ScreenToClientとやってもうまくいきません。もう少し試行錯誤してみますが、何かヒントみたいなものがあったらまたお願いします


glebe_f  2002-11-27 02:39:07  No: 2217

確認してみました。
確認方法は新規アプリフォームの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;

これで動きましたが...(-_-;)


たけちん  2002-11-27 02:52:51  No: 2218

ありがとうございました。解決できました!


F.T  2002-11-27 02:53:15  No: 2219

単純にonMouseDownではダメなのですか?

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

end;
何もしなくてもX,Yの値がありますけど。


glebe_f  2002-11-27 03:21:00  No: 2220

言われてみれば確かに...(^_^;)


aiko  2002-11-27 05:35:03  No: 2221

>単純にonMouseDownではダメなのですか?
これだと、Editなどがあった場合は、イベントが発生しないと思ったのですが・・
確認してないですけど、多分そうだったと思います。


F.T  2002-11-27 08:15:47  No: 2222

Editが有ってイベントが発生しないのは、onKeyDownです。
この場合も、FormのKeyPreviewプロパティーをTrueにして
先に受け取ることも可能です。


理恵  2003-10-28 22:20:48  No: 2223

画面上の位置ではなく
Chartの画面ピクセル座標やポイント値に
変換するにはどのようにすればよいのでしょうか?
お願いします。


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








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