Шаг 16.
Вкладка Win32. Компонент TStatusBar

    На этом шаге мы рассмотрим компонент TStatusBar.

    Компонент TStatusBar (Строка состояния) удобно использовать для отображения различной информации, полезной при выполнении программы. Строка состояния может иметь одну или несколько панелей для вывода текстовой информации.

    Возможность поддержки строкой состояния нескольких панелей определяет свойство SimplePanel типа Boolean. Если свойство имеет значение True, то строка состояния имеет только одну панель, и выводимый на ней текст можно задать через свойство SimpleText типа String. Если свойство SimplePanel имеет значение False (по умолчанию), то строка состояния имеет несколько панелей, и текст каждой из них устанавливается с помощью свойства Text типа String каждой панели.

    Свойство SizeGrip по умолчанию принимает значение True и лучше его оставлять в этом состоянии, тогда при изменении размеров формы будет изменяться и размер строки состояния.

    Для создания нескольких панелей и управления ими предназначено свойство Panels типа TStatusPanels, позволяющее обращаться к панелям строки состояния как к элементам массива, нумерация которых начинается с нуля. В процессе проектирования панели можно определять с помощью редактора панелей, как показано на рис.1. Редактор панелей вызывается обычным способом, принятым в Delphi: двойным щелчком мыши на строке состояния или на кнопке с многоточием на поле свойства Panels в инспекторе объектов.

   


Рис.1. Редактор панелей для строки состояния

    С компонентом связывается объект класса TStatusPanels, который определяет панели компонента. Каждая панель относится к классу TStatusPanel и имеет свойства, перечисленные в таблице.

    Свойства класса TStatusPanel.

Таблица 1. Свойства класса TStatusPanel
Свойство Описание
property Alignment: TAlignment; Определяет выравнивание текста относительно панели
property Bevel: TStatusPanelBevel; Определяет вид панели относительно поверхности строки
property Style: TStatusPanelStyle; Определяет способ отображения на панели информации; допустимы значения:
  • psText - на панели выводится текст из свойства Text (по умолчанию);
  • psOwnerDraw - вывод на панель информации (текстовой и графической) выполняется программно.
property Text: String; Содержит текст, отображаемый на панели
property Width: Integer; Задает ширину панели

    События компонента TStatusBar.

Таблица 2. События компонента TStatusBar
Событие Описание
property OnDrawPanel: TDrawPanelEvent; Возникает при необходимости прорисовки панели Panel, если ее свойство Style определено как psOwner: Rect - прямоугольник прорисовки
property OnResize: TNotifyEvent; Возникает при изменении размеров компонента

    Простая процедура для вывода информации о нажатии клавиши <Ins> и времени может выглядеть так.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Panels [1].Text := 'Время '+TimeToStr (Time);
  if GetKeyState (VK_Insert)=1 then
    StatusBar1.Panels [0].Text := 'Режим включен'
  else
    StatusBar1.Panels [0].Text := 'Режим выключен';
end;
Текст этого примера можно взять здесь.


Рис.2. Вывод информации о нажатии клавиши Ins и времени

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

    При управлении панелями строки состояния в процессе выполнения приложения кроме свойств, видимых в инспекторе объектов, можно дополнительно использовать свойство Count (число панелей в строке состояния) и метод Add (динамическое добавление новой панели к строке состояния), при этом ее свойства принимают значения по умолчанию. Новые значения устанавливаются программно.

    На следующем шаге мы рассмотрим компонент TToolBar.




Предыдущий шаг Содержание Следующий шаг