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.
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?
Bom dia Jose, tudo bem?
Qual é o tamanho do campo?
Campos do tipo Combo, para funcionarem corretamente no browse, tem que ter tamanho igual a 1.
Acredito que esteja aí o problema, então. Quem fez essa customização, colocou as opções com mais de um caracter. Muito obrigado! Vou resolver!!! Abração!!!
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.
Bom dia Jackson, tudo joia?
Obrigado pelo comentário e feedback.
Tente, após fazer a atualização do seu combo, usar a função GetDRefresh() para atualizar os objetos da tela.