Fórum Statusbar #324733

04/07/2006

0

alguem sabe como mudar o font.style de um statusbar.panel[x]
?

valeu


Pereiramarcos

Pereiramarcos

Responder

Posts

04/07/2006

Micheus

Provavelmente vc precisará utilizar o evento OnDrawPanel.


Responder

Gostei + 0

05/07/2006

Michael

Olá colega!

Além de utilizar o evento [b:19d330ef13]OnDrawPanel[/b:19d330ef13], como sugerido pelo colega [b:19d330ef13]Micheus[/b:19d330ef13], vc deve fazer outras coisas tbm. Veja a seguir quais são.

1) Configurar a propriedade [b:19d330ef13]Style [/b:19d330ef13]dos painéis que vc deseja desenhar para [b:19d330ef13]psOwnerDraw[/b:19d330ef13];

2) Implementar no evento [b:19d330ef13]OnDrawPanel [/b:19d330ef13]do componente [b:19d330ef13]TStatusBar [/b:19d330ef13]a formatação desejada.

Veja um exemplo. Coloque um [b:19d330ef13]TStatusBar [/b:19d330ef13]em um form da VCL e adicione 3 painéis. Escreva algum texto no segundo e no terceiro (propriedade [b:19d330ef13]Text[/b:19d330ef13]). Defina a propriedade [b:19d330ef13]Style [/b:19d330ef13]de ambos para [b:19d330ef13]psOwnerDraw[/b:19d330ef13]. Por fim, codifique o evento [b:19d330ef13]OnDrawPanel [/b:19d330ef13]da barra de status como mostrado a seguir:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
begin
  with StatusBar do
  begin
    case Panel.Index of
      1:
        begin
          Canvas.Font.Style := [fsBold];
          Canvas.Font.Color := clRed;
        end;
      2:
        begin
          Canvas.Font.Style := [fsItalic];
          Canvas.Font.Color := clBlue;
        end;
    end;

    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left, Rect.Top, Panel.Text);
  end;
end;


Veja um snapshot do exemplo acima:
[URL=http://imageshack.us][img:19d330ef13]http://img344.imageshack.us/img344/5697/snapshot0zj.png[/img:19d330ef13][/URL]

Tenha em mente que, por estar fazendo o desenho dos painéis manualmente, propriedades que modificam a aparência de cada um deles não irão funcionar, como [b:19d330ef13]Alignment[/b:19d330ef13], por exemplo. Vc deve implementar isso no código do evento [b:19d330ef13]OnDrawPanel[/b:19d330ef13], se for desejado/necessário.

[]´s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar