Tela para processamento - MsAguarde()


Monta tela de processamento para múltiplas mensagens, na teoria o botão cancelar que aparece deveria funcionar a qualquer momento, mas só na função User principal. A sintaxe é simples:

MSAguarde( bAcao, cTitulo ,cMensagem,lAbortar)
Parâmetros:
//onde:
bAcao = Bloco de código que será executado
cTitulo = Titulo da tela de processamento
cMensagem = Mensagem que será exibida durante o processamento
lAborta = .T. habilita o botão Cancelar, .F. desabilita o botão (opção padrão)
Exemplo:
User Function Processamento()

    MsAguarde({|lFim| Processa(@lFim)},"Processamento","Aguarde a finalização do processamento...")

Return

Static Function Processa(lFim)
    For i := 1 to 1000
      If lFim
          MsgInfo("Cancelado!","Fim")
          Exit
      Endif

      MsProcTxt("Lendo "+Alltrim(str(i)))
   Next
Return
Lembrando que não é obrigatório informar o titulo, a mensagem e o parametro para habilitar o cancelamento Particulamente, prefiro usar o Processa() e o MsNewProcess(), mostrar a barra de progresso dá a impressão que a rotina está realmente sendo executada. Espero que tenha sido útil a dica...