Customização da Barra de Status
É muito gostoso usar a criatividade e darmos um "charme" em nossos aplicativos. Use este artigo para dar um "tapa" na sua barra de estatus.
A Idéia
A barra de status pode ser dividida em paineis. Onde cada painel, pode ter um visual totalmente diferentes dos demais. O truque, se é que é podemos chamar assim, é setar a propriedade do painel, via editor de paineis, Style para psOwnerDraw. Isto indica ao Delphi, que você terá o controle de como fazer este painel. Esta propriedade, sozinha, somente indica que o desenho será feito por você. O código que será executado para fazer o paínel, deverá ser associado ao evento OnDrawPanel.
A Implementação
Selecione o formulário que e acrescente um TStatusBar, selecione-a e efetue um duplo-click. O editor de paineis aparecerá. Acrescente quantos paineis forem necessários. Para aqueles que você deseja desenhar, ajuste a propriedade Style com psOwnerDraw. Volte a TStatusBar e no Object Inspector, na página Events, selecione OnDrawPanel, efetuando um duplo-click, algo semelhante ao código abaixo aparecerá.
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
begin
end;
Insira, entre os comandos Begin..End, o código de teste do painel a ser desenhado.
// Aqui determinamos qual é o painel que será "desenhado"
if Panel.Index = PAN_FAROL then //Acostume-se a utilizar constantes para acessar e testar indices, quando possivel
with StatusBar1.Canvas do
begin
// Ajusta a cor e pinta o fundo
Brush.Color := ACores[nColor];
FillRect(Rect);
// Ajusta a cor da fonte e apresenta um texto
Font.Color := clBlack;
TextOut(Rect.left + 4, Rect.top + 2, TimeToStr(Now));
end else if Panel.Index = PAN_ICON then
with StatusBar1.Canvas do
begin
// Desenha o icone da aplicação
StretchDraw(Rect, Image1.Picture.Icon);
end;
Neste exemplo, estamos verificando qual o painel que será desenhado, através da propriedade Index do TPanel e usando o Canvas da barra de status, efetuamos o desenho deste painel. Que consistem em um fundo de cor definida pelo array e com a hora impressa em preto. Já para o painel PAN_ICON, efetuamos a apresentação de um icone.