Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 815

•  TDictionary Custom Sort  5 921

•  Fast Watermark Sources  5 724

•  3D Designer  8 507

•  Sik Screen Capture  6 062

•  Patch Maker  6 502

•  Айболит (remote control)  6 492

•  ListBox Drag & Drop  5 354

•  Доска для игры Реверси  95 046

•  Графические эффекты  6 696

•  Рисование по маске  5 830

•  Перетаскивание изображений  4 877

•  Canvas Drawing  5 252

•  Рисование Луны  4 974

•  Поворот изображения  4 522

•  Рисование стержней  3 201

•  Paint on Shape  2 446

•  Генератор кроссвордов  3 319

•  Головоломка Paletto  2 630

•  Теорема Монжа об окружностях  3 423

•  Пазл Numbrix  2 258

•  Заборы и коммивояжеры  2 917

•  Игра HIP  1 885

•  Игра Go (Го)  1 802

•  Симулятор лифта  2 141

•  Программа укладки плитки  1 868

•  Генератор лабиринта  2 308

•  Проверка числового ввода  1 993

•  HEX View  2 306

•  Физический маятник  1 965

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Вызов контекстного меню в позиции курсора 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;








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте