Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы ПП all-in-one.docx
Скачиваний:
10
Добавлен:
14.11.2019
Размер:
2.64 Mб
Скачать

Взаимоисключающие кнопки

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

Шаг 56. Чтобы сгруппировать кнопки HalfSizeBtn, NormalSizeBtn и DoubleSizeBtn, установите свойство GroupIndex каждой из них в одно и то же ненулевое значение, например, 1. Первую кнопку сделайте нажатой, установив ее свойство Down в значение true.

Обработка нажатий кнопок

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

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

void__fastcall TPictureForm::HalfSizeltemClick (TObject *Sender)

{

HalfSizeBtn->Down = true; // кнопка согласуется с пунктом меню

}

// -------------------------------------

void__fastcall TPictureForm::NormalSizeltemClick (TObject *Sender)

{

NormalSizeBtn->Down = true; // кнопка согласуется с пунктом меню

}

// -------------------------------------

void__fastcall TPictureForm::DoubleSizeltemClick (TObject *Sender)

{

DoubleSizeBtn->Down = true; // кнопка согласуется с пунктом меню

}

Шаг 58. Чтобы обеспечить динамическое разрешение и запрещение кнопок при открытии и закрытии файла картинки, скорректируйте еще метод EnableCommands:

void TPictureForm::EnableCoinmands (bool Enable)

{ …

SaveBtn->Enabled = Enable;

HalfSizeBtn->Enabled = Enable;

NormalSizeBtn->Enabled = Enable;

DoubleSizeBtn->Enabled = Enable;

}

После компиляции и запуска программы вы получите работаю­щую панель инструментов. Кноп­ка, соответствующая команде меню Save As..., сначала запрещена. Нажмите кнопку, соответствующую команде Open..., и выберите файл картинки. Когда картинка загрузится и отобразится, все кнопки станут разрешенными. Пона­жимайте кнопки, отвечающие за масштаб, и убедитесь, что они работают согласованно с командами меню (см. рис.).

Панель инструментов работает. Теперь добавьте подсказки к кнопкам.

Подсказки к кнопкам

Все визуальные компоненты C++Builder, в том числе и кнопки инструмен­тальной панели, могут иметь подсказки. Подсказки бывают двух видов: всплы­вающие подсказки и подсказки в строке состояния. Оба вида подсказок хранятся в значении одного и того же свойства — Hint. Формат свойства следующий:

<всплывающая подсказка> | <подсказка в строке состояния>

Если в программе организована строка состояния, то при попадании курсора мыши на визуальный компонент в ней автоматически отображается поясняю­щий текст, записанный справа от символа вертикальной черты. Это легко проверить. Впишите в свойстве Hint кнопки OpenBtn текст Open ...| Opens an existing picture file. После запуска программы вы обнаружите, что подсказка для кнопки работает точно так же, как и подсказка к пункту меню.

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

Шаг 59. В каждом визуальном компоненте существует булево свойство ShowHint, определяющее условие всплывания подсказки. Его значение может устанавли­ваться напрямую, а может копироваться из компонента-владельца. Копирова­ние значения у владельца происходит тогда, когда вспомогательное свойство ParentShowHint установлено в true. Таким образом, появлением подсказок можно управлять из владельца компоненты. Воспользуйтесь этой возможностью. Так как во всех компонентах свойство ParentShowHint по умол­чанию уже равно true, то просто установите в компоненте ToolBar (владелец кнопок) свойство ShowHint в true. В результате во всех кнопках свойство ShowHint тоже получит значение true, и это заставит их отображать свои подсказки.

Шаг 60. Впишите для каждой кнопки подсказку (это делается в свойстве Hint). Как вы знаете, свойство Hint может содержать сразу две подсказки: всплываю­щую подсказку и подсказку в строке состояния (они разделяются символом вер­тикальной черты). Если вторая кажется вам лишней, просто не набирайте ее (но символ вертикальной черты поставьте) (см. рис.).

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