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.