Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 11 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
258 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Dicas]  Cumprimento na barra de status
Publicado por karlosrapanui : Domingo, Junho 01, 2008 - 11:24 GMT-3 (1646 leituras)
Comentários 9 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Veja nesta dica como implementar uma barra de status bastante amigável ao seu usuário, com pouco código

Em um novo projeto, adicione um StatusBar. Clique duas vezes sobre ele e adicione um Panel. Mude a propriedade Style deste Panel para psOwnerDraw.

Adicione também um ImageList. Clique duas vezes sobre ele e adicione uma Imagem de um relógio (16x16).
(Veja o diretório Arquivos de ProgramasArquivos ComunsBorland SharedImagesButtons
ou ...CodeGear Shared...)

Agora no evento onDrawPanel do StatusBar, faça:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  with StatusBar.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    
    //imgStatusBar é um ImageList com uma imagem de um relógio
    imgStatusBar.Draw(StatusBar.Canvas,Rect.Left,Rect.Top,Panel.Index);

    //Escreve o texto em cada panel
    if Panel.Index = 0 then
      TextOut(Rect.Left + 20, Rect.Top + 1,TimeToStr(Time));
    if (time >= strtotime('00:00:00')) and (time < strtotime('11:59:59')) then
      TextOut(Rect.Left + 20, Rect.Top + 1,'Bom dia, agora são: '+TimeToStr(Time));
    if (time >= strtotime('12:00:00')) and (time < strtotime('17:59:59')) then
      TextOut(Rect.Left + 20, Rect.Top + 1,'Boa Tarde, agora são: '+TimeToStr(Time));
    if (time >= strtotime('18:00:00')) and (time < strtotime('23:59:59')) then
      TextOut(Rect.Left + 20, Rect.Top + 1,'Boa Noite, agora são: '+TimeToStr(Time));
  end;
end;

Rode o programa e veja o resultado! ;-)

Abraços!

Por: karlosrapanui@hotmail.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: Fer22.3 (fer.gatinho@hotmail.com) : Jun 03, 2008 - 07:44
(Informações sobre o membro | Enviar uma mensagem) http://
Ficou bem legal, ele divide o desenho do clock e o desenho cinza você deleta. O StatusBar fica bem interessante.


por: karlosrapanui (karlosrapanui@hotmail.com) : Jun 05, 2008 - 02:23
(Informações sobre o membro | Enviar uma mensagem)
Para ele atualizar a cada segundo.

Coloquei um Timer (Paleta System) e mude o interval dele para 100000.


por: EVERSONCD2 (everson.costa1@hotmail.com) : Ago 17, 2008 - 04:44
(Informações sobre o membro | Enviar uma mensagem)
Eiii deu erro ><"

Olha a imagem :

http://img360.imageshack.us/img360/9809/errorfu4.jpg

Me ajuda ? ;/
Num intendo mtoo =X


por: emanoelts (emanoelts@globo.com) : Ago 02, 2010 - 09:40
(Informações sobre o membro | Enviar uma mensagem)
Tornar o código mais amigável:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
with StatusBar.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
//imgStatusBar é um ImageList com uma imagem de um relógio
imgStatusBar.Draw(StatusBar.Canvas,Rect.Left,Rect.Top,Panel.Index);

//Escreve o texto em cada panel
if Panel.Index = 0 then
TextOut(Rect.Left + 20, Rect.Top + 1,TimeToStr(Time));
if time < strtotime('11:59:59') then
TextOut(Rect.Left + 20, Rect.Top + 1,'Bom dia, agora são: '+TimeToStr(Time))
else if time < strtotime('17:59:59') then
TextOut(Rect.Left + 20, Rect.Top + 1,'Boa Tarde, agora são: '+TimeToStr(Time))
else
TextOut(Rect.Left + 20, Rect.Top + 1,'Boa Noite, agora são: '+TimeToStr(Time));
end;
end;
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados