Q&A

  • 컨트롤에서의 마우스위치는??
마우스의 위치를 알 수 있는 방법은 어떤게 있나요??

Mouse.CursorPos로 Screen상에서의 위치는 알 수 있는걸로 알고 있는데..

폼이나  각 컨트롤에서의 마우스위치는 어떻게 알 수 있는지요??
2  COMMENTS
  • Profile
    박홍석 2003.04.12 00:22

    가장 간단한 방법은 OnMouseDown, OnMouseMove, OnMouseUp 이벤트를 이용하시는 방법입니다.
      파라미터 X, Y로 현재 컴포넌트에서의 마우스 위치가 전달됩니다.

    procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      CurPos, PanelPos : TPoint;
    begin
      // X, Y 파라미터를 이용한 방법
      Panel1.Caption := Format( 'X:%d Y:%d', [ X, Y ] );

      // 현재 커서위치에서 해당 컨트롤의 위치를 뺌으로써 알아내는 방법
      GetCursorPos( CurPos );
      PanelPos := Panel1.ClientToScreen( Point( 0, 0 ) );
      Label3.Caption := Format( 'X:%d Y:%d', [ CurPos.X - PanelPos.X, CurPos.Y - PanelPos.Y ] );
    end;

    다른 방법으로는 WM_MOUSEMOVE 메시지를 이용한 방법이 있습니다.

    편한 방법을 사용하세요.
  • Profile
    김성욱 2003.04.12 02:17
    ^^*