Fórum Pesquisa em uma combobox #300991

27/10/2005

0

Durante a abertura do form eu preencho minha combo, que fica com o seguinte formato:

1-Bradesco
2-Itau
3-Unibanco
...

Representa o Codigo e a descrição da tabela Banco. Preciso construir agora uma rotina inversa que faça o seguinte:
Quando eu selecionar no grid(evento OnCellClick), caso a coluna codbanco esteja, por exemplo 1, então me mostre no Combo 1-Bradesco, se tiver 3, me mostre 3-Unibanco e assim por diante. Desde já grato!!!


Paulo

Paulo

Responder

Posts

27/10/2005

Guilherme

deixa eu ve si eu intendi !!!

vc vai selecionar no grid e vai aparecer no combo box é isso ???


si for segue mais ou menos esse exemplo


ComboBox1.ItemIndex:=ListBox1.Items.IndexOf(´TEXTO!!!!´);



Responder

Gostei + 0

27/10/2005

Paulo

Não, não é bem isso não. É o seguinte, por partes. Tenho 2 tabelas basicamente: BANCO E CHEQUEEMITIDO. Neste caso, e só neste caso, uso a tabela de banco para preencher minha combo, no OnCreate do form, da seguinte maneira:
COD+´-´+DESCRICAO
(cod do banco e nome do banco separados por um hifem), daí o foramato da combo:
1-bradesco 2-itau 3-unibanco ....

Como uso SP para inserir, alterar e excluir, preciso passar os parâmetros das SP´s, razão pela qual, não uso componentes ligados a um TDataSource, mas sim componentes simples com propriedade Text e etc... Para incluir blz, porem na hora de Alterar, por exemplo, o usuário vai selecionar o registro a ser alterado. Ele faz a consulta, carrega a consulta no Grid e seleciona no mouse(OnCellClick). No momento que ele selecionar, deverá ser carregado em cada edit, por exmplo, os valores da tabela, assim: EditNumConta=CampoNumConta, EditValor=CampoValor e assim por diante. Acontece que o campo Banco está numa combobox e na tabela de cheque, o codigo somente. Por isso que quando eu clicar no registro, ele faça uma pesquisa na combo, encontra quem tem esse valor e mostre na prop text da combo. Para gravar no insert eu faço:

varcombo:=strtoint(copy(edbanco.Text,1,pos(´-´,edbanco.Text)-1)); depois carrego o parametro: parambyname(´banco´).value:=varcombo;


Só queria o inverso agora, mas nada.
Claro que o código acima é um fragmento


Responder

Gostei + 0

28/10/2005

Njuniorba

Query1.First;
while not Query1.Eof do
begin
ComboBox1.Items.Add(Query1.FieldByName(´CODIGO´).AsString + ´- ´ + Query1.FieldByName(´NOME_BANCO´).Value);
Query1.Next;
end;
end;


Responder

Gostei + 0

28/10/2005

Paulo

NJuniorba, não é isso não, isso é que eu fiz no OnCreate do Form para encher minha combo, conforme explicado acima. O que eu preciso é o inverso, ou seja, com a minha combo cheia, preciso agora localizar pelos caracteres antes do hifen(-), que já estão gravados na minha tabela, e mostrar na text da combo.


Responder

Gostei + 0

28/10/2005

Njuniorba

NJuniorba, não é isso não, isso é que eu fiz no OnCreate do Form para encher minha combo, conforme explicado acima. O que eu preciso é o inverso, ou seja, com a minha combo cheia, preciso agora localizar pelos caracteres antes do hifen(-), que já estão gravados na minha tabela, e mostrar na text da combo.


nao entendi ainda hehehe antes do hifen estao os numeros 1-, 2-


Responder

Gostei + 0

28/10/2005

Michael

Olá!

A dica do colega g_borges procede e é uma solução. Porém, há ainda outra mais simples: se vc adicionar na ComboBox os bancos na mesma ordem em que seus códigos os representam (por exemplo, se o código do Bradesco é 1, então adicione ele primeiro; se o Itaú for 2, em segundo, etc), então para selecionar um basta isso:

ComboBox.ItemIndex := StrToInt(CodigoBanco) - 1;


CodigoBanco vc pode pegar via Fields do DataSet associado. E se este field for do tipo integer, nem precisa da função StrToInt.

[]´s


Responder

Gostei + 0

28/10/2005

Paulo

Michel, dessa forma não dá, pois digamos que eu tenho ,1,2,3 e 4 cadastrado. Aí uma determinada pessoa vai inserir um novo banco, que seria o 5, mas ele desiste(RollBack) e o gerador já foi disparado. Ele resolve novamente inserir o banco e insere, aí o codigo dele não é mais o 5 e sim o 6 e seu fizer combo.itemindex:=campo-1, seria itemindex = 5, na combo ele tem itemindex = 4, o que não me retornaria nada. Vou fazer pelo recordcount da tabela, creio que assim dará, combo.itemindex:=recordcount-1, já que recordcount começa com 1 e não 0.

O campo codigo tem seu valor proveniente de um gerador, por meio de uma trigger.


Responder

Gostei + 0

29/10/2005

Michael

Michel????

Então use a dica do g_borges, usando [b:363a48c255]IndexOf[/b:363a48c255].

[]´s


Responder

Gostei + 0

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

Aceitar