Como definir o conteúdo de um parâmetro de pergunta antes de exibir a tela

No artigo de hoje, vamos demonstrar em como atualizar os valores de parâmetros de um ParamBox ou Pergunte antes da tela de parâmetros ser exibida.

Imagine o seguinte cenário, você tem um relatório ou tela, e já quer trazer pré preenhido, informações como por exemplo, a data de e até já vir com o mês em questão, ou parâmetros como o Código de e até já virem com o conteúdo de branco a ZZZ.

Pensando nisso, resolvemos montar esse artigo de exemplo. Sendo que há duas formas, uma para o Pergunte e uma para o ParamBox.

 

Pergunte:

Há muito tempo atrás, em meados de 2016, eu criei uma função chamada zAtuPerg, que depois acabou sendo inspirando a famosa SetMVValue ( https://terminaldeinformacao.com/2017/02/28/funcao-altera-conteudo-de-perguntas-mv_par-em-advpl/ ).

Então para esse cenário é mais simples, basta acionar a função para atualizar os parâmetros antes de acionar a função Pergunte, ficando da seguinte forma (abaixo um exemplo atualizando para que os parâmetros fiquem de branco a zzz):

//Atualiza os parâmetros
SetMvValue(cPerg, "MV_PAR01", Space(6))          //Código de  vai vir com "      "
SetMvValue(cPerg, "MV_PAR02", Replicate("Z", 6)) //Código até vai vir com "ZZZZZZ"

//Aciona a tela de parâmetros
If Pergunte(cPerg, .T.)
	//...
EndIf

ParamBox:

Para o ParamBox, ai você até pode usar a ParamSave() e ParamLoad() para fazer a gravação e carregamento das opções. Mas nesse exemplo, iremos demonstrar em como fazer nativamente direto no Array que vai para o ParamBox.

Então a princípio você define os valores nas variáveis, depois adiciona elas no Array, e quando for exibir o ParamBox, passa a opção para não salvar as parametrizações.

Abaixo um exemplo, também com branco a zzz:

//Define os valores iniciais dos parâmetros
cCodigoDe  := Space(6)
cCodigoAte := Replicate("Z", 6)

//Cria os parâmetros que serão exibidos
aPergs := {}
aAdd(aPergs, {1, "Código De",   cCodigoDe,   "", ".T.", "", ".T.", 60,  .F.})
aAdd(aPergs, {1, "Código Até",  cCodigoAte,  "", ".T.", "", ".T.", 60,  .T.})

//Aciona a tela de parâmetros (sem a opção de salvar)
If ParamBox(aPergs, "Informe os parâmetros", , , , , , , , , .F., .F.)
	//...
EndIf

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