Statusbar

Delphi

04/07/2006

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

valeu


Pereiramarcos

Pereiramarcos

Curtidas 0

Respostas

Micheus

Micheus

04/07/2006

Provavelmente vc precisará utilizar o evento OnDrawPanel.


GOSTEI 0
Michael

Michael

04/07/2006

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


GOSTEI 0
POSTAR