문제

에 TImage 의 OnClick 이벤트하고 싶 추출 x,y 좌표 마우스입니다.나는 그들을 선호와 관련하여 이미지와 관련하여 양식이나 창이 그냥 좋습니다.

도움이 되었습니까?

해결책

Mouse.cursorpos에는 tpoint가 포함되어 있으며, 이는 x 및 y 위치를 포함합니다. 이 값은 글로벌 좌표로 이루어 지므로 화면 좌표를 창 좌표로 변환하는 스크린 토코 클리어 루틴을 사용하여 양식으로 번역 할 수 있습니다.

Delphi 도움말 파일에 따르면 Windows.getCursorpos가 실패 할 수 있습니다. Mouse.cursorpos는 실패하면 eoSexception을 높이기 위해 이것을 랩핑합니다.

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;

다른 팁

Mouse.CursorPos 속성을 말할 것이다 당신 현재 의 위치 마우스입니다.컴퓨터가 느리게 실행되는 경우,또는 당신의 프로그램은 느리에 대응하는 메시지를,그것은 동일하지 않을 수 있습으로 위치를 쥐었을 때 OnClick 이벤트가 발생했습니다.의 위치를 얻을하는 마우스 시간에 마우스 단추를 클릭한, 용 GetMessagePos.그것은 보고서 화면 좌표;번역을 클라이언트와 좌표 TImage.ScreenToClient.

대안을 처리하는 것입 OnMouseDownOnMouseUp 이벤트 자;그들의 매개 변수를 포함합니다.기억 모두 이벤트 발생해야에서 주문 클릭 이 발생합니다.할 수도 있습을 검색 끌어 작업 때문에,당신은 아마 없을 고려하고 싶을 끌어로 계산 을 클릭합니다.

다른 사람들이 말했듯이 Mouse.cursorpos 또는 GetCursorPos 기능을 사용할 수 있지만 OnMousedown 또는 OnMouseUp 이벤트를 OnClick 대신 처리 할 수도 있습니다. 이렇게하면 추가 기능 호출을 할 필요없이 x 및 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;

이것을 온라인에서 한 번 찾아 내고 내 CodesNippet DB에 저장했습니다 :)

이 페이지 그러나 모든 질문을 해결할 것입니다 ... 클라이언트에서 스크린 좌표로 이동하는 기능이있는 것으로 보입니다.

행운을 빕니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top