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)
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.

8 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.

  3. Robson Behr de Oliveira Soares disse:

    Mestre, boa tarde.
    Estou tentando realizar este teste aqui.
    No caso, temos um gatilho que ativaria umas opcoes
    Ex:

    Destino compra – 10, 20 , 30….
    Tipo compra – MC, SV, AI..

    Se usuario escolher 10 supondo que a regra aqui para destino 10 ele pode escolher MC e SV
    ai o campo iria mostrar só essas duas opções.
    Se usuario escolher 20, só aparece AI por exemplo sabe.?

    Não estamos conseguindo fazer essa validação.
    Tem alguma ideia?
    Ou dica?

  4. Robson disse:

    Tudo joia.
    Obrigado, vou verificar aqui

Deixe uma resposta

Terminal de Informação