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

•  DeLiKaTeS Tetris (Тетрис)  131

•  TDictionary Custom Sort  3 314

•  Fast Watermark Sources  3 064

•  3D Designer  4 823

•  Sik Screen Capture  3 318

•  Patch Maker  3 532

•  Айболит (remote control)  3 633

•  ListBox Drag & Drop  2 994

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

•  Графические эффекты  3 925

•  Рисование по маске  3 230

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

•  Canvas Drawing  2 734

•  Рисование Луны  2 559

•  Поворот изображения  2 165

•  Рисование стержней  2 161

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 226

•  Головоломка Paletto  1 764

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

•  Пазл Numbrix  1 682

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

•  Игра HIP  1 279

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

•  Симулятор лифта  1 471

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

•  Генератор лабиринта  1 542

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

•  HEX View  1 489

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

 
скрыть


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-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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