[Delphi] Como guardar um valor em um TComboBox?

04/08/2017

0

boa tarde people tudo bom?

Vamos lá! Normalmente, quando utilizamos um Combobox no Delphi, a gente acaba verificando o valor selecionado através da propriedade ItemIndex. Por exemplo:

  if cboFormaPagamento.ItemIndex=0 then begin
    // tratar pagamento BOLETO
  end
  else if combobox1.ItemIndex=1 then begin
   //tratar pagamento CARTAO
  end;


O problema é óbvio: se a gente trocar a ordem dos elementos, inserir algum elemento novo, etc, a lógica muda toda. Existe alguma forma de armazenar algum outro VALUE no item do Combobox?

O que vocês acham?

abraços
Gladstone Matos

Gladstone Matos

Responder

Post mais votado

04/08/2017

Você utilizar a propriedade AddItem para este caso.

Veja se este link ajuda:

http://wiki.portugal-a-programar.pt/dev_geral:pascal:delphi:associar_dados_list_combo

Natanael Ferreira

Natanael Ferreira
Responder

Mais Posts

04/08/2017

Luiz Vichiatto

Gladstone Gomes,

Tive um situação similar, resolvi com uma dbComboBox com tipos de pagamento, a partir 'insert' na tabela de pagamentos tratava as opções por storeprocedure, assim todas as vezes que eu inseria uma modo de pagamento o cliente já estava com a opção e o banco já conseguia tratar.

Isso também depende da como está modelado o banco.

dbComboBox.Value
Responder

04/08/2017

Rafael Bosco

Existe sim, quando você adicionar os itens no ComboBox sugiro usar o método AddObject, abaixo um EXEMPLO de leitura de informações de um StringList e adicionando ao ComboBox:

class procedure TSuaClasse.LoadAlgo(ACombo: TComboBox);
var
   List: TStringList;
   Numeros, Loop: Integer;
begin
 List := TStringList.Create;
   try
      List.Add('123');
      List.Add('3434');

      if List.Count > 0 then
      begin
         ACombo.Items.Clear;
         ACombo.Items.BeginUpdate;

         for Loop := 0 to List.Count - 1 do
         begin
            if TryStrToInt(List[Loop], Numeros) then
               ACombo.Items.AddObject('Número - ' + List[Loop], TObject(Numeros));
         end;

         ACombo.Items.EndUpdate;
      end;
   finally
      FreeAndNil(List);
   end;
end;


Depois que você inseriu os itens no ComboBox, para você obter determinado valor, faça o processo abaixo:

      property Numeros: Integer read GetNumeros write SetNumeros; //Eu utilizo encapsulamento em informações como essa para que a 
                                                                                                                     segurança do valor nunca seja alterada.

      function GetNumeros: Integer;
      begin
           if (CBSerie.Items.Count > 0) and (CBSerie.ItemIndex > -1) then
               Result := Integer(CBSerie.Items.Objects[CBSerie.ItemIndex])
           else
               Result := 0;
      end;


No exemplo, eu dei um CAST como INTEGER no OBJECTS do combobox, que no caso, vai me retornar o Número inteiro adicionado o objeto, mesmo que a ordem dos ItemIndex mude, a dos objetos adicionados, não será modificada.
Responder

05/08/2017

Raimundo Pereira

Lembro que uma vez ao montar o combobox.
Eu adicionei os valores da seguinte forma.

combobox.items.add('ID_FILIAL|NOME_FILIAL');
Isso ao varrer minha tabela filial.
Para uso posteriormente.
Então no visual do combobox eu tinha:

1|SAO PAULO
2|BAHIA
3|RIO DE JANEIRO

Ao selecionar eu pegava o valor por delimitador, no caso 1,2,3....
Isso pq eu trabalhei com combobox, se for trabalhar com dblookupcombox acredito que não tenha tal necessidade.
Responder

15/05/2022

Mário Reis

Interessante, mas acho que a dificuldade maior será como assignar um valor pré definido a ComboBox: JvDbcbbTIPO_ID.DataSource.DataSet.FieldByName(''Tipo_Id'').AsString:=''CC'' de uma litaa c/ ''CC,BI,PP,LC, ETC''. por exemplo ao passar de um processamento de ficheiro texto para dados; carreguei o campo em vez do valor da JvDbcbb
Às tantas não há outra forma a não ser fazer um ciclo na lista de que não seja fazer um ciclo while JvDbcbbTIPO_ID.Values[ Idx ]<>''CC'' do Inc(Idx) quando fizer match rebenta o clico? Deveria haver uma modo direto de fazer! Não?
Ainda não descobri se alguém já fez isto antes e quizer partilhar. Origado
Responder

16/05/2022

Gladstone Matos

Lembro que uma vez ao montar o combobox.
Eu adicionei os valores da seguinte forma.


boa ideia Rafael!

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar