ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

ProgressBar

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
henriquedepaula
Novato
Novato


Registrado: Terça-Feira, 8 de Julho de 2008
Mensagens: 9

MensagemEnviada: Qui Jul 17, 2008 10:53 am    Assunto: ProgressBar Responder com Citação

Olá, bom dia! A quem possa me ajudar, por favor... Gostaria de saber se alguem possui um código fonte ou uma função que faça o controle de uma progressbar. Eu tenho em meu form uma progressbar associada a um botão, e esse botão qdo clicado executa a leitura de um arquivo txt. Então eu gostaria q a progressbar ficasse cheia completamente somente qdo o arquivo texto tivesse sido lido por inteiro(da 1ª até a última linha). É possível realizar essa operação?
No aguardo de uma provável ajuda;

Atenciosamente;

Henrique
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
temuchin
Profissional
Profissional


Registrado: Segunda-Feira, 12 de Dezembro de 2005
Mensagens: 584
Localização: Marte

MensagemEnviada: Qui Jul 17, 2008 11:28 am    Assunto: Responder com Citação

Olá, Henrique

Segue, abaixo, um exemplo de como utilizar o progressbar.

Quando tenho que importar TXT's prefiro passar os dados para uma StringList e, a partir dela, preencho as tabelas. Assim evito Abrir o arquivo duas vezes, uma para contar as linhas (para saber o limite da progressbar) e outra para pegar os dados.


Código:

//Primeiro declare uma variável global para esta unit
    posicao        : integer; //indica linha atual da StringList
//


procedure TForm1.importarTabelaOperador;
var
   texto       : TStringList;
   nomeArquivo : string;
begin
   posicao     := 0;
   texto       := TStringList.Create;
   nomeArquivo := 'usuarios.txt';
   texto       := lerArquivoTexto( nomeArquivo );
   pgImportacao.Position := 0; //posição inicial da progressbar
   pgImportacao.Max := texto.Count; //posição final da progressbar
   try
      with tbUsuarios do begin
           open;
           while ( posicao < texto.Count - 1 ) do begin
                 insert;
                 fieldByName( 'id_operador'  ).asInteger := StrToInt( lerProximaLinha( texto ) );
                 fieldByName( 'nome'         ).asString  := lerProximaLinha( texto );
                 fieldByName( 'cargo'        ).asString  := lerProximaLinha( texto );
                 fieldByName( 'departamento' ).asString  := lerProximaLinha( texto );
                 fieldByName( 'ramal'        ).asString  := lerProximaLinha( texto );
                 fieldByName( 'usuario'      ).asString  := lerProximaLinha( texto );
                 fieldByName( 'senha'        ).asString  := lerProximaLinha( texto );
                 fieldByName( 'telefone'     ).asString  := lerProximaLinha( texto );
                 fieldByName( 'habilitado'   ).asString  := lerProximaLinha( texto );
                 fieldByName( 'noar'         ).asString  := lerProximaLinha( texto );
                 post;
           end;
           close;
      end;
   except
      on e: exception do begin
         ShowMessage( 'Ocorreu um problema durante a importação da tabela sic_operador' );
      end;
   end;
   texto.Free;
end;

//joga o conteúdo do TXT em uma StringList
function TForm1.lerArquivoTexto( nomeArquivo : string ) : TStringList;
var
   arquivo : TFileStream;
begin
   result  := TStringList.Create;
   arquivo := TFileStream.Create( nomeArquivo, fmOpenRead );
   arquivo.Position := 0;
   result.LoadFromStream( arquivo );
   arquivo.Free;
end;

//lê cada linha da StringList
function TForm1.lerProximaLinha( texto : TStringList ): string;
begin
   result := trim( texto[posicao] );
   pgImportacao.Position := pgImportacao.Position + 1; //atualiza posição do progressbar
   if posicao < ( texto.Count - 1 ) then begin
      Inc( posicao );
   end;
end;



A partir daí você pode adaptar às suas necessidades...

Espero ter ajudado e estou à disposição

Abraço
_________________
A santidade dos pobres é invenção dos ricos

if ( topico.resolvido = true ) then begin
    titulo.caption := topico.titulo + ' [RESOLVIDO] ';
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB