Читайте также:
|
|
Строка состояния (status bar) — это панель в нижней части окна, предназначенная для вывода вспомогательной информации: параметров документа, с которым работает пользователь, подсказок к пунктам меню и т. д. В C++Builder она организуется с помощью компонента StatusBar, расположенного в палитре компонентов на странице Win32 (см. рис.).
Шаг 34. Опустите компонент на форму и дайте ему имя StatusBar. Следующая таблица (4.8) знакомит вас с основными свойствами компонента StatusBar.
Таблица 4.8. Важнейшие свойства компонента StatusBar.
Свойство | Описание |
Align Panels SimplePanel SimpleText SizeGrip | Способ выравнивания строки состояния в пределах владельца (формы или компонента). Информационные панели, отображаемые на строке состояния. Если равно true, то вместо информационных панелей на строке состояния отображается одна простая строка текста, хранящаяся в свойстве SimpleText. Строка текста, отображаемая в строке состояния, когда свойство SimplePanel равно true. Если равно true, то в правом нижнем углу строки состояния рисуется "гармошка" работающая как размерная рамка. |
Как только вы добавили на форму строку состояния, она тут же прижимается к нижнему краю формы и растягивается по всей ее ширине (см. рис.).
Измените ширину формы. Строка состояния тоже корректирует свою ширину и всегда занимает всю нижнюю часть формы. Такое поведение обеспечивает свойство Align, которое в компоненте StatusBar по умолчанию установлено в значение alBottom. Свойство Align есть во многих визуальных компонентах C++Builder. С его помощью вы можете заставить компонент подгонять свои размеры и положение при изменении размеров своего владельца (формы или компонента, на которых он находится). Возможные значения свойства Align описаны в таблице 9.
Таблица 9. Значения свойства Align.
Значение | Описание |
АlNone alTop alBottom alLeft alRight alClient | Позиция и размеры компонента остаются неизменными в пределах владельца. Компонент прижимается к верхнему краю владельца и растягивается по всей его ширине. Компонент прижимается к нижнему краю владельца и растягивается по всей его ширине. Компонент прижимается к левому краю владельца и растягивается по всей его высоте. Компонент прижимается к правому краю владельца и растягивается по всей его высоте. Компонент подгоняется под размеры владельца. |
Обратите внимание, что некоторые компоненты могут содержать другие компоненты, и свойство Align дает возможность не вычислять заново координаты компонент при изменении размеров формы.
Шаг 35. Приспособим строку состояния для отображения размеров картинки и имени файла, в котором картинка хранится на диске. С этой целью разобьем строку состояния на две информационные панели. Выберите в инспекторе объектов свойство Panels и щелчком мыши на многоточии в значении свойства откройте редактор панелей:
Шаг 36. В этом окне создаются, редактируются и удаляются панели строки состояния. Создайте первую панель щелчком на кнопке Add и установите ее свойства так, чтобы она получилась шириной 70 пикселов (Width = 70), продавленной (Bevel = plLowered) и с центрированным текстом (Alignment = taCenter). В этой панели будут отображаться размеры картинки:
Шаг 36.1. Аналогично создайте вторую панель неограниченной ширины (Width = -1), продавленной (Bevel = lpLowered) и с прижатым влево текстом (Alignment = taLeftJustify). В ней будет отображаться имя файла:
Шаг 36.2. Закройте редактор панелей. Строка состояния проектирована. Теперь можно вывести на нее текст. Доступ к панелям обеспечивает свойство Panels строки состояния. Объект Panels содержит массив Items, элементами которого являются объекты-панели. Каждая панель имеет свойство Text, в котором хранится отображаемый на панели текст. Установка содержимого строки состояния в нашем примере будет выглядеть так:
StatusBar->Panels->Items[0]->Text =
IntToStr(Image->Picture->Width)+ " х " +
IntToStr(Image->Picture->Height);
StatusBar->Panels->Items[1]->Text = OpenDialog->FileName;
Для вывода информации на первую панель (с индексом 0) ипользуется функция IntToStr, преобразующая целое число в строку. Перегруженная операция сложения объединяет строки в единую строку.
Шаг 37. Обновление строки состояния оформите в виде личного (private) член-функции UpdateStatusBar() класса TPictureForm. В заголовочном файле формы вставьте в часть private класса объявление этой функции:
А саму функцию вставьте в конец файла Main.cpp:
//-----------------------------------------
void TPictureForm:: UpdateStatusBar()
{
if (Image->Width!= 0) //в компоненте Image есть картинка
{
StatusBar->Panels->Items[0]->Text = IntToStr(Image->Picture->Width)+" х " + IntToStr (Image->Picture->Height);
StatusBar->Panels->Items[1]->Text=
OpenDialog->FileName;
}
else // в компоненте Image нет картинки
{
StatusBar->Panels->Items[0]->Text = "";
StatusBar->Panels->Items[1]->Text = "";
}
}
Шаг 38. Разберитесь с работой функции. Функция будет отображать в строке состояния информацию в том случае, если в компоненте Image есть картинка, что соответствует ненулевому значению свойства Width.
Вызовы функции UpdateStatusBar() поместите в обработчики команд меню Open... и Close:
Дата добавления: 2015-10-28; просмотров: 134 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Диалоговые окна открытия и сохранения файла | | | Подсказки на строке состояния |