Jak odczytać pozycja PopupMenu na formie.

0

Witam.

Jak można odczytać pozycję wyświetlanego PopupMenu na formie.
W przypadku kiedy PopupMenu jest malowane pod kursorem myszy to nie ma problemu,
ale w przypadkach kiedy jest rysowane np z lewej strony kursora myszy lub nad kursorem myszy.

Potrzebuję odczytać Left i Top okna PopupMenu.

Pozdrawiam
Janusz.

3

Właściwość TPopupMenu.PopupPoint zwraca współrzędne menu typu TPoint.

0

Dziękuje za pomoc.

Pozdrawiam
Janusz

1

Podana własność TPopupMenu.PopupPoint, oddaje pozycję rysowanego menu, ale wartości x i y są względem całego ekranu a nie formy.
Dlatego trzeba zrobić korektę współrzędnych przed narysowaniem czegoś na formie.


var  P: TPoint;
begin //
     p := popObu.PopupPoint;
     Caption := 'X : '+IntToStr(p.x)+'  Y : '+IntToStr(P.Y);
     cPanel1.Left := p.X - forma.Left;
     cPanel1.Top := P.Y - forma.Top;
     cPanel1.Visible := true;
end;

O ile trzeba jeszcze skorygować x i y aby uwzględnić różne BorderStyle.

2
dasej napisał(a):

Dlatego trzeba zrobić korektę współrzędnych przed narysowaniem czegoś na formie.

Jeśli właściwość zwraca współrzędne globalne to wystarczy je przetłumaczyć za pomocą metody ScreenToClient:

var
  P: TPoint;
begin
  P := ScreenToClient(popObu.PopupPoint);

Jeśli potrzebujesz w drugą stronę to jest też metoda ClientToScreen.

0

Dziękuję za odpowiedź. Działa perfekcyjnie.

Pozdrawiam
Janusz

1 użytkowników online, w tym zalogowanych: 0, gości: 1