Aprenda a animar uma barra de progressos, nos casos em que não se sabe a quantidade de informação a ser processada.
Para criar a barra de progressos, utilize o exemplo mostrado no artigo "Mostre o seu progresso".
Defina as novas variáveis na working-storage section:
77 bHandle pic 9(09) comp-5 value zeros.
77 wsMilisegundos pic 9(09) comp-5 value zeros.
78 PBM-SETMARQUEE value 1034.
78 PBS-MARQUEE value h"08".
Na procedure division, depois de criada a barra de progressos,basta adicionar os seguintes comandos antes do processamentode qualquer informação:
invoke umaProgressBar "AddBasicApiFlags"
using by value PBS-MARQUEE size 4
invoke umaProgressBar "getSystemHandle" returning bHandle
move 200 to wsMilisegundos
call WAPI "SendMessageA" using by value bHandle
by value PBM-SETMARQUEE
by value 1
by value wsMilisegundos
Para pausar a animação da barra de progressos:
invoke umaProgressBar "getSystemHandle" returning bHandle
move 0 to wsMilisegundos
call WAPI "SendMessageA" using by value bHandle
by value PBM-SETMARQUEE
by value 0
by value wsMilisegundos
Esse procedimento não requer que um valor seja passado para o componente a cada informação processada. Assim que a API é chamada, o componente passa a mostrar a animação automaticamente. A variável wsMilisegundos especifica o tempo da animação. Quanto menor o valor passado, mais rápida será a animação.
4 comentários:
Estava tentando fazer o exemplo da Progress Bar, o primeiro exemplo e quando fui executar o programa, deu erro 173 na linha
invoke Window "fromHandleWithClass" using wsHandle Window
Define as classes logo após o Special-Names...
O que será que fiz errado??
Obrigado desde já.
olá, Bruno...
existe uma série de comandos dentro da GS que eu normalmente não coloco em meus "post´s", por se tratar de um padrão para utilização das classes gráficas do NetExpress... verifique se dentro da sua GS principal você possui esses comandos abaixo:
CALLOUT-PARAMETER 1 CONFIG-FLAG $NULL
CALLOUT-PARAMETER 2 CONFIG-VALUE $NULL
MOVE 15 CONFIG-FLAG
MOVE 1 CONFIG-VALUE
CALLOUT "dsrtcfg" 3 $PARMLIST
Se mesmo assim continuar o problema, por favor, entre em contato comigo novamente, ok ?.. abraços...
Ainda sobre os comandos acima...
coloque-os no evento SCREENSET-INITIALIZED
abraços...
Olá Alexandre.
Deu certo sim, obrigado pela atenção!
Vou tentar fazer o outro exemplo agora.
Postar um comentário