Delphi компоненты страница StandartКомпонент Delphi PopupMenu |
Уроки Delphi
1. Первая программа
2. Использование компонентов
3. События Delphi
4. Типы данных Delphi
5. Создание своих типов данных
6. Выражения и операторы
7. Работа с файлами в Delphi
8. Дополнительные формы
9. Подпрограммы в Delphi
10. Исключительные ситуации
11. Взаимодействие приложения с пользователем
12. Указатели в Delphi
13. Обзор компонентов
14. Работа со строками
15. Создание интерфейса
16. Графика в Delphi
17. Многопоточность в Delphi
18. Динамическое создание
компонентов Поиск по сайту Это важно:
Метод Application.ProcessMessages;
Это полезно:
Параметр Sender в обработчиках событий;
Бояться не надо |
Контекстное меню (PopupMenu), вызываемое в приложении Windows по щелчку правой кнопкой мыши, является стандартной и удобной возможностью многих программ. Delphi компонент PopupMenu предназначен для создания таких контекстных меню. Контекстное меню из-за способа своего появления называют ещё всплывающим меню. В момент появления контекстного меню происходит событие onPopup компонента PopupMenu. В этот момент можно, исходя из анализа ситуации, внести необходимые изменения в его параметры. Щёлкнув по объекту правой кнопкой мыши, мы получим появление его контекстного меню, обеспеченного компонентом PopupMenu1, в точке произведённого щелчка. Но можно добиться его появления в любом нужном нам месте Формы. Достигается это использованием метода Popup компонента PopupMenu, при этом свойство Popup у соответствующего компонента (в данном случае StringGrid) нужно очистить. Для использования этого метода необходимо использовать событие щелчка правой кнопки мыши по объекту. И правильнее использовать именно отпускание кнопки, то есть событие onMouseUp нужного объекта. Метод Popup имеет параметры X и Y, соответствующие расстоянию точки щелчка по горизонтали и вертикали от верхнего левого угла экрана соответственно. То есть, можно добиться появления меню вообще за пределами Формы. Вот, попробуйте использовать такой код: procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then PopupMenu1.Popup(0, 0); //появление меню в точке (0, 0) end; Но и обработчик события onMouseUp тоже имеет параметры X и Y. Они соответствуют расстоянию точки щелчка по горизонтали и вертикали от верхнего левого угла уже Формы. Однако, если попытаться использовать их в методе Popup, то меню не появится в том месте, где вы ожидаете. Чтобы добиться нужного эффекта, необходимо учитывать также положение самой Формы, а также того объекта, в пределах которого должно появляться меню. Но и это не всё. Необходимо к значению X добавить высоту заголовка Формы, которая неизвестна. Все эти слагаемые усложняют код. Избавиться от большинства слагаемых поможет функция GetClientOrigin. Она вызывается без параметров и возвращает сдвиг клиентской области Формы относительно верхнего левого угла экрана в формате TPoint (точка, то есть запись с полями X и Y). Таким образом, остаётся учесть только положение нужного объекта. Следующий код обеспечивает появление меню именно в месте щелчка мышки по компоненту StringGrid1: procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var P: TPoint; begin P:=GetClientOrigin; if Button = mbRight then end; Обзор компонентов Delphi
В начало урока
Delphi компонент Label |
© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля |