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

•  DeLiKaTeS Tetris (Тетрис)  4 097

•  TDictionary Custom Sort  6 181

•  Fast Watermark Sources  5 982

•  3D Designer  8 864

•  Sik Screen Capture  6 319

•  Patch Maker  6 732

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

•  ListBox Drag & Drop  5 588

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

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

•  Рисование по маске  6 201

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

•  Canvas Drawing  5 485

•  Рисование Луны  5 191

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

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

•  Paint on Shape  2 585

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

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

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

•  Пазл Numbrix  2 352

•  Заборы и коммивояжеры  3 033

•  Игра HIP  1 991

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

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

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

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

•  Проверка числового ввода  2 108

•  HEX View  2 440

•  Физический маятник  2 065

 
скрыть

  Форум  

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

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