.

Здравствуйте читатели моего блога. Сегодня я расскажу вам про компонент StatusBar в Delphi. О том как работать с ним, и изменять стиль текста отдельно взятой панели (Panel). StatusBar - хороший компонент для вывода, статуса или состояния программы, версии программы и т. д.  Обычно она размещена внизу формы. Выглядит  это вот так:

StatusBar в Delphi

Немного о компоненте StatusBar…

Свойство SimplePanel определяет, имеет ли полоса состояния несколько панелей или одну. Если SimplePanel = true, то строка состояния имеет одну панель, текст которой задается в свойстве SimpleText. Если свойство SimplePanel равно false, то строка состояния является набором панелей, задаваемых в свойстве Panels. Свойства панелей можно задавать в специальном редакторе наборов.

Вызвать этот редактор возможно тремя способами: в Инспекторе Объектов - кнопкой с многоточием свойства Panels, из контекстного меню (командой Panels Editor) или щелчком на компоненте StatusBar. В редакторе можно добавлять новые или уничтожать существующие панели. При перемещении по панелям вы будете видеть свойства каждой панели.

Основное свойство у каждой панели это Text, в которое заносится текст отображаемый в панели. Его можно заносить в процессе проектирования, а потом уже можно изменять программно во время выполнения программы. Второе существенное свойство этих панелей — Width.

Программный доступ к тексту отдельных панелей можно осуществить через свойство Panels. Например, оператор:

StatusBar1.Panels.Items[0].Text = «Версия программы:1.0.0.1»
//напечатает текст в первой панели.

Количество панелей полосы состояния можно определить в подсвойстве Count свойства Panels.

Вот, например как у меня выглядит это в рабочем проекте:

пример StatusBar

Подсветка текста в одной панели StatusBar Delphi..

Обратите внимание на картинку выше, видите надпись «Пункт:..». Она отличается по размеру шрифта и цвету от надписи «Версия программы: 1.0….». Не это не «фотошоп»)))

Мне на работе поставили задачу, внизу на строке состояния (StatusBar) отображать к какому отделению сейчас привязан данный клиент с возможностью смены этой привязки. Поначалу я написал быстренько новую форму и обработку, сделал простой вывод в Panels в StatusBar. Конечный пользователь остался недоволен,  обосновал все тем, что шрифт мелкий и цвет сваливается с остальными надписями. Он хочет, чтобы эта надпись бросалась в глаза (в глазах конечного пользователя – это значит выделить красным цветом).

Все бы хорошо, да только для StatusBar нет возможности изменить значение Font для отдельных Panel. Единственный выход это рисовать надпись программно. Вот об этом способе я и хочу вам рассказать.

  1. Выбираем наш StatusBar. В Инспекторе Свойств (Object Inspector), выбираем свойство Panels.
  2. Выбираете нужную Panel.
  3. Теперь в Инспекторе Свойств (Object Inspector), выбираем свойство Style и выставляем «psOwnerDraw». При выставление этого свойства, компонента StatusBar для данной Panel, текст будет прорисоваться, а не просто выводиться надпись.
  4. Теперь нужно описать событие прорисовки компонента. Возвращаемся в Инспекторе Свойств (Object Inspector) компонента StatusBar. В разделе События (Events), находим событие OnDrawPanel и делаем двойной клик на поле ввода для генерирование конструкции в коде.
  5. Вставляем код прорисовки
if Panel = StatusBar.Panels[4] then //Здесь определяем панель в
//с которой включали свойство Style
  begin
    StatusBar.Canvas.Font.Color := clRed;//Цвет надписи
    StatusBar.Canvas.Font.Size:=10; //Размер шрифта
    StatusBar.Canvas.Font.Name:='Arial'; //Тип шрифта
    StatusBar.Canvas.Font.Style:=[fsBold]; //Стиль: (Жирный)
    StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, FormAvtor.NamePunkt)
//Первый два параметра положение надписи (Rect.Left, Rect.Top)
//Переменная которая хранит текст надписи (FormAvtor.NamePunkt)
  end;

Вот и все. Когда скомпилируете, то увидите как изменилась стандартная строчка в отдельной Panel на красную полужирную строчку. Позже я хочу написать статью про программное управление компонентом MainMenu. Жду с нетерпением ваших комментариев… С уважением, ваш Shinobi.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *