Контекстное всплывающее меню — компонент PopupMenu
Страница Standard
Контекстное меню привязано к конкретным компонентам. Оно всплывает, если во время, когда данный компонент в фокусе, пользователь щелкнет правой кнопкой мыши. Обычно в контекстное меню включают те команды главного меню, которые в первую очередь могут потребоваться при работе с данным компонентом.
Контекстному меню соответствует компонент PopupMenu. Поскольку в приложении может быть несколько контекстных меню, то и компонентовPopupMenu может быть несколько. Оконные компоненты: панели, окна редактирования, а также метки и др. имеют свойствоPopupMenu, которое по умолчанию пусто, но куда можно поместить имя того компонентаPopupMenu, с которым будет связан данный компонент.
Формирование контекстного всплывающего меню производится с помощью Конструктора Меню, вызываемого двойным щелчком на PopupMenu, точно так же, как это делалось для главного меню. Обратим только внимание на возможность упрощения этой работы. Поскольку разделы контекстного меню обычно повторяют некоторые разделы уже сформированного главного меню, то можно обойтись копированием соответствующих разделов. Для этого, войдя в Конструктор Меню из компонентаPopupMenu, щелкните правой кнопкой мыши и из всплывшего меню выберите командуSelect Menu(выбрать меню). Вам будет предложено диалоговое окно, в котором вы можете перейти в главное меню. В нем вы можете выделить нужный вам раздел или разделы (при нажатой клавише Shift выделяются разделы в заданном диапазоне, при нажатой клавише Ctrl можно выделить совокупность разделов, не являющихся соседними). Затем выполните копирование их в буфер обмена, нажав клавиши Ctrl-C. После этого опять щелкните правой кнопкой мыши, выберите команду Select Menu и вернитесь в контекстное меню. Укажите курсором место, в которое хотите вставить скопированные разделы, и нажмите
клавиши чтения из буфера обмена — Ctrl-V. Разделы меню вместе со всеми их свойствами будут скопированы в создаваемое вами контекстное меню.
В остальном работа с PopupMenu не отличается от работы сMainMenu. Только не возникает вопросов объединения меню разных форм: контекстные меню не объединяются.
Инструментальные панели Компонент ToolBar
Страница Win32
Инструментальная панель для быстрого доступа к часто используемым функциям приложения с помощью инструментальных быстрых кнопок
Align:TAlign, где TAlign =(alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom) – Определяет способ выравнивания панели (по умолчанию alTop).Если вы хотите, чтобы панель располагалась иначе, установитеAlign = alNone, после чего можете придать панели любую форму и расположить ее в любом месте.
Buttons [Index: Integer]: TToolButton– Индексированный список объектов кнопок
Wrapable: Boolean – Определяет возможность автоматического образования новых рядов инструментальных кнопок, если они не помещаются на компоненте в один ряд. По умолчанию –True.
EdgeInner TEdgeStyle, где TEdgeStyle = (esNone, esRaised, esLowered) – Стиль изображения внутренней части панели (утопленный, выступающий или плоский)
EdgeOuter : TEdgeStyle, где TEdgeStyle = (esNone, esRaised, esLowered)Стиль изображения внешней части панели (плоский , выступающий или утопленный)
Images : TCustomImageList– определяет список изображений, которые могут появляться на кнопках.
Занесение компонентов на панель ToolBarможно, в принципе, осуществлять обычным способом — переносом их из палитры компонентов. Но для занесения кнопок имеется и более простой вариант. Щелкните наToolBar правой кнопкой мыши и выберите из всплывшего меню команду New Button. На форме появится очередная кнопка — объект типаTToolButton. Это не совсем обычная кнопка, так как в дальнейшем вы увидите, что внешне она может не походить на кнопку.
Свойства класса TToolButton
Style:TToolButtonSyle, гдеTToolButtonSyle= (tbsButton, tbsCheck, tbsDropDown, tbsSeparator, tbsDivider) – опеределяет вид и поведение кнопки.(по умолчаниюStyle =tbsButton — кнопка).
Как кнопка этот объект очень похож на кнопку SpeedButton. Только изображение на кнопке определяется не свойствомGlyph, а свойствомImagelndex. Оно определяет индекс изображения, хранящегося во внешнем компонентеImageList. Указание на этот компонент может задаваться такими свойствами компонентаToolBar, как Images, DisabledImages(указывает на список изображений кнопок в недоступном состоянии) иHotImages(указывает на список изображений кнопок в моменты, когда над ними перемещается курсор мыши).
Значение tbsDropDown соответствует кнопке в виде выпадающего списка. Этот стиль удобен для воспроизведения выпадающего меню. Если для подобной кнопки задать в качестве свойстваMenuItem головной раздел меню, то в выпадающем списке автоматически будут появляться разделы выпадающего меню.
При Style =tbsDropDown можно вместо свойстваMenultem задать свойствоDropDownMenu, определяющее контекстное меню (компонентРорирМеnu) которое будет отображаться в выпадающем списке.
Значение Style = tbsSeparator приводит к появлению разделителя, позволяющего отделить друг от друга кнопки разных функциональных групп.
Значение Style = tbsDivider приводит к появлению разделителя другого типа — в виде вертикальной линии. Разделитель можно ввести и из контекстного менюToolBar, выбрав команду New Separator.
Значение Style =tbsCheck определяет, что после щелчка пользователя на кнопке она остается в нажатом состоянии. Повторный щелчок на кнопке возвращает ее в отжатое состояние. Поведение такой кнопки подобно кнопкамSpeedButton и определяется аналогичными свойствамиAllowAllUp (разрешение отжатого состояния всех кнопок группы) иDown (исходное состояние — нажатое).
Если при этом в нескольких кнопках установлено свойство Grouped = true, то эти кнопки образуют группу, из которой только одна кнопка может находиться в нажатом состоянии.
MenuItem : TMenuItem – позволяет задать раздел главного или контекстного меню, который дублируется данной кнопкой. При установке этого свойства, если в соответствующем разделе меню было задано изображение и установлен текст подсказок (свойствоHint), то это же изображение появится на кнопке и тот же текст появится в свойствеHint кнопки. Передадутся из раздела меню в кнопку также значения свойствEnabled (доступность) иVisible(видимость). Правда, все это передастся в кнопку только в момент установки свойстваMenultem. Если в процессе дальнейшего проектирования вы измените соответствующие свойства раздела меню, это не отразится на свойствах кнопки. Но если вы сотрете значениеMenuItem, а потом установите его снова, то в кнопке зафиксируются новые значения свойств раздела меню.
Wrap : Boolean, установленное вtrue, приводит к тому, что после этой кнопки ряд кнопок на панели прерывается, и следующие кнопки размещаются в следующем ряду.
Indeterminate :Boolean – задает ее третье состояние — не нажатая и не отпущенная. Это свойство можно устанавливать вtrue во время выполнения, если в данном режиме кнопка не доступна.
Marked :Boolean определяет выделена ли кнопка.
Мы рассмотрели занесение на панель кнопок. Но в инструментальных панелях нередко используются и выпадающие списки. Например, для задания размера шрифта. Не представляет труда перенести на панель ТооllBaг такие компоненты, какСоmbоВох,SpinEdit и др.
