Com apenas dois passos, você vai aprender de uma vez por todas como manipular objetos utilizando combobox no Delphi.
O componente combobox é da classe TComboBox. Este tipo de componente combina uma caixa de texto, associada a uma lista de itens. O combobox é muito útil quando precisamos disponibilizar ao usuário uma lista de opções. E dentre elas, apenas uma será selecionada.
Com o combobox, você tem a opção de adicionar itens correspondentes a uma tabela no seu banco de dados. Ou também, pode listar itens fixos.
Uma das vantagens deste componente, é o fato de oferecer uma grande variedade de opções ao usuário. Ocupando pouco espaço no formulário. Além de ser muito simples a sua configuração.
Em algumas situações, você pode precisar associar os itens a um determinado campo chave na sua tabela.
Vamos imaginar então, o seguinte cenário:
Você precisa listar os nomes dos produtos cadastrados na sua tabela em um ComboBox. Amarrando o item selecionado ao seu respectivo código na tabela. Como se fosse um DBLookupComboBox.
COMO MANIPULAR OBJETOS UTILIZANDO COMBOBOX NO DELPHI
Primeiro passo: carregar os nomes dos produtos da sua tabela e seus respectivos códigos como objetos no ComboBox.
ComboBox.Items.Clear;
TabelaProdutos.Close;
TabelaProdutos.Open;
TabelaProdutos.First;
while not TabelaProdutos.Eof do
begin
ComboBox.Items.AddObject(TabelaProdutosNOME.AsString,TObject(TabelaProdutosCODIGO.AsInteger));
TabelaProdutos.Next;
end;
Agora você já tem os itens da sua tabela de produtos listados no seu ComboBox. Seus respectivos códigos estão carregados como objetos.
como acessamos esses objetos? Veja a seguir…
Segundo passo: acessando os objetos do ComboBox.
SuaVariavel:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);
Pronto, sua variável está com o código do produto selecionado no seu ComboBox.
Dúvidas? Deixe um comentário abaixo.
Link permanente
Gostei da dica
Link permanente
Valeu David! Que bom que gostou, seja sempre bem-vindo! Abraços.
Link permanente
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?
Link permanente
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.
Link permanente
Valew pela dica
Parabéns
Link permanente
Obrigado Rodrigo! Seja sempre bem-vindo.
Link permanente
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));)
Link permanente
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!
Link permanente
Excelente exemplo muito útil, valeu!
Link permanente
Obrigado Rodolfo, volte sempre!
Link permanente
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 : (
Link permanente
Bom dia Alysson, experimenta colocar:
boxEstado.Items.Add(FDMemTable1.FieldByName(‘UF’).AsString)
E nesse caso nem precisa da variável “itemadd”.
Abraços!