Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕНЮ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
580.44 Кб
Скачать

Взаимоисключающие пункты-переключатели

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

Шаг 13. Добавьте в меню View три пункта: Half Size (программное имя HalfSizeltem), Normal Size (программное имя NormalSizeltem) и Double Size (программное имяDoubleSizeltem), отделив их от остальных пунктов меню с помощью разделительной линии.

Шаг 14. Прежде всего сделайте метку жирной точкой, установив в каждом новом пункте свойство Radioltem в значение Тше. Теперь объедините пункты меню в одну согласованно работающую группу, для этого в каждом пункте установите одинаковый ненулевой Grouplndex (например, 1). Один из пунктов (например, Normal Size) пометьте (рис. 16).

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

procedure TPictureForm.Half SizeItemClickfSender: TObject);

begin

HalfSizeItem.Checked := True;

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

end;

procedure TPictureForm.NormalSizeItemClick(Sender: TObject);

begin

NormalSizeItem.Checked := True;

{ Показать картинку нормального размера }

end;

procedure TPictureForm. DoubleSizeItemClick (Sender: TObject);

begin

DoubleSizeItem.Checked := True;

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

end;

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

Запрещенные пункты меню

Некоторые режимы работы приложения могут быть недоступны пользователю в тот или иной момент времени. Пункты меню, соответствующие недоступным режимам, делаются запрещенными. Запрещенные пункты выглядят тусклыми, и их выбор игнорируется.

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

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

type

TPictureForm = class(TForm)

private

procedure EnableCommands(Enable: Boolean);

end;

procedure TPictureForm. EnableCommands (Enable: Boqriean);

begin

SaveAsItem.Enabled := Enable;

Closeltem.Enabled := Enable;

HalfSizeltem.Enabled := Enable;

NormalSizeItem.Enabled := Enable;

DoubleSizeItem.Enabled := Enable;

end;

Параметр Enable данного метода регулирует, что именно нужно сделать: разрешить (значение True) или запретить (значение False) множество пунктов меню.

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

procedure TPictureForm.OpenItemClick(Sender: TObject);

begin

{ Открыть файл картинки и разрешить команды }

EnableCommands(True) ;

end;

procedure TPictureForm.CloseItemClick(Sender: TObject);

begin

{ Закрыть файл картинки и запретить команды }

EnableCommands(False);

end;

Скомпилируйте и запустите проект. Посмотрите, как изменилось меню приложения . В самом начале работы отдельные режимы выпадающих меню File и View запрещены. Выбор команды File | Open... разрешает их использование, а выбор команды File | Close — запрещает.

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