24 Comentários

  1. Helio

    Olá amigo! Consegui carregar meus clientes cadastrados no combobox, obrigado!
    Agora, como faço para que, quando selecionar um cliente, o CPF deste cliente seja carregado em outro campo?


  2. Oi Helio, que bom que conseguiu! 🙂
    Para carregar o CPF ou qualquer outro campo do cliente, você vai ter que programar no evento “OnClick” do seu ComboBox ou colocar um botão abrindo a sua tabela posicionada no cliente que está selecionado no ComboBox. Você vai ter que fazer um SQL passando como parâmetro o Objeto que carregou no ComboBox.

    Vai ficar algo do tipo:

    SELECT * FROM SUA_TABELA WHERE SEU_CAMPO_CARREGADO_COMO_OBJETO_NO_COMBOBOX =:PARAMETRO

    Query.Close;
    Query.Params[0].AsInteger:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);
    Query.Open;

    Abraços.

  3. Gabriel Souza

    Olá, Felipe

    Gostei muito do seu post.
    Minha duvida é a seguinte eu preencho o combobox:
    ComboBox1.Items.Clear;
    ComboBox1.Items.AddObject(‘ATIVO’, TObject(1));
    ComboBox1.Items.AddObject(‘CANCELADO’, TObject(2));
    ComboBox1.Items.AddObject(‘TRANSFERIDO’, TObject(3));
    ComboBox1.Items.AddObject(‘DESISTENTE’, TObject(4));

    Como eu consigo setar o combobox passando somente o código do objeto?
    exemplo:
    código 2 – tem que setar o combobox com a palavra ‘CANCELADO’ tipo um IndexOfObject (ComboBox1.Items.IndexOfObject(TObject(2));)


  4. Fala Gabriel! Obrigado pela visita, que bom que gostou!!

    Para setar o combobox basta fazer da seguinte forma:

    combobox.ItemIndex:=combobox.Items.IndexOfObject(TObject(2));

    Abraços!

  5. Rodolfo

    Excelente exemplo muito útil, valeu!

  6. Alysson

    Oi Felipe
    Sou Novo No Delphi.
    Estou Trabalhando Com Json.
    Queria Lista Todos Os Estados Brasileiros (UF)

    // var do combobox
    var

    retCliente : TFDJSONDataSets;
    itemadd : TComboBox;
    ClientRest : TServerMethods1Client;

    // Tratando ComboBox
    begin
    // Tratando O Json
    ClientRest := TServerMethods1Client.Create(ClientModule1.DSRestConnection1);
    retCliente := ClientRest.ListaEstado;

    Assert(TFDJSONDataSetsReader.GetListCount(retCliente)= 1);
    FDMemTable1.Close;
    FDMemTable1.AppendData(TFDJSONDataSetsReader.GetListValue(retCliente,0));
    FDMemTable1.First;

    // Fim Do Tratamento Do Json

    boxEstado.Items.Clear;
    while not FDMemTable1.Eof do
    begin
    itemadd := boxEstado.Items.Add(FDMemTable1.FieldByName(‘UF’).AsString);

    FDMemTable1.Next;
    itemadd := integer(boxEstado.Items[boxEstado.ItemIndex]);
    end;

    end;

    Nao Consigo Compilar Por Que Diz Que A Minha Variavel “itemadd” Tem Type Int
    Pode Me Ajudar?
    Tentei Varias Formas E Nao Estou Conseguindo : (


  7. Bom dia Alysson, experimenta colocar:

    boxEstado.Items.Add(FDMemTable1.FieldByName(‘UF’).AsString)

    E nesse caso nem precisa da variável “itemadd”.

    Abraços!

  8. Paulinho

    Ola Felipe Machado estou precisando da tua ajuda, de que forma eu faço para usar no Mobile com Delphi


  9. Olá Paulinho!

    É um pouco “complicado” mas não é nenhum bicho de 7 cabeças. Basicamente é configurar o Sdk dentro do Delphi, instalar o drive do seu celular e pronto. Sugiro compilar diretamente no seu dispositivo pois o emulador é muito lento. Infelizmente não tenho ainda nenhum material para Mobile disponível. Mas joga no YouTube que tem muita coisa boa lá.

    Abraços!

  10. Marco Oliveira

    Olá Felipe. Fico grato por sua disposição em ajudar.
    Tenho a seguinte dúvida: Preenchi a combobox com a propriedade Items. No banco salvei o index do item selecionado, exemplo: Item (String) Index (2). No banco banco gravou 2.
    Como recuperar numa grid o nome String?

  11. João marjonio

    Olá muito bom o seu post Felipe Machado no início do seu post o amigo vez uma segundo passo uma variável ela é colocada em qual componente. Obrigado

  12. Joao

    Amigo a variável deve ser posicionado em qual componente.

  13. JOSE ROBERTO REDIGOLO

    Olá Felipe,
    Parabéns pela dica. Eu preciso agora mudar o text do combobox conforme o codigo do cliente que eu salvei com a sua dica: Exemplo: salve ‘Fulano de Tal’ codigo 1; ‘Cicrano de Tal’ codigo 2; ‘Beltrano de Tal’ codigo 3. Quando eu faço combobox.itemindex = 1 ele me mostra o ‘Cicrano de Tal’, ou seja, ele usa o itemindex original de -1,0,1,2.. Assim por diante. Como fazer para que ele retorne o cliente certo a partir do código dele?
    Abraços,
    Zé Roberto


  14. Oi Zé Roberto! Desculpe a imensa demora, acredito que já tenha resolvido, mas vou deixar a solução pois pode ajudar outro programador. Para posicionar no cadastro correto você deve passar exatamente o código do cliente como objeto para o combobox:

    combobox.ItemIndex:=combobox.Items.IndexOfObject(TObject(SuaTabela.FieldByName(SeuCampoChave).AsInteger));


  15. Bom dia Marco, para mostrar no dbGrid o valor correspondente ao index, você pode utilizar um campo calculado ou se tiver uma tabela de itens no banco de dados, fazer um join.

    Abraços!


  16. Então João, como disse antes, pode ser uma variável local ou global… Qualquer variável pode receber o valor do objeto.

    Abraços!

  17. Lindemberg

    Cara essa solução gera MemoryLeaks…ou seja , lixo de memoria pois esses obejtos que voce adiciona, nao sao destruidos… eis o problema.


  18. Boa Tarde Lindemberg, obrigado pela visita!

    Eu utilizo essa solução em todos os meus projetos com monitoramento de “MemoryLeak” e não tenho problemas de liberação de memória. Se quiser fazer um teste, crie um projeto novo e adicione um combobox.

    No OnCreate do Form acrescente:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ReportMemoryLeaksOnShutdown:=True;

    ComboBox1.Items.AddObject(‘1’,TObject(1));
    ComboBox1.Items.AddObject(‘2’,TObject(2));
    ComboBox1.Items.AddObject(‘3’,TObject(3));
    end;

    Encerre a aplicação e verifique se vai reportar algum erro. Caso encontre alguma brecha me dá um toque aqui para corrigir o post.

    Abraços!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *