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.
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?
Boa tarde Robson, tudo joia?
Então, no caso para picture variável (máscara) eu já vi. Mas para combo, eu nunca vi em telas padrões (seja mvc ou mais antigas).
Não sei, se pelo dicionário (SX3), daria para você configurar algo nesse sentido. Pois quando você abre a tela, ele vai executa a função para definir as opções do combobox.
Agora se você estiver montando uma tela manualmente, ai daria, segue um exemplo: https://terminaldeinformacao.com/2022/11/28/fazer-um-combo-filtrar-outro-combo-ti-responde-032/
Abraços.
Tudo joia.
Obrigado, vou verificar aqui