Советы по Delphi

         

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


...вызов 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;

[001503]



Содержание раздела