Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

Рисунок 8.12. Пункты-переключатели в меню

Шаг 11. В ответ на выбор пользователем пунктов Toolbar и Status bar будем переключать флажок. Вы уже знаете, как определить обработчик события OnClick для пункта меню, поэтому сразу приведем то, что вы должны получить:

procedure TPictureForm.ToolBarMenuItemClick(Sender: TObject); begin

// Спрятать или показать панель инструментов

ToolBarMenuItem.Checked := not ToolBarMenuItem.Checked; end;

procedure TPictureForm.StatusBarMenuItemClick(Sender: TObject); begin

// Спрятать или показать строку состояния

StatusBarMenuItem.Checked := not StatusBarMenuItem.Checked; end;

Готово, соберите проект и проверьте, что пункты Toolbar и Status bar стали работать как переключатели. Позже, когда вы создадите в своем приложении строку состояния и панель инструментов, мы допишем эти обработчики событий. А сейчас рассмотрим еще один тип пунктов меню — взаимоисключающие переключатели.

8.1.9. Взаимоисключающие переключатели

Кроме обычных переключателей в меню широко применяются взаимоисключающие переключатели. Такие пункты работают согласовано

— включение одного из них означает выключение остальных. В нашем

348

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

Шаг 12. Добавьте в меню View три пункта: Half Size (программное имя

HalfSizeMenuItem), Normal Size (программное имя NormalSizeMenuItem) и Double Size (программное имя DoubleSizeMenuItem), отделив их от остальных пунктов меню с помощью разделительной линии.

Шаг 13. Объедините только что созданные пункты меню в одну согласовано работающую группу. Для этого у всех пунктов установите одинаковое ненулевое значение свойства GroupIndex (например, 1). Кроме того, установите для всех этих пунктов свойство RadioItem в значение True, чтобы метка имела вид жирной точки. Один из пунктов (например, Normal Size) переведите во включенное состояние, установив его свойство Checked в значение True (рисунок 8.13).

Рисунок 8.13. Взаимоисключающие переключатели в меню

Шаг 14. Чтобы привести в действие механизм переключения пунктов, определите в них следующие обработчики события OnClick:

procedure TPictureForm.HalfSizeMenuItemClick(Sender: TObject); begin

// Показать рисунок половинного размера

HalfSizeMenuItem.Checked := True; end;

349

procedure TPictureForm.NormalSizeMenuItemClick(Sender: TObject); begin

// Показать рисунок нормального размера

NormalSizeMenuItem.Checked := True; end;

procedure TPictureForm.DoubleSizeMenuItemClick(Sender: TObject); begin

// Показать рисунок двойного размера

DoubleSizeMenuItem.Checked := True; end;

Выполнив компиляцию, запустите программу и проверьте, что новые пункты меню работают как взаимоисключающие переключатели.

8.1.10. Недоступные пункты меню

Некоторые пункты меню могут быть недоступны пользователю в тот или иной момент времени. Такие пункты выглядят блеклыми, а попытки их выбрать ни к чему не приводят. Согласитесь, что легче запретить выбор отдельных пунктов меню, чем программировать логику поведения на случай, когда пользователь выбрал неправильную команду.

Шаг 15. В нашем примере логично было бы сделать недоступными пункты

Save As..., Close, а также Half Size, Normal Size и Double Size, когда нет открытого графического файла. Для этого в каждом из указанных пунктов меню установите свойство Enabled в значение False (рисунок 8.14).

Рисунок 8.14. Недоступные пункты меню

350

Шаг 16. Во время работы приложения нужно еще динамически делать пункты меню доступными или недоступными в зависимости от того, открыт графический файл или нет. Так как эти действия достаточно универсальны, оформим их в виде отдельного метода EnableCommands:

type

TPictureForm = class(TForm)

...

private

{ Private declarations }

procedure EnableCommands(Enable: Boolean); end;

...

procedure TPictureForm.EnableCommands(Enable: Boolean); begin

SaveAsMenuItem.Enabled := Enable;

CloseMenuItem.Enabled := Enable; HalfSizeMenuItem.Enabled := Enable; NormalSizeMenuItem.Enabled := Enable; DoubleSizeMenuItem.Enabled := Enable;

end;

Параметр Enable данного метода определяет, в какое состояние перевести пункты меню: доступны — True или недоступны — False.

Шаг 17. Создайте обработчики команд Open... и Close. Как вы понимаете, в обработчик команды меню Open... следует поместить вызов метода EnableCommands с параметром True, а в обработчик команды Close — вызов метода EnableCommands с параметром False:

procedure TPictureForm.OpenMenuItemClick(Sender: TObject); begin

// Открыть рисунок и разрешить команды

EnableCommands(True);

end;

procedure TPictureForm.CloseMenuItemClick(Sender: TObject); begin

// Закрыть рисунок и запретить команды

EnableCommands(False);

end;

Выполните компиляцию и запустите программу. Посмотрите, как изменилось ее меню (рисунок 8.15).

351

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]