Как изменить цвет шрифта в разных панелях 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;
|