Читайте также:
|
|
Строка состояния — это еще стандартное место отображения подсказок к пунктам меню. Вспомните, как работает строка состояния текстового процессора Word. Когда вы активизируете меню, строка состояния, которая составлена из нескольких панелей, превращается в простую длинную панель и на ней отображается подсказка текущего пункта меню. Когда вы завершаете работу с меню (например, выбираете команду), строка состояния восстанавливает свой первоначальный вид.
Для того чтобы вы могли получить строку состояния с описанной выше логикой работы, в компоненте StatusBar предусмотрен режим отображения простого текста. Его обеспечивает булево свойство SimplePanel. По умолчанию оно равно false, и в строке состояния отображаются панели объекта Panels. Если установить свойство SimplePanel в значение true, то в строке состояния будет отображаться текст, хранящийся в свойстве SimpleText.
Таким образом, необходимо при выборе пункта меню записывать подсказку этого пункта в свойстве SimpleText компоненты StatusBar и, в том случае, если подсказка содержит текст, устанавливать свойство SimplePanel в значение true.
Для решения этой задачи вначале разберитесь с механизмом работы подсказок, который состоит в следующем. Каждый пункт меню имеет свойство Hint для хранения поясняющего текста (подсказки). Когда выбирается пункт меню с помощью мыши или клавиатуры, поясняющий текст переписывается из пункта меню в объект Application, у которого тоже есть свойство Hint. При этом в объекте Application возникает событие OnHint. В ответ на это событие нужно отобразить Hint объекта Application в строке состояния.
Шаг 39. Поскольку объект Application не виден в инспекторе объектов, вы должны сами объявить новый обработчик (функцию отклика на событие), полностью записать его программный код и назначить объекту Application. Для этого вставьте в заголовочный файл формы в части public следующее объявление функции:
Файл Main. h:
class TPictureForm: public TForm
{
...
public: // User declarations
void __fastcall ApplicationHint (TObject *Sender);
...
};
Затем в конец файла Main.сpp добавьте код самой функции:
Файл Main. cpp:
//--------------------------------------
void __fastcall TPictureForm:: ApplicationHint (TObject *Sender)
{
StatusBar->SimpleText = Application->Hint;
StatusBar->SimplePanel = StatusBar->SimpleText!= "";
}
//--------------------------------------
Обратите внимание на правую часть второго оператора. Результатом его будет значение true или false в зависимости от того будет ли свойство SimpleText компоненты StatusBar содержать текст или нет.
Шаг 40. Установка соответствия между обработчиком события и самим событием осуществляется присвоением свойству Application->OnHint имени функции обработчика события. Установку обработчика выполните при создании формы по событию OnCreate:
//--------------------------------------
void __fastcall TPictureForm:: FormCreate (TObject *Sender)
{
Application->OnHint = ApplicationHint;
}
//--------------------------------------
Шаг 41. Теперь в свойстве Hint каждого пункта меню впишите строку-подсказку. Например, для пункта Open… установите подсказку: «Вывод графического файла» (см.рис.).
Шаг 41.1. Скомпилируйте и запустите программу — вы получите приложение с полностью работающей строкой состояния (см. рис.).
Шаг 41.2. Для других пунктов меню установите подсказки самостоятельно.
Прокрутка
Последний вариант приложения имеет существенный недостаток: форма неправильно прокручивает свое содержимое, когда размеры картинки превышают размеры формы. Дело в том, что в прокрутке участвует и строка состояния, а этого быть не должно. Строка состояния должна оставаться на своем месте, прижимаясь к нижнему краю формы. Этого можно избежать с помощью прокрутки в отдельной прямоугольной области.
Дата добавления: 2015-10-28; просмотров: 151 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Проектирование строки состояния | | | Прокрутка в отдельной прямоугольной области |