Imagem de Espera, como fazer?

Delphi

18/06/2007

Olá amigos, tenho uma imagem (GIF) que fica mexendo, que supostamento deveria mexer, para indicar ao usuario que o sistema está processando algo..

Porém, quando o processamento é demorado, a imagem não mexe, o sistema meio que trava, e eu não consigo dar um ProcessMessage, pois já está dentro de um processo.

Minha pergunta é: existe uma maneira de criar uma rotina a parte para esta imagem? como seria?

desde já agradeço

[]s


Titanius

Titanius

Curtidas 0

Respostas

Macario

Macario

18/06/2007

OLá [b:9e95324775]titanius[/b:9e95324775], boa tarde.

Colega to nesse ´embate´ tambem ja faz um tempo.

O seu processo envolve Comando SQL(DML,DDl,etc)? Se for é o mesmo caso que o meu.

Nem usando recurso de TThread to conseguindo.

:roll:


GOSTEI 0
Titanius

Titanius

18/06/2007

Alguns processos sim, outros não...

Por falar em Thread.. não teria como fazer isso com ela não, porque no seu caso não dá certo?

[]s


GOSTEI 0
Macario

Macario

18/06/2007

... Por falar em Thread.. não teria como fazer isso com ela não, porque no seu caso não dá certo? []s


É justamente isto que estou tentando há um tempo descobrir.

O que estou fazendo é tentanto animar uma ProgressBar, quando executo uma SP via dbexpress+MSSQL a TThread simplesmente ´CONGELA´.


GOSTEI 0
Titanius

Titanius

18/06/2007

Isto não deveria acontecer, não é? Já que a Thread é separada...

[]s


GOSTEI 0
Macario

Macario

18/06/2007

Isto não deveria acontecer, não é? Já que a Thread é separada... []s


Exato,

Veja este post no ForumWeb: [url=http://www.forumweb.com.br/foruns/index.php?showtopic=45825url]Dados[/url]

Tentei os exemplos lá postados, mas sem sucesso.

Para processos sem envolvimento de DataSet funciona.


GOSTEI 0
Araujojunior

Araujojunior

18/06/2007

Em alguns processos eu tenho utilizado o comando

Application.ProcessMessages;

Tem funcionando normalmente atualização de progressbar, exibição de gifs com processos demorados que realizo aqui....

Vlw


GOSTEI 0
Titanius

Titanius

18/06/2007

Em alguns processos eu tenho utilizado o comando Application.ProcessMessages; Tem funcionando normalmente atualização de progressbar, exibição de gifs com processos demorados que realizo aqui.... Vlw


O problema disso é que.. vamos supor que você esteja criando um Form ou Atualizando um SQL. não tem como inserir um ProcessMessage no meio deles... então teria que ser algo independente...

Exato, Veja este post no ForumWeb: Dados Tentei os exemplos lá postados, mas sem sucesso. Para processos sem envolvimento de DataSet funciona.


Macario, irei testar aqui... qualquer coisa posto..

[]s


GOSTEI 0
Macario

Macario

18/06/2007

Em alguns processos eu tenho utilizado o comando Application.ProcessMessages; Tem funcionando normalmente atualização de progressbar, exibição de gifs com processos demorados que realizo aqui.... Vlw


Olá bom dia, primeiramente obrigado por sua atenção.

Então o Application.ProcessMessages é um bom recurso, mas quando se esta no escopo da aplicação principal.

No meu caso eu executo uma SP no banco de dados (que sai do escopo principal). Por tanto não ha como fazer uso deste recurso.


8)


GOSTEI 0
Macario

Macario

18/06/2007

Olá bom dia colegas.

[b:034686ef5d]titanius[/b:034686ef5d], você usa a [b:034686ef5d]JVCL[/b:034686ef5d]?

Li na edição da CD nº 81 um artigo do [b:034686ef5d]Michael Benford[/b:034686ef5d] sobre alguns componentes da [b:034686ef5d]JVCL[/b:034686ef5d] e lá ele indica o uso do [b:034686ef5d]JvWaitingGradient[/b:034686ef5d] para indicar ao usuário que esta sendo efetuado um processo pela aplicação.

Ainda não tive oportunidade de testar se alguem se habilitar.

[]´s 8)


GOSTEI 0
Titanius

Titanius

18/06/2007

Olá bom dia colegas. [b:2e26d41d85]titanius[/b:2e26d41d85], você usa a [b:2e26d41d85]JVCL[/b:2e26d41d85]? Li na edição da CD nº 81 um artigo do [b:2e26d41d85]Michael Benford[/b:2e26d41d85] sobre alguns componentes da [b:2e26d41d85]JVCL[/b:2e26d41d85] e lá ele indica o uso do [b:2e26d41d85]JvWaitingGradient[/b:2e26d41d85] para indicar ao usuário que esta sendo efetuado um processo pela aplicação. Ainda não tive oportunidade de testar se alguem se habilitar. []´s 8)

Olá..
Sim, realmente existe tal componente, mas ele trava do mesmo jeito, pelo menos no que eu consegui simular aqui... :o(

Ainda não tive tempo pra testar o Thread, minha máquina foi pra UTI... :roll: Assim que terminar de instalar tudo, vou testar...

[]s


GOSTEI 0
Titanius

Titanius

18/06/2007

Macario.. Seguinte amigo.. estive vendo o componente do JVCL, nele tem um que chama TGIFAnimator.

Pois bem, que estive vendo no código fonte, ele utiliza uma Thread caso queira ser usado. Pois bem... coloquei lá as seguintes opções:

AsyncDrawing := True
Threaded := True;


Antes do Processo:

JvGIFAnimator1.Animate := True;
Application.ProcessMessages;


No final do processo:

JvGIFAnimator1.Animate := False;
Application.ProcessMessages;


Comigo funcionou perfeitamente, inclusive quando busco os dados numa Query pelo IBX... Verifica aí se serve para você, ok?

[]s


GOSTEI 0
Macario

Macario

18/06/2007

Olá.

Testei o [b:6487145697]JvGIFAnimator [/b:6487145697]e funcionou. O que vou fazer agora é estudar a implementação interna dele para ver como age a [b:6487145697]JvTThread [/b:6487145697]que ele cria e tentar aplicar isso para aplicação principal, pois ela continua com aparencia de ´[b:6487145697]congelada[/b:6487145697]´;

O que vocês acham?

8)


GOSTEI 0
POSTAR