Essa semana me deparei com o seguinte problema, fazer a régua do Protheus funcionar.
Observei os manuais, pesquisei várias coisas na internet e cheguei a uma solução simples e funcional.
Chamando a função Processa(Ação, cTitulo, cMensagem, cParam).
onde Ação é o programa que iremos utilizar para realizar o que queremos, cTitulo é a mensagem que irá aparecer na barra de título da caixa de processamento, cMensagem é a mesagem que vai aparecer logo acima da régua, cParam é o parametro (.T. ou .F.) que define se o botão de cancelar estará ativo ou não.
Abaixo temos um exemplo da tela e abaixo da tela temos o código fonte utilizado.
#Include "TopConn.ch"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³cTest ºAutor ³Daniel Menezes º Data ³ 03/29/12 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function cTest
Processa( {|| xProc()}, "Tela de Processamento" , "Realizando Consulta...", .T.)
Static Function xProc
Private nRec
xPesq()
ProcRegua(nRec) // Cria a régua com a quantidade de registros contatos
DbSelectArea("PSQ")
PSQ->(DbGoTop()) // Na contagem de registros o sistema posiciona no ultimo registros, usamos para reposicionar no primeiro registro.
Do While PSQ->(!Eof())
IncProc(PSQ->(FILIAL + " - " + MAT + " - " + SubStr(NOME,1,25))) //Altera o texto da régua em tempo de execução.
PSQ->(DbSkip())
EndDo
PSQ->(dbCloseArea())
Return
Static Function xPesq
cArqSRA := RetSqlName("SRA")
cQry:= " SELECT A.RA_FILIAL AS FILIAL, A.RA_MAT MAT, LTRIM(A.RA_NOME) NOME
cQry+= " FROM " + cArqSRA + " A
cQry+= " WHERE A.D_E_L_E_T_ <> '*' "
cQry+= " AND A.RA_SITFOLH IN (' ','F')"
TCQUERY cQry NEW ALIAS "PSQ"
Count To nRec //Varre o Alias criado e conta o número de registros.
Return