2015-01-20 9 views
0

enter image description hereDelphi кнопка мыши Координаты

Привет, я»ве 3 панели, состоящие из формы. Я назначил событие click для третьей панели для получения координат.

procedure TformMain.Panel3Click(Sender: TObject); 
var 
    pt : tPoint; 
begin 
    pt := Mouse.CursorPos; 
    ShowMessage('X : ' + IntToStr(pt.X) + ' & Y : ' + IntToStr(pt.Y)); 
end; 

Этот код работает, но я не знаю, как Y координировать. начиная с начала панели 3. Я имею в виду, когда я нажимаю на верх панели панели, это координата должна быть 0.

Спасибо, что проконсультировали.

p.s. : У моей формы есть главное меню, поэтому я попытался вычесть высоту панели1 из pt.y, но я не смог получить высоту главного меню.

+1

Что-то вроде этого 'ptFromPanel3: = panel3.ScreenToClient (pt);'? –

+1

Использовать ScreenToClient – SimaWB

+0

Да, я использовал ScreenToClient и вычитал panel1.Height, тогда он работает. Спасибо всем :) – Dauezevy

ответ

4

Почему бы вам не использовать OnMouseDown event и OnMouseUp event.

Вместо OnClick событие, которое уже предоставить вам X, Y координаты щелчка мыши/выпуска, не говоря уже с информацией, о которой была использована кнопка мыши и состояния специальных клавиш, как Сдвига, CTRL и ALT.

Для лучшего объяснения того, какую информацию предоставляют эти события, проверьте TMouseEvent documentation.

+0

Я использовал все события мыши, щелкнул колесо перетаскивания. – Dauezevy

+1

Тогда я верю, что было бы еще лучше, если бы вы использовали события OnMouseDown и MouseUp вместо OnClick – SilverWarior

+0

, вы правильно приятель, я понял это. огромное спасибо – Dauezevy

2

Для преобразования координат использовать ClientToScreen() и ScreenToClient() методы:

procedure TformMain.Panel3Click(Sender: TObject); 
var 
    pt: TPoint; 
begin 
    // Converting from screen coordinates into Sender (that's Panel3) 
    // client area coordinates 
    pt := TPanel(Sender).ScreenToClient(Mouse.CursorPos); 
    ShowMessage('X : ' + IntToStr(pt.X) + ' & Y : ' + IntToStr(pt.Y)); 
end; 
Смежные вопросы