Icone em Statusbar Representando Estado do Dataset.
Alow Pessoal.
Andei vendo por aki esses últimos dias, procurando algo pra me ajudar a colocar uma imagem, podemdo ser icone ou nao, numa StatusBar comum. Achei algumas coisas, mas nao me ajudaram muito pois o que eu quero é o seguinte, que, dependento do estado do dataset, ele mostre imagens diferentes, em algum panel dessa statusbar. Sacaram a questão ? É pra enfeitar mesmo, mas que ajuda o cliente mais ´Leigo´ a saber o que ele tá fazendo.
Eu uso IBO Core e Firebird, Junto com o Delphi 7 Rodando em Windows XP SP2, se isso servir de informação é claro.
Aguardo respostas..
Technos :idea:
Andei vendo por aki esses últimos dias, procurando algo pra me ajudar a colocar uma imagem, podemdo ser icone ou nao, numa StatusBar comum. Achei algumas coisas, mas nao me ajudaram muito pois o que eu quero é o seguinte, que, dependento do estado do dataset, ele mostre imagens diferentes, em algum panel dessa statusbar. Sacaram a questão ? É pra enfeitar mesmo, mas que ajuda o cliente mais ´Leigo´ a saber o que ele tá fazendo.
Eu uso IBO Core e Firebird, Junto com o Delphi 7 Rodando em Windows XP SP2, se isso servir de informação é claro.
Aguardo respostas..
Technos :idea:
Technos
Curtidas 0
Respostas
Rômulo Barros
31/01/2005
Adicione o componente TImageList no seu projeto e, neste componente, insira três imagens nele para representarem os estados do dAtaSet.
[color=red:1bed0ba57b][b:1bed0ba57b]// A primeira imagem representará o estado de inserção do Dataset;
// A segunda imagem representará o estado de edição do dataset;
// A terceira imagem representará o estado de edição do visualização;[/b:1bed0ba57b][/color:1bed0ba57b]
Agora, adicione uma TStatus Bar no seu projeto e, neste componente, dê um duplo click e adicione um Panels. Alter a propriedade [b:1bed0ba57b]Style[/b:1bed0ba57b] do Panel criado para [b:1bed0ba57b]psOwnerDraw[/b:1bed0ba57b];
Pronto. Agora declare o seguinte método no seu formulário:
Após isso, implemente o código abaixo no evento OnDrawPanel da sua StatusBar:
Agora, no datasource ligado a sua Query / Table, implemente o código abaixo no evento OnStateChange:
[color=red:1bed0ba57b][b:1bed0ba57b]Pronto. Espero ter ajudado.[/b:1bed0ba57b][/color:1bed0ba57b]
[color=red:1bed0ba57b][b:1bed0ba57b]// A primeira imagem representará o estado de inserção do Dataset;
// A segunda imagem representará o estado de edição do dataset;
// A terceira imagem representará o estado de edição do visualização;[/b:1bed0ba57b][/color:1bed0ba57b]
Agora, adicione uma TStatus Bar no seu projeto e, neste componente, dê um duplo click e adicione um Panels. Alter a propriedade [b:1bed0ba57b]Style[/b:1bed0ba57b] do Panel criado para [b:1bed0ba57b]psOwnerDraw[/b:1bed0ba57b];
Pronto. Agora declare o seguinte método no seu formulário:
procedure Pintar(imagem: TImageList; Barra: TStatusBar; Panel: TStatusPanel; Rect: TRect ; IndiceImagem : Integer); begin Barra.Canvas.FillRect(Rect); Barra.Canvas.TextOut(Rect.Left+18, Rect.Top, Panel.Text); imagem.Draw(Barra.Canvas, Rect.Left+15, Rect.Top,IndiceImagem); end;
Após isso, implemente o código abaixo no evento OnDrawPanel da sua StatusBar:
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); Var Estado : Integer; begin With(DataSource1.DataSet)Do Begin If(State = dsInsert)Then Estado := 0 ; // Representará a primeria imagem do ImageList1 If(State = dsEdit)Then Estado := 1 ; // Representará a segunda imagem do ImageList1 If(State = dsBrowse)Then Estado := 2 ; // Representará a terceira imagem do ImageList1 Pintar(ImageList1,StatusBar1,StatusBar1.Panels[0],Rect, Estado); End; end;
Agora, no datasource ligado a sua Query / Table, implemente o código abaixo no evento OnStateChange:
procedure TForm1.DataSource1StateChange(Sender: TObject); begin StatusBar1.Refresh; end;
[color=red:1bed0ba57b][b:1bed0ba57b]Pronto. Espero ter ajudado.[/b:1bed0ba57b][/color:1bed0ba57b]
GOSTEI 0