Régua dupla de processamento, para manipular pode ser usado os métodos SetRegua1(), IncRegua1(), SetRegua2() e IncRegua2()
Exemplo da Rotina:
oProcess := MsNewProcess():New({|| fSuaFuncao(oProcess)}, "Título...", "Mensagem...", .T.) oProcess:Activate()
Exemplo 1- Mostrando a barra de processamento:
//Bibliotecas #Include "Protheus.ch" #Include "TopConn.ch" /*/{Protheus.doc} zTstBar Função de exemplo de barras de processamento em AdvPL @author Atilio @since 28/10/2018 @version 1.0 @type function @example u_zTstBar() /*/ User Function zTstBar() Local aArea := GetArea() Local lContinua := .T. Local nTipoRegua := 0 Local oProcess Private cQryAux := "" //Monta a consulta de grupo de produtos cQryAux := " SELECT " + CRLF cQryAux += " BM_GRUPO, " + CRLF cQryAux += " BM_DESC " + CRLF cQryAux += " FROM " + CRLF cQryAux += " SBM010 SBM " + CRLF cQryAux += " WHERE " + CRLF cQryAux += " BM_FILIAL = ' ' " + CRLF cQryAux += " AND SBM.D_E_L_E_T_ = ' ' " + CRLF oProcess := MsNewProcess():New({|| fExemplo2(oProcess)}, "Processando...", "Aguarde...", .T.) oProcess:Activate() RestArea(aArea) Return /*-----------------------------------------------------------* | Func.: fExemplo2 | | Desc.: Exemplo utilizando MsNewProcess | *-----------------------------------------------------------*/ Static Function fExemplo2(oObj) Local aArea := GetArea() Local nAtual := 0 Local nTotal := 0 Local nAtu2 := 0 Local nTot2 := 90 //Executa a consulta TCQuery cQryAux New Alias "QRY_AUX" //Conta quantos registros existem, e seta no tamanho da régua Count To nTotal oObj:SetRegua1(nTotal) //Percorre todos os registros da query QRY_AUX->(DbGoTop()) While ! QRY_AUX->(EoF()) //Incrementa a mensagem na régua nAtual++ oObj:IncRegua1("Analisando registro " + cValToChar(nAtual) + " de " + cValToChar(nTotal) + "...") //Incrementando a régua 2 oObj:SetRegua2(nTot2) For nAtu2 := 1 To nTot2 oObj:IncRegua2("Posição " + cValToChar(nAtu2) + " de " + cValToChar(nTot2) + "...") Next QRY_AUX->(DbSkip()) EndDo QRY_AUX->(DbCloseArea()) RestArea(aArea) Return
Exemplo em Vídeo:
Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.