 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
henriquedepaula Novato

Registrado: Terça-Feira, 8 de Julho de 2008 Mensagens: 9
|
Enviada: Qui Jul 17, 2008 10:53 am Assunto: ProgressBar |
|
|
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 |
|
 |
temuchin Profissional


Registrado: Segunda-Feira, 12 de Dezembro de 2005 Mensagens: 584 Localização: Marte
|
Enviada: Qui Jul 17, 2008 11:28 am Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|