Fórum Imagem na status bar #222450

25/03/2004

0

Alguem poderia me ajudar?
Gostaria de saber como adicionar uma imagem à um painel de uma statusbar.

Desde já, muito obrigado!


Raimundo

Raimundo

Responder

Posts

25/03/2004

Sdph

procedure TFrm_Principal.BarraStatusDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin


Case Panel.Index of
0 : BarraStatus.Canvas.Font.Color := clNavy;
1 : BarraStatus.Canvas.Font.Color := clNavy;
2 : BarraStatus.Canvas.Font.Color := clNavy;
3 : BarraStatus.Canvas.Font.Color := clNavy;
end;

Case Panel.Index of
3 : BarraStatus.Canvas.Font.Style := [fsbold];
end;
Case Panel.Index of
0 : BarraStatus.Canvas.Font.Size := 10;
1 : BarraStatus.Canvas.Font.Size := 10;
2 : BarraStatus.Canvas.Font.Size := 10;
3 : BarraStatus.Canvas.Font.Size := 10;
end;
ImagemBarra.Draw(BarraStatus.Canvas,Rect.Left+1,Rect.Top+1,Panel.Index);
BarraStatus.Canvas.TextOut(Rect.Left +25, Rect.Top,Panel.Text);
end;


Responder

Gostei + 0

25/03/2004

Fabio.hc

Tente assim:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ImgList, ComCtrls;
 
type
  TForm1 = class(TForm)
  StatusBar1: TStatusBar;
  ImageList1: TImageList;
  procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
{Adicione um StatusBar e um ImageList, iclua no imagelist as figuras que deseja
 mostrar apos mude a propriedade Style dos Panels do StatusBar para psOwnerDraw,
 em seguida inclua o codigo abaixo no evento OnDrawPanel do StatusBar}
 
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
with StatusBar1.Canvas do
 begin
  FillRect(Rect);
  //Definir Font e Style
  Font.Name := ´Arial´;
  Font.Color := ClNavy;
  Font.Style := [FsBold];
  //Desenha as imagens de acordo com o indice de cada panel
  ImageList1.Draw(StatusBar1.Canvas,Rect.Left+5,Rect.Top+1,Panel.Index);
  //Escreve o texto em cada panel
  if Panel.Index = 0 then
  TextOut(Rect.Left + 25, Rect.Top + 1,´Panel 1´);
  if Panel.Index = 1 then
  TextOut(Rect.Left + 25, Rect.Top + 1,´Panel 2´);
  if Panel.Index = 2 then
  TextOut(Rect.Left + 25, Rect.Top + 1,´Panel 3´);
 end;
end;
end.



Responder

Gostei + 0

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

Aceitar