Tela com 2 barras de processamento - MsNewProcess


Por meio deste objeto é possível executar uma rotina em que será disponibilizada ao usuário duas barras de processamento para acompanhamento do processo que está sendo executado. Sintaxe MsNewProcess(): New ( [ bAction], [ cTitle], [ cMsg], [ lAbort] ) Parâmetros bAction = Bloco de código = Bloco de código a ser executado pela janela cTitle = Caracter = Título a ser apresentado na janela cMsg = Caracter = Mensagem apresentada ao usuário na primeira barra de processamento lAbort = Lógico = Caso o parâmetro lAbort seja igual a .T. ele habilita o botão Cancelar, possibilitando o cancelamento do processo utilizado pela janela. Caso contrário, o botão Cancelar fica desabilitado. Por meio deste objeto é possível executar uma rotina em que será disponibilizada ao usuário duas barras de processamento para acompanhamento do processo que está sendo executado. Métodos Activate Cria a janela onde serão apresentadas as barras de processamento. Sintaxe MsNewProcess(): Activate ( ) IncRegua1 Atualiza o valor da primeira barra de progresso. Se o parâmetro cMsg for atribuído o conteúdo do parâmetro cMsg será apresentado na primeira régua de processamento. Sintaxe MsNewProcess(): IncRegua1 ( [ cMsg] ) Parâmetros Nome Tipo Descrição cMsg Caracter Texto a apresentado na primeira barra de progresso. IncRegua2 Atualiza o valor da segunda barra de progresso. Se o parâmetro cMsg for atribuído o conteúdo do parâmetro cMsg será apresentado na segunda régua de processamento. Sintaxe MsNewProcess(): IncRegua2 ( [ cMsg] ) Parâmetros Nome Tipo Descrição cMsg Caracter Texto a apresentado na segunda barra de progresso. SetRegua1 Passa para a primeira régua de processamento a quantidade de registros que a rotina irá processar. O valor passado no parâmetro nSet será utilizado para a contagem da barra de progressão. Sintaxe MsNewProcess(): SetRegua1 ( [ nSet] ) Parâmetros Nome Tipo Descrição nSet Numérico Quantidade de registros a serem processados pela rotina SetRegua2 Passa para a segunda régua de processamento a quantidade de registros que a rotina irá processar. O valor passado no parâmetro nSet será utilizado para a contagem da barra de progressão. Sintaxe MsNewProcess(): SetRegua2 ( [ nSet] ) Parâmetros Nome Tipo Descrição Obrigatório Referência nSet Numérico Quantidade de registros a serem processados pela rotina

User function Relatorio()
    Private oProcess
    oProcess := MsNewProcess():New( { || fProcessa() } , "Imprimindo Relatório" , "Aguarde..." , .F. )
    oProcess:Activate()
Return

Static function fProcessa()
    //Seu codigo
    //sua primeira query
    oProcess:SetRegua1( (cAlias1)->(RecCount()) ) //Alimenta a primeira barra de progresso
    
    //seu código
    While (cAlias1)->(!Eof())
        //processamento da primeira barra de progresso
        oProcess:IncRegua1("Processando primeira barra de progresso")
        //seu codigo
        //Sua segunda query
        oProcess:SetRegua2( (cAlias2)->(RecCount()) ) //Alimenta a segunda barra de progresso
        //seu codigo
        While (cAlias2)->(!Eof())
            //processamento da segunda barra de progresso 
            oProcess:IncRegua2("Processando segunda barra de progresso")
            //seu codigo
            (cAlias2)->(dbSkip())
        EndDo
        (cAlias1)->(dbSkip())
    EndDo
Return