FAQ VCL
Компоненты\StatusBar

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как изменить цвет шрифта в разных панелях TStatusBar?

// Для начала измените свойство TStatusBar.Panels.Style на psOwnerDraw
// у тех панелей, цвет текста которых вы хотите поменять (или у всех).
// Например так:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
   with StatusBar1.Panels do
      for i := 0 to Count-1 do
         Items[i].Style := psOwnerDraw;
end;

// Далее обрабатываем событие OnDrawPanel у TStatusBar
// Способ первый
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
   case Panel.Index of
      0: begin
         StatusBar.Canvas.Font.Color := clRed;
         StatusBar.Canvas.TextOut( Rect.Left, Rect.Top, Panel.Text );
      end;
      1: begin
         StatusBar.Canvas.Font.Color := clGreen;
         StatusBar.Canvas.TextOut( Rect.Left, Rect.Top, Panel.Text );
      end;
      else
         begin
            StatusBar.Canvas.Font.Color := clBlack;
            StatusBar.Canvas.TextOut( Rect.Left, Rect.Top, Panel.Text );
         end;
   end;
end;

// Способ второй
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
   if Panel = StatusBar.Panels[0] then
   begin
      StatusBar.Canvas.Font.Color := clRed;
      StatusBar.Canvas.TextOut( Rect.Left, Rect.Top, 'Panel - 0' );
   end
   else
   begin
      StatusBar.Canvas.Font.Color := clGreen;
      StatusBar.Canvas.TextOut( Rect.Left, Rect.Top, 'Panel - 1' );
   end;
end;

При использовании материала - ссылка на сайт обязательна