Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

Delphi , Компоненты и Классы , Меню

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

Автор: Ed Jordan

У меня есть проблема с правильным вызовом контекстного меню в координатах курсора мыши.

Это будет работать:


procedure TForm1.Form1MouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    with ( Sender as TControl ).ClientToScreen( Point( X, Y )) do
      PopupMenu1.Popup( X, Y );
end;

Here's the translation of the text into Russian:

Классическая проблема контекстного меню! Ваш код почти готов, но имеет несколько проблем: 1. Метод PopupMenu1.Popup ожидает координаты в пространстве экрана, а не клиентском. 2. Вы используете Point(X, Y) для создания объекта точки, что является правильным, но должны передавать этот объект в ClientToScreen, а не координаты отдельно.

Вот исправленный код:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    PopupMenu1.Popup(ScreenToClient(Point(X, Y)));
end;

В этом коде используется ScreenToClient, чтобы преобразовать точку из координат экрана в клиентские координаты. Это обеспечивает, что контекстное меню будет отображаться на правильной позиции относительно формы. Также обратите внимание, что ScreenToClient возвращает объект типа TPoint, поэтому мы можем передавать его напрямую в PopupMenu1.Popup. Нет необходимости создавать еще один объект точки!

В статье автор Ed Jordan описывает решение проблемы вызова контекстного меню в координатах курсора мыши с помощью процедуры TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer).


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Меню ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 19:16:39/0.0066690444946289/2