Classe: 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.



New

Cria o objeto da MsNewProcess


MsNewProcess(): New ( [ bAction], [ cTitle], [ cMsg], [ lAbort] ) -->



NomeTipoDescriçãoObrigatórioReferência
bActionBloco de códigoBloco de código a ser executado pela janela

cTitleCaracterTítulo a ser apresentado na janela

cMsgCaracterMensagem apresentada ao usuário na primeira barra de processamento

lAbortLógicoCaso 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.



Activate

Cria a janela onde serão apresentadas as barras de processamento.


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.


MsNewProcess(): IncRegua1 ( [ cMsg] ) -->



NomeTipoDescriçãoObrigatórioReferência
cMsgCaracterTexto 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.


MsNewProcess(): IncRegua2 ( [ cMsg] ) -->



NomeTipoDescriçãoObrigatórioReferência
cMsgCaracterTexto 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.


MsNewProcess(): SetRegua1 ( [ nSet] ) -->



NomeTipoDescriçãoObrigatórioReferência
nSetNuméricoQuantidade 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.


MsNewProcess(): SetRegua2 ( [ nSet] ) -->



NomeTipoDescriçãoObrigatórioReferência
nSetNuméricoQuantidade de registros a serem processados pela rotina




Exemplo
#include "protheus.ch"

//-------------------------------------------------------------------
/*/{Protheus.doc} F114299
    Exemplo de utilização da MsNewProcess
@author Totvs
@since 29/04/2024
//-----------------------------------------------------------------*/
Function U_F114299()
	Local oProcess//incluído o parâmetro lEnd para controlar o cancelamento da janela
	oProcess := MsNewProcess():New({|lEnd| T114299(@oProcess, @lEnd) },"Teste MsNewProcess","Lendo Registros do Pedido de Vendas",.T.)
	oProcess:Activate()
Return

//-------------------------------------------------------------------
/*/{Protheus.doc} T114299
    Processamento
@author Totvs
@since 29/04/2024
//-----------------------------------------------------------------*/
static Function T114299(oProcess, lEnd)
	Local nCountC5
	Local nCountC6  
    
    //inserido este bloco
	Default lEnd := .F.
	
    DbSelectArea("SC5")
	DbSetOrder(1)
	DbGotop()
	nCountC5 := SC5->(RecCount())
	oProcess:SetRegua1(nCountC5)
	
    While SC5->(!Eof())
		sleep(300)
		If lEnd
            //houve cancelamento do processo		
			Exit
		EndIf

		oProcess:IncRegua1("Lendo Pedido de Venda:" + SC5->C5_NUM)
		DbSelectArea("SC6")
		DbSetOrder(1)
		DbClearFil()
		Set Filter to SC6->C6_FILIAL == xFilial("SC5") .And. SC6->C6_NUM == SC5->C5_NUM
		COUNT to nCountC6
		oProcess:SetRegua2(nCountC6)
		
        While SC6->(!Eof())
            //inserido este bloco		
			If lEnd
                //houve cancelamento do processo			
				Exit
			EndIf
			oProcess:IncRegua2("Pedido: "+SC5->C5_NUM+" - Item: "+SC6->C6_ITEM)
			sleep(300)
			conout("Item: "+SC6->C6_ITEM)
			SC6->(DbSkip())
		End
		SC5->(DbSkip())
	End
Return



Microsiga Protheus 8.11 , Protheus 10


  • Sem rótulos