2009-05-05 34 views

Trả lời

19

Mouse.CursorPos chứa TPoint, lần lượt chứa vị trí X và Y. Giá trị này nằm trong các tọa độ toàn cục, vì vậy bạn có thể dịch sang biểu mẫu của mình bằng cách sử dụng thường trình ScreenToClient sẽ dịch tọa độ màn hình sang tọa độ cửa sổ.

Theo tệp trợ giúp Delphi, Windows.GetCursorPos có thể bị lỗi, Mouse.CursorPos kết thúc tốt đẹp việc này để tăng EOsException nếu nó không thành công.

var 
    pt : tPoint; 
begin 
    pt := Mouse.CursorPos; 
    // now have SCREEN position 
    Label1.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
    pt := ScreenToClient(pt); 
    // now have FORM position 
    Label2.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
end; 
3

Làm thế nào về điều này?

procedure TForm1.Button1Click(Sender: TObject); 
var 
MausPos: TPoint; 
begin 
    GetCursorPos(MausPos); 
    label1.Caption := IntToStr(MausPos.x); 
    label2.Caption := IntToStr(MausPos.y); 
end; 


procedure TForm1.Button2Click(Sender: TObject); 
begin 
    SetCursorPos(600, 600); 
end; 

Tìm thấy trực tuyến này ở đâu đó một lần và lưu nó trong codesnippet tôi DB :)

This page lẽ sẽ giải quyết tất cả các câu hỏi của bạn tuy nhiên ... có vẻ như là chức năng để đi từ khách hàng để tọa độ màn hình và lưng vv ..

Chúc may mắn!

4

Như những người khác đã nói, bạn có thể sử dụng Mouse.CursorPos hoặc GetCursorPos chức năng, nhưng bạn cũng có thể chỉ xử lý các sự kiện onmousedown hoặc onMouseUp thay vì OnClick. Bằng cách này, bạn sẽ nhận được các giá trị X và Y của bạn dưới dạng tham số cho trình xử lý sự kiện của bạn mà không phải thực hiện bất kỳ lệnh gọi hàm bổ sung nào.

5

Thuộc tính Mouse.CursorPos sẽ cho bạn biết vị trí hiện tại của chuột. Nếu máy tính chạy chậm chạp, hoặc nếu chương trình của bạn chậm phản hồi các tin nhắn, thì nó có thể không giống với vị trí mà chuột có khi sự kiện OnClick xảy ra lần đầu tiên. Để có được vị trí của chuột tại thời điểm nút chuột được nhấp vào, hãy sử dụng GetMessagePos. Báo cáo hiển thị tọa độ màn hình; dịch sang tọa độ của khách hàng với TImage.ScreenToClient.

Cách khác là tự mình xử lý các sự kiện OnMouseDownOnMouseUp; các thông số của chúng bao gồm các tọa độ. Hãy nhớ rằng cả hai sự kiện cần phải xảy ra để một số nhấp xảy ra. Bạn cũng có thể muốn phát hiện kéo hoạt động, vì có thể bạn sẽ không muốn xem xét việc kéo để được tính là một lần nhấp.

Các vấn đề liên quan