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

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

файла, пункт меню "Вычислить" надо сделать доступным, а пункты "График экспериментальных точек" и "Подобранная кривая" по-прежнему недоступны-

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

"График экспериментальных точек" и "Подобранная кривая" становятся дос-

тупными.

6.3.11.2. Компонент TToolBar

Если в вашей программе имеется достаточно большое и разветвленное ме-

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

ним из удобств, предоставляемых пользователю, будет наличие кнопки для бы-

строго доступа к этой операции. В сколько-нибудь больших программах обыч-

но требуется разместить несколько кнопок быстрого доступа. Однако если они разбросаны по разным местам, то это затрудняет работу пользователя. Чаще всего кнопки быстрого доступа объединяют в виде инструментальной панели.

Компонент TToolBar представляет собой как раз панель для размещения кнопок быстрого доступа. В принципе в этот компонент можно вставлять лю-

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

держит в себе специальный компонент TToolButton – инструментальная кнопка. Для того чтобы поместить инструментальную кнопку в TToolBar на-

жмите правую клавишу мыши и выберите пункт NewButton, рис. 6.94.

Рис. 6.94. Добавление новой кнопки

736

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Изображение на кнопке задается свойством ImageIndex и определяет индекс изображения в компоненте TImageList. В момент выполнения при-

ложения некоторые кнопки на инструментальной панели по тем или иным при-

чинам могут быть недоступны, например, до выполнения определенных усло-

вий. Программист может для этих кнопок указать другие изображения. Для этого нужно поместить на форму еще один компонент TImageList и в свой-

стве DisabledImages указать его имя. Точно так же свойство HotImages

позволяет указать контейнер изображений для кнопок, когда над ними прохо-

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

New Checkbutton задает разновидность кнопки, которая после нажатия на нее остается в нажатом состоянии. Это так называемая западающая кнопка.

Чтобы отжать ее необходимо нажать на нее еще раз.

New Separator задает разделитель (сепаратор). Позволяет разделить группы кнопок по функциональному назначению. Во время выполнения при-

ложения на этом месте появляются две вертикальные линии.

New Divider тоже разделитель, но в момент выполнения появляется од-

на вертикальная линия.

Этим четырем разновидностям кнопок соответствуют следующие значения свойства Style:

tbsButton – обычная инструментальная кнопка;

tbsCheck – западающая кнопка;

tbsSeparator – двойной разделитель;

tbsDivider – одинарный разделитель.

Кроме того, свойство Style имеет еще одно значение tbsDropDown.

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

737

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

ImageIndex, Hint, Enabled, Visible, то все эти свойства автоматически присвоятся и данной кнопке.

Свойство Caption позволяет вывести рядом с кнопкой некоторый текст,

при этом текст будет виден, если свойство ShowCaptions компонента

TToolBar установлено в true. Обычно в инструментальных панелях тексты кнопок не показывают, но тогда важное значение приобретает свойство Hint

(подсказка). Ведь даже если рисунок кнопки достаточно информативен, поль-

зователю иногда бывает трудно определить, для чего предназначена эта кнопка.

Свойство Hint: string позволяет вывести всплывающую подсказку при наведении на кнопку указателя мыши. Подсказка будет показана при условии,

что свойство ShowHint= true.

Свойство Wrap позволяет управлять размещением кнопок в несколько ря-

дов. Если вам необходимо, чтобы после текущей кнопки следующая кнопка располагалась в новом ряду, вам нужно установить свойство Wrap текущей кнопки в true.

Давайте доработаем предыдущую программу. Поместите на форму компо-

нент и спроектируйте вид инструментальной панели как показано на рис. 6.95.

Рис. 6.95. Вид инструментальной панели приложения

Очень важно иметь в виду, что панель инструментов мы создали для того чтобы продублировать некоторые пункты меню (в нашем случае все). Обработ-

чики событий OnClick для этих пунктов уже существуют и, поэтому, нет ни-

какой необходимости писать новые обработчики! Для каждой кнопки просто укажите имена уже готовых обработчиков. Например, выделите первую инст-

рументальную кнопку. Она будет дублировать пункт меню Файл->Открыть.

738

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

В инспекторе объектов во вкладке События в строке OnClick нажмите на кнопку с треугольником и выберите необходимый обработчик, рис. 6.96.

Рис. 6.96. Выбор нужного обработчика

В коде программы произойдут минимальные изменения. В обработчике

OnCreate формы добавьте операторы:

TB_Calculate.Enabled:= false;

TB_Graf_Exp.Enabled:= false;

TB_Graf_Curve.Enabled:= false;

Чтобы три последние кнопки были недоступны. В обработчике

Menu_OpenClick после оператора

MCalculate.Enabled:= true;

добавьте оператор

TB_Calculate.Enabled:= true;

А в обработчике MCalculateClick после оператора

Menu_Curve.Enabled:= true;

739

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