Inputbox no Protheus


Já se perguntou como fazer um inputbox no Protheus? Inputbox é aquela famosa janelinha com um campo texto e os botões Ok e Cancelar. Função Parambox P11e P12 No Protheus tem uma função bem parecida e por sinal melhorada, isso porque ela cria este inputbox com outros tipos de campos e novos botões além dos dois tradicionais, podendo combiná-los na mesma tela. Campos permitidos: MsGet Combo Radio CheckBox Arquivo (tipo upload) Montagem de expressão de filtro Campo senha Campo Memo Filtro

Parametros ExpA1 : Array contendo os parametros 
[1] Tipo do parametro - 
1 - MsGet 
[2] : Descricao 
[3] : String contendo o inicializador do campo 
[4] : String contendo a Picture do campo 
[5] : String contendo a validacao 
[6] : Consulta F3 
[7] : String contendo a validacao When 
[8] : Tamanho do MsGet 
[9] : Flag .T./.F. Parametro Obrigatorio ? 

2 - Combo 
[2] : Descricao 
[3] : Numerico contendo a opcao inicial do combo 
[4] : Array contendo as opcoes do Combo 
[5] : Tamanho do Combo 
[6] : Validacao 
[7] : Flag .T./.F. Parametro Obrigatorio ? 

3 - Radio 
[2] : Descricao 
[3] : Numerico contendo a opcao inicial do Radio 
[4] : Array contendo as opcoes do Radio 
[5] : Tamanho do Radio 
[6] : Validacao 
[7] : Flag .T./.F. Parametro Obrigatorio ? 
[8] : String contendo a validacao When 

4 - CheckBox ( Com Say ) 
[2] : Descricao 
[3] : Indicador Logico contendo o inicial do Check 
[4] : Texto do CheckBox 
[5] : Tamanho do Radio 
[6] : Validacao 
[7] : Flag .T./.F. Parametro Obrigatorio ? 

5 - CheckBox ( linha inteira ) 
[2] : Descricao 
[3] : Indicador Logico contendo o inicial do Check 
[4] : Tamanho do Radio 
[5] : Validacao 
[6] : Flag .T./.F. Parametro Obrigatorio ? 

6 - File 
[2] : Descricao 
[3] : String contendo o inicializador do campo 
[4] : String contendo a Picture do campo 
[5] : String contendo a validacao 
[6] : String contendo a validacao When 
[7] : Tamanho do MsGet 
[8] : Flag .T./.F. Parametro Obrigatorio ? 
[9] : Texto contendo os tipos de arquivo Ex.: "Arquivos .CSV |*.CSV" 
[10]: Diretorio inicial do cGetFile 
[11]: PARAMETROS do cGETFILE 
[12]: Se .T. apresenta árvore do servidor 

7 - Montagem de expressao de filtro 
[2] : Descricao 
[3] : Alias da tabela 
[4] : Filtro inicial 
[5] : Opcional - Clausula When Botao Editar Filtro 

8 - MsGet Password 
[2] : Descricao 
[3] : String contendo o inicializador do campo 
[4] : String contendo a Picture do campo 
[5] : String contendo a validacao 
[6] : Consulta F3 
[7] : String contendo a validacao When 
[8] : Tamanho do MsGet 
[9] : Flag .T./.F. Parametro Obrigatorio ? 

9 - MsGet Say 
[2] : String Contendo o Texto a ser apresentado 
[3] : Tamanho da String 
[4] : Altura da String 
[5] : Negrito (logico) 

10- Range (experimental) 
[2] : Descricao 
[3] : Range Inicial 
[4] : ConsultaF3 
[5] : Largo em pixels do Get 
[6] : Tipo 
[7] : Tamanho do campo (em chars) 
[8] : String contendo a validacao When 

11-MultiGet (MEMO) 
[2] : Descrição 
[3] : Inicializador padrão 
[4] : String contendo o VALID 
[5] : String contendo o WHEN 
[6] : Flag .T./.F. Parametro Obrigatorio ? 

12-Filtro de usuario por rotina 
[2] : Titulo do filtro 
[3] : Alias da tabela onde vai aplicar o filtro 
[4] : Expressao de filtro de inicio 
[5] : String contendo o WHEN 

ExpC2 : Titulo da Janela 
ExpA3 : Array passado por referencia que contem o retorno 
dos parametros.
  A função Parambox serve para criar a tela de parâmetros dinâmica como alternativa à função padrão Pergunte, porem não utiliza a tabela SX1 do dicionário de dados. O retorno da função é verdadeiro se pressionado o botão "OK" ou falso se pressionado botão "Cancel", no array aRet será carregado com as respostas das perguntas.   ParamBox2 Exemplo:
#Include 'Protheus.ch'

User Function ExParam()
    Local aPergs   := {}
    Local cCodRec  := space(08)
    Local cRecDest := space(08)
    Local cArquivo := padr("",150)
    Local aRet	   := {}

    aAdd( aPergs ,{1,"Campo bloqueado",cCodRec,"@",".F.",,".F.",40,.F.})
    aAdd( aPergs ,{1,"Campo texto",cRecDest,"@!","!Empty(mv_par02)",,".T.",40,.T.})
    aAdd( aPergs ,{6,"Arquivo",cArquivo,"",,"", 90 ,.T.,"Arquivos .CSV |*.CSV","C:\",GETF_LOCALHARD+GETF_LOCALFLOPPY+GETF_NETWORKDRIVE})
    aAdd( aPergs ,{2,"Combobox","Não",{"Sim", "Não" },60,"",.T.})

    If ParamBox(aPergs ,"Exemplo",aRet)
        Aviso("Recurso original:"+aRet[1]+ " substituido pelo recurso:" + aRet[2])
    Else
        Aviso("Processo cancelado")
    EndIf
Return .T.