Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
146
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Компонент tPopupMenu

TObject-”TPersistent—”TComponent->TMenu->TPopupMenu

Модуль MENUS

Страница Палитры компонентов Standard

Этот компонент описывает всплывающее меню. В отличие от главного, соб­ственное меню такого типа может быть почти у каждого оконного элемента управления на форме (кроме переключателей), а также у самой формы.

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

(Pb) property AutoPopup: Boolean;

Для вызова этого меню из программы используйте метод:

procedure Popup(X, Y: Integer);

который показывает его, помещая в точку экрана (X,Y) точку панели меню, определенную свойством:

(Pb) property Alignment: TPopupAlignment;

TPopupAlignment = (paLeft, paRight, paCenter) ;

В зависимости от его значения в точке щелчка появится:

paLeft — левый верхний угол;

paRight — правый верхний угол;

paCenter — середина верхней стороны.

Разумеется, если нажатие произошло в самом низу экрана и развернуться вниз невозможно, меню автоматически будет сдвинуто вверх.

При вызове всплывающего меню перед его показом на экране программист извещается событием:

(Pb) property OnPopup: TNotifyEvent;

Одно и то же всплывающее меню могут разделять несколько компонентов. Свойство

property PopupComponent: TComponent ;

показывает, который из них инициировал меню (на котором был щелчок правой кнопки мыши). Если меню вызвано из метода Popup, значение этого свойства не определено, и присвоить ему значение должен сам прог­раммист.

Контекст помощи всплывающего меню задается свойством:

(Pb) property HelpContext: THelpContext;

Функции для работы с меню

Рассмотрим также описанные в модуле Menus полезные функции для управ­ления меню.

Четыре функции предназначены для преобразования типа TShortCut, пред­ставляющего горячую комбинацию клавиш:

а) в символ+состояние специальных клавиш и обратно:

procedure ShortCutToKey(Shortcut: TShortCut; var Key: Word;

var Shift: TShiftState);

function Shortcut(Key: Word; Shift: TShiftState): TShortCut;

б) в текст и обратно:

function ShortCutToText(Shortcut: TShortCut): string;

function TextToShortCut(Text: string): TShortCut;

Новые меню и их составные части можно создавать, пользуясь функциями:

function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMairiMenu;

Создает новое главное меню с именем AName и пунктами Items, которое будет принадлежать владельцу Owner.

function NewPopupMenu(Owner: TCoiriponent; const AName: string; Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuItem): TPopupMenu;

Создает новое всплывающее меню. Назначение дополнительных параметров см. описание TPopupMenu.

function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string; Items: array of TMenuItem): TMenuItem;

Создает новое подменю. Здесь AName — имя объекта, ACaption — его текст, hCtx — контекст системы помощи.

function Newltemfconst ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string):

Создает новый объект типа TMenuItem. Параметры метода соответствуют свойствам класса.

function NewLine: TMenuItem;

Создает новый элемент меню типа разделитель (TMenuItem с Caption = '-').

Все функции в случае успешного завершения возвращают указатель на соз­данный объект.

Кнопки

Группа элементов управления-кнопок в VCL велика и разнообразна. Здесь и стандартные кнопки Windows, и популярные в последнее время кнопки с картинками, и специальные кнопки для работы в модальных формах (диало­гах), и даже группы кнопок. Многие из них имеют одинаковые свойства, которые мы и рассмотрим сначала.

Основным событием, связанным с нажатием кнопки (любым способом) явля­ется:

(Pb) property OnClick: TNotifyEvent;

Под "любым способом" здесь подразумевается щелчок мышью, нажатие комбинации клавиши — акселератора, нажатие <Enter> или <Esc> (только для некоторых кнопок) или вызов метода Click из программы.

Текст кнопки, появляющийся на ее поверхности, определен в свойстве:

(Pb) property Caption: string;

Если в составе текста есть амперсанд ('&'), то следующий за ним символ используется в акселераторе, и нажатие комбинации клавиш <АН>+<символ> вызывает нажатие кнопки.

Водораздел среди кнопок проходит по тому, что именно означает нажатие. Ряд кнопок — TRadioButton, TCheckBox и группа TRadioGroup — предназ­начен для ввода или переключения фиксированных параметров, и прог­раммиста более интересует их состояние в некоторый момент времени, чем сам факт нажатия. Кнопки TButton, TSpinButton и TBitBtn напротив, как правило, своим нажатием инициируют немедленные действия. Кнопка TSpeedButton может успешно служить для решения обеих задач.

Как уже было сказано, нажатие влечет за собой OnClick. Но это не означает, что всегда нужно писать код для обработки всех нажатий. Например, исклю­чением из этого правила является использование кнопок в модальных формах.

Модальная форма, или модальный диалог — специальная разновидность окон Windows (и форм Delphi), предназначенная для ввода пользователем необ­ходимых программе данных или выбора одного ответа из нескольких вариантов. Обычно при этом ему предоставляется несколько кнопок, соответ­ствующих вариантам. Вплоть до получения ответа в модальном диалоге поль­зователь не может переключиться на другие окна той же задачи, а в системном модальном диалоге — и на другие задачи. Для использования в таких случаях предназначены стандартная кнопка Windows TButton и ее младшая сестра TBitBtn, отличающаяся только наличием картинки на ее поверхности. При их нажатии значение свойства ModalResult кнопки передается одноименному свой­ству формы, где такое изменение означает вывод формы из модального сос­тояния и ее закрытие:

(Pb) property ModalResult: TModalResult;

TModalResult = Low(Integer) ..High(Integer);

В модальной форме могут быть предусмотрены две специальные кнопки, со­ответствующие положительному и отрицательному решениям. Одна из них срабатывает при нажатии на клавиатуре <Enter>, другая — <Esc>. Любая кнопка может получить такой статус, установив в True соответственно одно из свойств:

(Pb) property Default: Boolean;

(Pb) property Cancel: Boolean;

У двух рассмотренных кнопок результат, который при нажатии кнопки пере­дается модальной форме, будет соответственно равен mrOk и mrCancel.

Ниже рассмотрим имеющиеся в распоряжении программиста варианты кнопок. Описанные выше свойства перечисляются, но не комментируются.

Компонент TButton

TObject-”TPersistent->TCornponent->TControl->TWinControl->

-*TButtonControl—>TButton

Модуль STDCTRLS

Страница Палитры компонентов Standard

Обычная кнопка Windows. В этом компоненте опубликованы только приве­денные выше свойства Default, Cancel, Caption, ModalResult и OnClick. Двойной щелчок на кнопке не предусмотрен.

Соседние файлы в папке Delphi