|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Home → WINDEV 25 → Como dar uma carga em um combo no Windev e Webdev |
Como dar uma carga em um combo no Windev e Webdev |
Started by Boller, Mar., 26 2025 7:11 PM - No answer |
| |
| | | |
|
| |
Registered member 4,520 messages |
|
Posted on March, 26 2025 - 7:11 PM |
Boa tarde
Tudo bem com vcs?
Vou criar dois exemplos detalhados e criativos de como carregar um controle Combo no WinDev e WebDev usando gLink, perfeitos para um treinamento de novos usuários.
Vamos lá!
Exemplo 1: Carregando um Combo com Filiais e Códigos (WinDev)
Imagine que você está desenvolvendo um sistema para uma rede de pizzarias intergalácticas. Cada filial tem um código único, e o usuário precisa selecionar a filial pelo nome (ex.: “Terra” ou “Marte”), mas o sistema deve usar o código internamente para processar pedidos de pizza espacial. Código
// Procedure: CarregaComboFiliais - Carrega o Combo com nomes de filiais e seus códigos via gLink
Procedure CarregaComboFiliais()
// Simulando dados de filiais (em um sistema real, viria de um banco de dados) filiais is array of strings = ["001 - Terra", "002 - Marte", "003 - Júpiter"] codigos is array of ints = [1, 2, 3]
// Limpando o Combo antes de carregar ComboFilial.DeleteAll()
// Carregando o Combo com gLink FOR i = 1 TO filiais..Count ListAdd(ComboFilial, filiais[i] + gLink(codigos[i])) END
// Selecionando a primeira filial por padrão ComboFilial..Value = ComboFilial[1]
Info(ComboFilial..Value)
Explicação Detalhada • Procedure CarregaComboFiliais: Define o nome da procedure e sua função. • filiais e codigos: Arrays simulando dados. Em um sistema real, você substituiria isso por uma query como HExecuteQuery. • ComboFilial.DeleteAll(): Limpa o Combo para evitar duplicatas ou dados antigos. • FOR i = 1 TO filiais..Count: Loop que percorre os arrays. • ListAdd(...): Adiciona cada filial ao Combo, concatenando o nome com o código via gLink, que associa o código “escondido” ao item visível. • ComboFilial..Value: Define o primeiro item como padrão para facilitar a vida do usuário.
Como Usar Chame CarregaComboFiliais() no evento “Inicialização” da janela.
Exemplo 2:
Carregando um Combo com Produtos e IDs (WebDev) Cenário Criativo Você está criando um site de e-commerce para vender gadgets tecnológicos. Cada produto tem um ID único, e o usuário seleciona o produto pelo nome (ex.: “Drone X”), mas o sistema usa o ID para adicionar ao carrinho.
Código
// Procedure: CarregaComboProdutos - Carrega o Combo com nomes de produtos e seus IDs via gLink
Procedure CarregaComboProdutos()
// Supondo uma query que busca produtos HExecuteQuery("SELECT ID, Nome FROM Produtos", "Produtos")
// Limpando o Combo ComboProduto.DeleteAll()
// Carregando o Combo com gLink HReadFirst("Produtos") WHILE NOT HOut("Produtos") ListAdd(ComboProduto, HRead("Produtos").Nome + gLink(HRead("Produtos").ID)) HReadNext("Produtos") END
// Fechando a query HClose("Produtos")
// Selecionando o primeiro produto por padrão IF ComboProduto..Count > 0 THEN ComboProduto..Value = ComboProduto[1] END
Explicação Detalhada • HExecuteQuery(...): Executa uma query para buscar produtos no banco de dados. • ComboProduto.DeleteAll(): Limpa o Combo antes de carregar novos dados. • HReadFirst e WHILE NOT HOut: Loop que percorre os registros da query. • ListAdd(...): Adiciona o nome do produto ao Combo e associa o ID com gLink. • HClose("Produtos"): Libera a query da memória (boa prática!). • IF ComboProduto..Count > 0: Só define um valor padrão se houver itens no Combo.
Como Usar
Chame CarregaComboProdutos() no evento “Inicialização” da página.
Recuperando o Valor Selecionado com `gLink` Agora, vamos mostrar como pegar o valor associado ao item selecionado, adaptando o exemplo da query do usuário.
Código
// Procedure: ObtemCodigoSelecionado - Obtém o código selecionado via gLink
Procedure ObtemCodigoSelecionado()
// Pegando o índice selecionado indice is int = ComboFilial..Selected
// Obtendo o código via gLink codigo is int = gLink(ComboFilial[indice])
// Pegando o valor exibido (ex.: "001 - Terra") valorExibido is string = ComboFilial..DisplayedValue
// Exemplo: Extraindo o "001" do valor exibido
// aqui está o segredo o pulo do gato!
filial is string = ExtractString(valorExibido, 1, " - ", FromBeginning)
// Exibindo os resultados Info("Filial: " + filial + " | Código: " + codigo)
Explicação Detalhada • ComboFilial..Selected: Retorna o índice do item selecionado (começa em 1). • gLink(ComboFilial[indice]): Extrai o valor “escondido” associado ao item (o código). • ComboFilial..DisplayedValue: Pega o texto visível no Combo (ex.: “001 - Terra”). • ExtractString(...): Divide o texto exibido em partes, pegando o primeiro trecho antes do “ - “ (ex.: “001”). • Info(...): Mostra o resultado para o usuário. Adaptação ao Exemplo do Usuário No seu exemplo: ListAdd(ComboArmazemEmpreteiraNF, dsSelect.COD_FILIAL_TOTVS + " - " + dsSelect.NOME_EMPREITEIRA + gLink(dsSelect.COD_EMPREITEIRA)) • Para recuperar o código da empreiteira:
codigoEmpreiteira is int = gLink(ComboArmazemEmpreteiraNF[ComboArmazemEmpreteiraNF..Selected]) • • Para pegar a filial exibida:
filialDestino is string = ExtractString(ComboArmazemEmpreteiraNF..DisplayedValue, 1, " - ", FromBeginning) • Info("Filial destino: " + filialDestino) •
Boas Práticas 1 Limpe o Combo antes de carregar: Use DeleteAll() para evitar duplicatas. 2 Defina um valor padrão: Melhora a usabilidade. 3 Feche queries: Use HClose() em WebDev para liberar recursos. 4 Teste o gLink: Certifique-se de que o controle suporta valores associados.
Espero que esses exemplos sejam úteis para o seu treinamento!
Se precisar de mais detalhes ou quiser adaptar algo, é só avisar. Um abraço!
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|