Páginas filhas
  • Processa - Diálogo na execução de processo monitorado

A função Processa() exibe um diálogo onde a execução de um processo pode ser monitorada através da régua de progressão.


Declaração

Processa ( bAction , [ cTitle ] , [ cMsg ] , [ lAbort ] ) --> Nil


Parâmetros

NomeTipoDescriçãoObrigatórioReferência
bActionBloco de códigoBloco de código contendo a ação a ser executadaX
cTitleCaracterTítulo do diálogo

cMsgCaracterMensagem do dialog

lAbortLógicoIndica se o processo pode ou não ser abortado, o valor padrão assumido é .F.


Exemplo
O exemplo abaixo mostra a utilização da função Processa com a utilização das funções ProcRegua() e IncProc().

#include "protheus.ch"

User Function TestProc()
Local aCampos := {}
Local oDlg, oSay1, oLbxLocal oPanel1, oPanel2

Aadd(aCampos,{"", "", ""})

DEFINE MSDIALOG oDlg TITLE "Teste Processa" From 000,0 TO 100,300 OF oMainWnd PIXEL
oDlg:lMaximized := .T.

@ 000, 000 MSPANEL oPanel1 SIZE 10, 50 OF oDlg

oPanel1:align:= CONTROL_ALIGN_TOP

@ 12, 05 SAY oSay1 VAR "O botão Busca traz todos os campos cadastrados no SX3." OF oPanel1 PIXEL
@ 25, 40 BUTTON "Busca" PIXEL SIZE 40,12 OF oPanel1 ACTION U_TestPrc(@aCampos, @oLbx)
@ 25, 100 BUTTON "Fechar" PIXEL SIZE 40,12 OF oPanel1 ACTION oDlg:End()
@ 000, 000 MSPANEL oPanel2 SIZE 10, 90 OF oDlg

oPanel2:align:= CONTROL_ALIGN_ALLCLIENT

@ 30,05 LISTBOX oLbx FIELDS HEADER "Tabela", "Ordem", "Campo" SIZE 60, 30, 100 OF oPanel2 PIXEL

oLbx:SetArray(aCampos)
oLbx:bLine := {|| {aCampos[oLbx:nAt,1],aCampos[oLbx:nAt,2], aCampos[oLbx:nAt, 3]}}
oLbx:align:= CONTROL_ALIGN_ALLCLIENT

ACTIVATE MSDIALOG oDlg CENTERED

Return

User Function TestPrc(aCampos, oLbx)

Processa( {|| U_TestSX3(aCampos) }, "Aguarde...", "Carregando definição dos campos...",.F.)
oLbx:SetArray(aCampos)
oLbx:bLine := {|| {aCampos[oLbx:nAt,1],aCampos[oLbx:nAt,2], aCampos[oLbx:nAt, 3]}}
oLbx:Refresh()

Return

User Function TestSX3(aCampos)

aCampos := {}
DbSelectArea("SX3")
DbGoTop()
ProcRegua(RecCount())

WHILE !Eof()
    IncProc()
    Aadd(aCampos, {X3_ARQUIVO, X3_ORDEM, X3_CAMPO})
    DbSkip()
END

Return