如何获取鼠标在程序界面的坐标

解决方案 »

  1.   

    BOOL GetCursorPos(    LPPOINT lpPoint  // address of structure for cursor position  
       );
      

  2.   

    mouse.cursorpos.x
    mouse.cursorpos.y
      

  3.   

    mouse.cursorpos.x是屏幕坐标,如果要获取以窗体左上角为原点的坐标,最好在TForm类的OnMouseMove事件中取。
    type TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object;
    property OnMouseMove: TMouseMoveEvent;
    X,Y就是相对屏幕左上角的坐标
      

  4.   

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     edit1.text:='x坐标:'+inttostr(x)+'  Y坐标:'+inttostr(y);
    end;相对于窗体(程序界面)的坐标.
      

  5.   

    var
      P, 相对于窗体(程序界面)的坐标:TPoint;  GetCursorPos(P);
      相对于窗体(程序界面)的坐标 := MyForm.ScreenToClient(P)
      

  6.   

    var
      pt: TPoint;
    begin
      GetCursorPos(pt);
      

  7.   

    var
      pt: TPoint;
    begin
      GetCursorPos(pt);
    ClientToScreen
    ScreenToClient
    鼠标转换一下
      

  8.   

    说的够多了,插不上话了。怎么都知道呀
    我再加一个
    P := TargetControl.ScreenToClient(SourceControl.ClientToScreen(P));可以得到一个控件的坐标相对于另一个控件来说的坐标位置。mPoint := Mouse.CursorPos; //屏幕坐标 
    P := Parent.ScreenToClient(mPoint);//可以得到鼠标相对于控件坐标的位置
      

  9.   

    __________________________________\
     1(0,0)                            /  
     1
     1
     1
     1
     1
     1
     1
    \/                       (100,80)
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     edit1.text:='x坐标:  '+inttostr(x)+'  Y坐标:  '+inttostr(y);
    end;