Como ter inúmeras opções em um campo Combo no Protheus?

Hoje vou mostrar como ter inúmeras opções em um campo Combo no Protheus via AdvPL.

Algumas vezes precisamos criar um campo do tipo Combo Box no Protheus, porém no Configurador, a lista de opções (campo X3_CBOX) tem um pouco mais de 100 caracteres.

Portanto, se você precisar criar inúmeras opções, você terá um espaço limitado. Mas como resolveríamos isso?

O Protheus tem um recurso nativo, que ele pode chamar funções para carregar nas opções do combo. Para isso, basta começar com o caractere # (cerquilha). Por exemplo, colocar na lista de opções #u_zOpcoes() .

E sua função, teria o seguinte conteúdo:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zOpcoes
Função para retornar uma lista de opções em um campo combo
@author Atilio
@since 29/10/2018
@version 1.0
@type function
/*/

User Function zOpcoes()
Local aArea   := GetArea()
Local cOpcoes := ""

//Montando as opções de retorno
cOpcoes += "1=Opção 1;"
cOpcoes += "2=Opção 2;"
cOpcoes += "3=Opção 3;"
cOpcoes += "4=Opção 4;"
cOpcoes += "5=Opção 5;"
cOpcoes += "6=Opção 6;"
cOpcoes += "7=Opção 7;"
cOpcoes += "8=Opção 8;"
cOpcoes += "9=Opção 9;"
cOpcoes += "0=Opção 0;"
cOpcoes += "A=Opção A;"
cOpcoes += "B=Opção B;"
cOpcoes += "C=Opção C;"
cOpcoes += "D=Opção D;"
cOpcoes += "E=Opção E;"
cOpcoes += "F=Opção F;"
cOpcoes += "G=Opção G;"

RestArea(aArea)
Return cOpcoes

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

5 Responses

  1. Jose Santos disse:

    Sei que o post é um pouco antigo, mas me deparei com a seguinte situação ao usar algo parecido com o que foi indicado acima.
    Ao colocar o campo combo com inúmeras opções no Browse o valor dele não aparece…. é gravado no banco normalmente, consigo usar sem problemas no AdvPL, porém, no Browse aparece como se estivesse em branco.
    Alguém passando por isso?

  2. Jackson disse:

    Parabéns pelo belo trabalho, estou com o seguinte problema, ao alterar para uma opção do combobox e ele não atingir alguns requisitos ele precisa voltar para o Default 1, usei o M-> para alterar o valor do campo e grava normal no banco porém visualmente ele n atualiza continua com a opção que tinha sido selecionada.

Deixe uma resposta