Segue um exemplo de como fazer barra de progresso, para ilustrar processos mais longos. Para isto, use as funções Processa, Procregua e Incproc. O exemplo abaixo, funciona. É só testar:
# include "rwmake.ch"
user function fFuncao1()
cRBSFQSQL := changequery("SELECT COUNT(A1_COD) AS NREGISTRO FROM SA1010 WHERE A1_NOME LIKE 'A%'")
dbusearea(.t., 'TOPCONN', tcgenqry(,,cRBSFQSQL), 'TMPSA1', .f., .t.)
if .not. TMPSA1->(eof())
processa( {|| u_fFuncao2( TMPSA1->NREGISTRO ) }, "Titulo", "Processando aguarde...", .f.)
endif
dbclosearea("TMPSA1")
return nil
user function fFuncao2(nRegistros)
local cRegistros := ""
procregua(nRegistros)
cRBSFQSQL := changequery("SELECT A1_COD, A1_NOME FROM SA1010 WHERE A1_NOME LIKE 'A%'")
dbusearea(.t., 'TOPCONN', tcgenqry(,,cRBSFQSQL), 'TMPSA2', .f., .t.)
if .not. TMPSA2->(eof())
do while .not. TMPSA2->(eof())
cRegistros := cRegistros + TMPSA2->A1_COD + " | " + alltrim(TMPSA2->A1_NOME) + chr(10)
incproc("Concatenando...")
TMPSA2->(dbskip())
enddo
@ 0, 0 to 300, 550 dialog oDial title "RESULTADO"
oRBSFMemo := tMultiget():new(5,5,{|u|if(pcount()>0,cRegistros:=u,cRegistros)},oDial,260,100,,,,,,.t.,,,,,,.t.)
@ 110, 240 bmpbutton type 1 action close(oDial)
activate dialog oDial centered
endif
dbclosearea("TMPSA2")
return nil
• Veja também: Lendo arquivos XML
Comentários
Postar um comentário