Ajuda!!! Pequeno form com barra de progresso! Não anda....
Bom dia companheiros...
Vejam se podem me ajudar...
Criei um pequeno form, para que sempre quando eu tiver que utilizar um processamento e o carregue na memória e apresente ao usuário com uma barra de progresso para demonstrar o andamento do processo.
Acontece que estou fazendo um loop em uma tabela e quando passo o comando frmProcessos.prgbarProcesso.StepBy(1); para que a barra de progresso ande conforme os registros da tabela vão sendo processados, a barra de progressão não se mexe....
Tentei o comando Application.ProcessMessages mas não deu nenhum resultado...
O que posso fazer?
Pablo
Marília/SP
Vejam se podem me ajudar...
Criei um pequeno form, para que sempre quando eu tiver que utilizar um processamento e o carregue na memória e apresente ao usuário com uma barra de progresso para demonstrar o andamento do processo.
Acontece que estou fazendo um loop em uma tabela e quando passo o comando frmProcessos.prgbarProcesso.StepBy(1); para que a barra de progresso ande conforme os registros da tabela vão sendo processados, a barra de progressão não se mexe....
Tentei o comando Application.ProcessMessages mas não deu nenhum resultado...
O que posso fazer?
Pablo
Marília/SP
Pablo_lima
Curtidas 0
Respostas
Macario
08/10/2003
Ola colega bom dia
olha so
1- declare uma variavel global no form principal
do tipo integer
ex;
iTotRec : integer;
2 - crie essa procedure no seu form principal
para chamar o processo use
bom ai vc sabe onde vc for fazer a chamada vc cria uma varivel local e incrementa ela no while onde vc for chamar o processo
espero que ajude
qualquer coisa estamos sempre por aqui
olha so
1- declare uma variavel global no form principal
do tipo integer
ex;
iTotRec : integer;
2 - crie essa procedure no seu form principal
Procedure TDm.Indicator( TotRec, lCount: Double; wTitulo:String );
Begin
If lCount = 1 Then
Begin
Application.CreateForm( TFrmProgres, FrmProgres );
FrmProgres.Show;
End;
If not Assigned( FrmProgres ) Then Exit;
FrmProgres.Repaint;
FrmProgres.Caption := wTitulo;
FrmProgres.gauProgres.Refresh;
FrmProgres.gauProgres.Progress := Trunc ( ( ( 100 / totRec ) * lCount ) );
If ( FrmProgres.gauProgres.Progress = 100 ) Then
Begin
FrmProgres.Close;
End;
end
;para chamar o processo use
Dm.Indicator( itotRec, iCounter, ´Aguarde - Processando´ );
bom ai vc sabe onde vc for fazer a chamada vc cria uma varivel local e incrementa ela no while onde vc for chamar o processo
espero que ajude
qualquer coisa estamos sempre por aqui
GOSTEI 0
Beppe
08/10/2003
Como configurou a pb? Mostre o código que faz isso.
GOSTEI 0
Macario
08/10/2003
Como configurou a pb? Mostre o código que faz isso.
eu????
GOSTEI 0
Beppe
08/10/2003
[quote:172f989749=´Ataliba´]Como configurou a pb? Mostre o código que faz isso.
eu????[/quote:172f989749]
Não, o RodLima.
GOSTEI 0
Abreu
08/10/2003
Oi colega,
Não aparece o progress bar corretamente por causa do loop de leitura, que não dá chance ao windows fazer qualquer outra tarefa. Todos os procedimentos de I/O (input-output) têm altíssima prioridade para o sistema. Para você contornar este problema, deve colocar como primeira (ou última) do laço do loop a instrução APPLICATION.PROCESSMESSAGES
Desta maneira você dará tempo ao windows dar uma ´respirada´ e executar as mensagens pendentes, especialmente a que irá atualizar o seu progress bar.
Qualquer dúvida é só mpar-me.
Não aparece o progress bar corretamente por causa do loop de leitura, que não dá chance ao windows fazer qualquer outra tarefa. Todos os procedimentos de I/O (input-output) têm altíssima prioridade para o sistema. Para você contornar este problema, deve colocar como primeira (ou última) do laço do loop a instrução APPLICATION.PROCESSMESSAGES
Desta maneira você dará tempo ao windows dar uma ´respirada´ e executar as mensagens pendentes, especialmente a que irá atualizar o seu progress bar.
Qualquer dúvida é só mpar-me.
GOSTEI 0