Recuperar valor em Combobox com 2 colunas String

Delphi

11/09/2024

Num ComboBox eu carrego:

COD_BANCO: esse campo é string, pois é o código do banco (ex: Sicredi é 748, Banco do Brasil é 001)
NOME string

    while not Qry.eof do
    begin
      cbBancoOrigem.Items.Add(Qry.FieldByName('COD_BANCO').AsString+ ' - '+ Qry.FieldByName('NOME').AsString);
      Qry.Next;
    end;


O problema é que não estou conseguindo recuperar esse codigo do banco para armazenar numa variavel.
Alguém sabe se é possivel?
Renan

Renan

Curtidas 0

Melhor post

Raimundo Pereira

Raimundo Pereira

11/09/2024

Num ComboBox eu carrego:

COD_BANCO: esse campo é string, pois é o código do banco (ex: Sicredi é 748, Banco do Brasil é 001)
NOME string

    while not Qry.eof do
    begin
      cbBancoOrigem.Items.Add(Qry.FieldByName('COD_BANCO').AsString+ ' - '+ Qry.FieldByName('NOME').AsString);
      Qry.Next;
    end;


O problema é que não estou conseguindo recuperar esse codigo do banco para armazenar numa variavel.
Alguém sabe se é possivel?


Renan, o código acima apenas adiciona os dados formatados no cbBancoOrigem.
Supondo que esteja tentando coletar o código do banco ao selecionar o registro ali no cbBancoOrigem

Uma opção é criar uma função exemplo:::
function ExtrairCodigoBanco(ComboBox: TComboBox): string;
var
SelectedItem: string;
PosSeparador: Integer;
begin
// Obtém o item selecionado no ComboBox
SelectedItem := ComboBox.Text;

// Localiza a posição do separador " - "
PosSeparador := Pos(' - ', SelectedItem);

// Se o separador for encontrado, extrai o código antes dele
if PosSeparador > 0 then
Result := Copy(SelectedItem, 1, PosSeparador - 1)
else
Result := ''; // Se não encontrar, retorna uma string vazia
end;

No evento Change do cbBancoOrigem:::

procedure TForm1.cbBancoOrigemChange(Sender: TObject);
var
CodigoBanco: string;
begin
// Extrai o código do banco do item selecionado no ComboBox
CodigoBanco := ExtrairCodigoBanco(cbBancoOrigem);

// Exibe o código em uma mensagem ou use conforme necessário
ShowMessage('Código do banco selecionado: ' + CodigoBanco);
end;

Espero que o ajude ou dê uma Luz
GOSTEI 1

Mais Respostas

Renan

Renan

11/09/2024

Olá Raimundo.

Obrigado pela dica, funciona bem.
GOSTEI 0
Renan

Renan

11/09/2024

Acabei fazendo umas mudanças aqui.

dentro de um while eu populo o combo

ComboBox.Items.AddObject(TabelaProdutosNOME.AsString,TObject(TabelaProdutosCODIGO.AsInteger));


Para obter o código do item selecionado eu uso

Variavel:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);


Até aí tudo bem.
Porém, ao acessar o form onde tenho esse ComboBox, eu preciso buscar o codigo que está gravado no banco e então fazer o ComboBox mostrar o respectivo item.

Isso não funciona, pois pega o ItemIndex e não o codigo do objeto

ComboBox.ItemIndex := Variavel

GOSTEI 0
Raimundo Pereira

Raimundo Pereira

11/09/2024

Acabei fazendo umas mudanças aqui.

dentro de um while eu populo o combo

ComboBox.Items.AddObject(TabelaProdutosNOME.AsString,TObject(TabelaProdutosCODIGO.AsInteger));


Para obter o código do item selecionado eu uso

Variavel:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);


Até aí tudo bem.
Porém, ao acessar o form onde tenho esse ComboBox, eu preciso buscar o codigo que está gravado no banco e então fazer o ComboBox mostrar o respectivo item.

Isso não funciona, pois pega o ItemIndex e não o codigo do objeto

ComboBox.ItemIndex := Variavel



Tente assim :: ComboBox.ItemIndex := ComboBox.Items.IndexOf(variavel);
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

11/09/2024

Acabei fazendo umas mudanças aqui.

dentro de um while eu populo o combo

ComboBox.Items.AddObject(TabelaProdutosNOME.AsString,TObject(TabelaProdutosCODIGO.AsInteger));


Para obter o código do item selecionado eu uso

Variavel:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]);


Até aí tudo bem.
Porém, ao acessar o form onde tenho esse ComboBox, eu preciso buscar o codigo que está gravado no banco e então fazer o ComboBox mostrar o respectivo item.

Isso não funciona, pois pega o ItemIndex e não o codigo do objeto

ComboBox.ItemIndex := Variavel



Tente assim :: ComboBox.ItemIndex := ComboBox.Items.IndexOf(variavel);

QQ Coisa dá um grito no discord : oficialrcp
Daí fazemos uma call em seguida posta as novidades aqui
GOSTEI 0
Renan

Renan

11/09/2024

Olá, Raimundo.

Infelizmente não funciona.
Resolvi usar um DbLookupComboBox, assim no create do form eu faço o seguinte

DBLookupComboBox1.KeyValue := FrmDm.qrConfigCONTA_INTERNA.AsInteger;
GOSTEI 1
POSTAR