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

Проектирование строки состояния

Строка состояния (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: