Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Выпадание контекстного меню возле нужного элемента управления

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

Выпадание контекстного меню возле нужного элемента управления

Автор: Дремучий
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Выпадание popup-меню возле нужного TWinControl~a

можно по клику на контрол(обычно какая-то кнопка) или по событию
вызывать popup-меню возле нужного контрола.

Зависимости: SysUtils
Автор:       Дремучий, sopilko@yahoo.com
Copyright:   нечто похожее видел в RxLib
Дата:        08 мая 2002 г.
***************************************************** }

procedure Popup(Sender: TWinControl; pm: TPopupMenu);
var
  xPoint: TPoint;
begin
  GetParentForm(TWinControl(Sender)).SendCancelMode(nil);
  pm.PopupComponent := TWinControl(Sender);
  xPoint := Point(-1, TWinControl(Sender).Height);

  with TWinControl(Sender).ClientToScreen(xPoint) do
    pm.Popup(x, y);
end;

// Пример использования:
// нажатие на кнопку btnResplan

procedure TfmResplan.btnResplanPrintClick(Sender: TObject);
begin
  Popup(Sender, pmPrint);
end;

Перевод на русский язык:

Этот фрагмент кода на Delphi демонстрирует, как реализовать контекстное меню (попап-меню) вблизи конкретного контрола при его клике или срабатывании события. Процедура Popup принимает два параметра: Sender, который является контролом, инициировавшим всплывающее меню, и pm, которое является самим всплывающим меню.

Вот разбивка на части кода:

  1. Процедура Popup:
    • Она принимает два параметра: Sender, который является контролом, инициировавшим всплывающее меню, и pm, которое является самим всплывающим меню.
    • Она вызывает метод GetParentForm для получения формы родительского окна, связанного с TWinControl (сендером).
    • Она устанавливает свойство PopupComponent всплывающего меню на TWinControl, инициировавший его.
    • Она рассчитывает координаты для всплывающего меню, вызывая метод ClientToScreen на TWinControl, который конвертирует клиентские координаты (относительные к прямоугольнику контрола) в экранные координаты. X-координата устанавливается в -1, а Y-координата - в высоту TWinControl.
    • Наконец, она вызывает метод Popup на всплывающем меню с рассчитанными координатами.
  2. Пример использования:
    • Он определяет обработчик события для события btnResplanPrintClick.
    • Когда это событие срабатывает (т.е., когда кнопка кликается), он вызывает процедуру Popup, передавая себя (Sender) и pmPrint в качестве параметров.
    • Это отобразит всплывающее меню вблизи контрола btnResplan.

Вместо этого можно использовать метод PopupMenu.Popup с свойствами Position.X и Position.Y, чтобы указать координаты, где должно появиться всплывающее меню. Однако это потребует более ручных расчетов координат на основе позиции контрола.

Вот обновленная версия кода, использующая свойства Position.X и Position.Y:

procedure TfmResplan.btnResplanPrintClick(Sender: TObject);
begin
  pmPrint.Popup(TWinControl(Sender).Left + (TWinControl(Sender).Width div 2),
               TWinControl(Sender).Top + (TWinControl(Sender).Height div 2));
end;

В этой версии всплывающее меню позиционируется в центре контрола btnResplan. Вы можете адаптировать эти расчеты, чтобы позиционировать меню вблизи контрола в соответствии с вашими потребностями.

В статье описывается способ вызова контекстного меню (popup-меню) рядом с необходимым элементом управления в приложении на языке Delphi.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:04:17/0.0056209564208984/1