Ir para conteúdo
Fórum Script Brasil
  • 0

Contador de Tempo


Eder

Pergunta

Ola...tenho um relatorio que é lento a geração...gera em torno de 3 a 5 minutos....eu tenho na tela..apenas um label informando.

"Aguarde Geração do Relatorio"

mas eu queria colocar um contador pro usuario acompanhar o tempo de processamento..

tenho este aqui ...que funciona show...porem ele congela(visualização)...quando o relatorio começa a gerado...

var
  Form1: TForm1;
  tempoInicial : TDatetime;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption  := FormatDateTime('hh:nn:ss',TempoInicial - Now);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TempoInicial := now;
Timer1.Enabled := true;
end;

na verdade ele não congela..continua contando mas pro usuario fica parado o label.

grato

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Opa

Faz assim

Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);

Label1.Refresh;

ou

Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);

Application.ProcessMessages;

Application.ProcessMessages é mais recomendável porque faz com que o Form seja atualizado também...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);

Label1.Refresh;

ou

Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);

Application.ProcessMessages;

Application.ProcessMessages é mais recomendável porque faz com que o Form seja atualizado também...

Ola..Churc.....beleza?

carinha não deu certo...... :(

Ele congela e não deixa atualizar o label.....

só depois que é gerado o relatorio e mostra o preview do quickreport(video) ai quando fecho o preview ai vejo que o label contou 45 segundos.....mas eu não vi contar..um por um(segundos)..nesta hora ele tava congelado...alias o form e o programa Congela... :(

só descongelando após o relatorio gerado.

Obs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registros

Tens mais alguma dica pra resolver este probleminha?

Grato

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
Você possue o Código Fonte do QuickReport?

Se possuir, talvez de pra implementar algo no código fonte dele... porque acredito que tudo que a gente faça no código vai ser inútil quando der o Preview

R.: Shiiii....ferrou.

então deixa como esta mesmo.....

achei que era simples, mas já ficou complicado...hehehe

grato

:D

Link para o comentário
Compartilhar em outros sites

  • 0
Ele congela e não deixa atualizar o label.....

só depois que é gerado o relatorio e mostra o preview do quickreport(video) ai quando fecho o preview ai vejo que o label contou 45 segundos.....mas eu não vi contar..um por um(segundos)..nesta hora ele tava congelado...alias o form e o programa Congela... :(

só descongelando após o relatorio gerado.

Eder, sem dúvida seria necessário dar margem ao processamento da tarefa de pintura do label, e isto deveria ser possível via chamada a Application.ProcessMessages conforme mencionou o Churc, mas parece que nem o seu timer está tendo chance de ser processado.

Sabendo que o QuickReport executa chamadas para eventos nas bandas enquanto está sendo processado, talvez você possa colocar a chamada Application.ProcessMessages em um evento BeforePrint de alguma banda no seu relatório. Talvez isto funcione. ;)

Obs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registros
é uma base muito grande para tabelas Paradox. É hora de pensar em algo que seja um SGBD de verdade.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eder, sem dúvida seria necessário dar margem ao processamento da tarefa de pintura do label, e isto deveria ser possível via chamada a Application.ProcessMessages conforme mencionou o Churc, mas parece que nem o seu timer está tendo chance de ser processado.

Sabendo que o QuickReport executa chamadas para eventos nas bandas enquanto está sendo processado, talvez você possa colocar a chamada Application.ProcessMessages em um evento BeforePrint de alguma banda no seu relatório. Talvez isto funcione. ;)

Verdade Micheus, é uma boa sim nem tinha pensado nisso rs

Obs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registros

é uma base muito grande para tabelas Paradox. É hora de pensar em algo que seja um SGBD de verdade.

Abraços

Com certeza, Paradox é pra coisa pequena no seu caso ai já parece ter passado disso...

Firebird é gratuito e uma ótima opção...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal...testei a sugestão do Micheus....

neste caso depende do tipo de relatorio

por exemplo se o filtro for de uma filial que tem pouco movimentação(poucos registros) ele até conta de 4 em 4 segundos...

mas se for uma filial com bastante movimentação, ai conta assim:

*Tempo de geração: 00:00:01
depois só quanto termina:
*Tempo de geração: 0:01:49

neste caso por ter muitos registros....não atualiza legal, só atualiza no inicio e no final do processamento.

quanto ao tamanho da tabela paradox...

bom....por enquanto vou me virando.....esta tabela só até fechar 2007, janeiro abro nova tabela 2008(Pra ficar facil a manipulação e pra não dar muito trabalho de manutenção)

mas concordo plenamente com vocês...tenho que começar a mexer com um SGBD de verdade como Menciona nosso colega Micheus.

Bom pessoal...é isto ai....

se tiver mais alguma ideia por favor ...

grato

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...