Abrindo uma tela de parâmetros com a ParamBox – Maratona AdvPL e TL++ 380

Nesse vídeo demonstraremos a utilização da função ParamBox, que serve para abrir uma tela com parâmetros a serem informados.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe380
Abre uma tela de parâmetros para o usuário informar nos campos
@type Function
@author Atilio
@since 28/03/2023
@obs 

    Função ParamBox
    Parâmetros
        Array com as definições das perguntas
        Título da Janela
        Array de retorno caso queira utilizar no lugar das variáveis MV_PAR**
        Bloco de código executado ao clicar em Confirmar
        Array de outros botões que serão exibidos na tela
        Define se a janela será aberta centralizada (.T.) ou não (.F.)
        Define a coordenada em x que a janela será aberta
        Define a coordenada em y que a janela será aberta
        Nome do Objeto / Wizard, em que a pergunta será exibida dentro
        Nome da rotina que esta carregando (que depois será salva no profile caso seja gravado)
        Define se os botões de salvar estarão habilitados
        Define se será salvo por perfil de usuário
    Retorno
        Retorna .T. se foi clicado em Confirmar ou .F. se foi em Cancelar

    Obs.: Caso queiram fazer validações no ParamBox, recomendo a leitura desse artigo:
    

    Obs.2: Caso desejam ver as posições de cada uma das opções do Array com as definições
    de perguntas, recomendo a leitura do artigo disponibilizado pelo pessoal do BlackTDN:
    https://www.blacktdn.com.br/2012/05/para-quem-precisar-desenvolver-uma.html

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe380()
    Local aArea      := FWGetArea()
    
    fExempSimp()

    fExempComp()

    FWRestArea(aArea)
Return

Static Function fExempSimp()
    Local aPergs   := {}
    Local cProdDe  := Space(TamSX3('B1_COD')[01])
    Local cProdAt  := Space(TamSX3('B1_COD')[01])
    Local dDataDe  := FirstDate(Date())
    Local dDataAt  := LastDate(dDataDe)
    Local nTipo    := 3
    
    //Adiciona as perguntas utilizadas na tela de parâmetros
    aAdd(aPergs, {1, "Produto De",  cProdDe,  "", "ExistCPO('SB1')", "SB1", ".T.", 60,  .F.})
    aAdd(aPergs, {1, "Produto Até", cProdAt,  "", "ExistCPO('SB1')", "SB1", ".T.", 60,  .T.})
    aAdd(aPergs, {1, "Data De",  dDataDe,  "", ".T.", "", ".T.", 80,  .F.})
    aAdd(aPergs, {1, "Data Até", dDataAt,  "", ".T.", "", ".T.", 80,  .T.})
    aAdd(aPergs, {2, "Tipo do Filtro",      nTipo, {"1=Não Bloqueados", "2=Somente Bloqueados", "3=Ambos"},  090, ".T.", .F.})

    //Se a pergunta foi confirmada    
    If ParamBox(aPergs, "Informe os parâmetros")
        MV_PAR05 := Val(cValToChar(MV_PAR05))

        FWAlertSuccess("Pergunta confirmada", "Teste Simples de ParamBox")
    EndIf

Return

Static Function fExempComp()
    Local aPergs   := {}
    Local cProduto := Space(TamSX3('B1_COD')[01])
    Local nTipoCmb := 3
    Local nTipoRad := 3
    Local lFiltArm := .T.
    Local lFiltGrp := .T.
    Local cArquivo := "C:\spool\teste.txt"
    
    //Adiciona as perguntas utilizadas na tela de parâmetros
    aAdd(aPergs, { 1, "01 (Get) - Informe o Produto",        cProduto,  "", "ExistCPO('SB1')", "SB1", ".T.", 60,  .T.})
    aAdd(aPergs, { 2, "02 (Combo) - Tipo",                   nTipoCmb, {"1=Não Bloqueados", "2=Somente Bloqueados", "3=Ambos"},  090, ".T.", .F.})
    aAdd(aPergs, { 3, "03 (Radio) - Tipo",                   nTipoRad, {"1=Não Bloqueados", "2=Somente Bloqueados", "3=Ambos"},  090, ".T.", .F., ".T."})
    aAdd(aPergs, { 4, "04 (CheckBox) - Filtra Armazém 01",   lFiltArm, "Sim, será filtrado",  090, ".T.", .F.})
    aAdd(aPergs, { 5, "05 (CheckBox) - Filtra Grupo G001",   lFiltGrp, 100, ".T."})
    aAdd(aPergs, { 6, "06 (File) - Caminho do arquivo",      cArquivo, "", ".T.", ".T.", 100, .F., "Arquivos txt|*.txt| Arquivos csv|*.csv", "C:\spool\", GETF_LOCALHARD  + GETF_NETWORKDRIVE, .T.})
    aAdd(aPergs, { 7, "07 (Filtro) - Filtro específico",     "SB1", "", .T.})
    aAdd(aPergs, { 8, "08 (Password) - Informe a Senha",     "beluga",  "", ".T.", "", ".T.", 60,  .T.})
    aAdd(aPergs, { 9, "09 (Say) - Apenas uma frase",         100, 20, .T.})
    aAdd(aPergs, {10, "10 (Range) - Range de dados",         "", "SB1", 110, "C", 50, ".T."})
    aAdd(aPergs, {11, "11 (Memo) - Digite uma frase",        "aaaa", ".T.", ".T.", .F.})
    aAdd(aPergs, {12, "12 (Filtro) - Informe o filtro",      "SB1", "", ".T."})

    //Se a pergunta foi confirmada    
    If ParamBox(aPergs, "Informe os parâmetros", , , , , , , , , .F., .F.)
        MV_PAR02 := Val(cValToChar(MV_PAR02))
        MV_PAR03 := Val(cValToChar(MV_PAR03))

        FWAlertSuccess("Pergunta confirmada", "Teste Completo de ParamBox")
    EndIf

Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação