БОЛЬШОЙ FAQ ПО DELPHI



Вызов контекстного меню в позиции курсора 2

...вызов popup-меню связан с координатами экрана. Координаты, получаемые в вашем обрабочике события, вероятно относятся к объекту, который создал это сообщение. Для преобразования координат вам необходимо воспользоваться функцией ClientToScreen.

Вот пример вызова контекстного меню, вызываемого при щелчке правой кнопкой мыши на узле TTreeView. Этот пример не в точности отвечает на ваш вопрос, но у меня нет желания расчитывать wParams прямо сейчас. Я думаю вы можете воспользоваться предложенной мною идеей и развить ее в нужном направлении.


 procedure TfrmExplorer.TreeViewMouseDown(Sender: TObject;
   Button: TMouseButton;
   Shift: TShiftState;
   X, Y: Integer);
 var
   P: TPoint;
 begin
   if Button <> mbRight then
     exit;
   TreeMenu.AutoPopup := False;
   if TreeView.GetNodeAt(X, Y) <> nil then
   begin
     TreeView.Selected := TreeView.GetNodeAt(X, Y);
     P.X := X;
     P.Y := Y;
     P := TreeView.ClientToScreen(P);
     TreeMenu.Popup(P.X, P.Y);
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ