dblookupcombobox
E ae amigos, blz? Tenho uma aplicação onde estou utilizando um dblookupcombox para preenchimento do campo cliente, na tela de movimentaçao de produtos. Pois bem, usei o componente, configurei as propriedades listsource, listfield (campos codigo e cliente) e keyfield (campo codigo), além do datasource e datafield. Qdo faço o teste, ao clicar no componente, mostra os dados da tabela de clientes (codigo e nome). Eu já vi em aplicações onde, ao escolher um registro, mostrar codigo e nome do cliente, e não só um. Isso é muito interessante pois evita de se colocar um dbedit para cada campo e um botao de pesquisa de cliente, é bem prático, porém, não estou conseguindo fazer com que apareça por exemplo 0001 - CLIENTE A.
Peço, mais uma vez, a ajuda de todos, eu sei que tem como fazer, mas como sou iniciante, não estou achando uma solução.
Fico no aguardo.
Um abraço a todos.
Rogerio
Peço, mais uma vez, a ajuda de todos, eu sei que tem como fazer, mas como sou iniciante, não estou achando uma solução.
Fico no aguardo.
Um abraço a todos.
Rogerio
Roger1976
Curtidas 0
Respostas
Rogick
28/09/2005
Eu nunca testei, mas já ouvi dizer que vc pode colocar no ListField mais de um campo da tabela. Ex: ListField := ´CODIGO;NOME´.
Se der certo, posta aqui para a galera ficar sabendo. 8)
Se der certo, posta aqui para a galera ficar sabendo. 8)
GOSTEI 0
Roger1976
28/09/2005
Kra, eu já fiz isso, qdo clico no componente, aparecem os campos configurados no listfield (codigo e cliente), mas qdo seleciono um registro, vai exibir o campo que for configurado no keyfield. Dá pra fazer, mas por enqto vamos tentar achar uma solução.
Valeu pela atenção, caso eu encontre uma solução, postarei...
Valeu pela atenção, caso eu encontre uma solução, postarei...
GOSTEI 0
Rogick
28/09/2005
Cara, eu dei uma dica igualzinha a essa no tópico [u:396b672ab6]Exibir 2 campos em dblookupcombobox sem esta em edição[/u:396b672ab6]. Pode ir lá ver, deu certo pro cara q perguntou.
GOSTEI 0
Daniel_mc
28/09/2005
Meu camarada, de uma verificada na propriedade DisplayWidth do campo codigo e cliente, pois na verdade eles podem estar com o comprimento acima do comum e o que pode estar acontecendo é que eles estão aparecendo sim mais vc não consegue ver por causa do tamanho do seu DBLookupComboBox .
GOSTEI 0
Roger1976
28/09/2005
Rogick, eu dei uma olhada na dica que vc deu para um delphiano. Fiz como estava lá, porém no teste só mostra um campo. Não sei onde estou errando, mas para melhor entendimento, segue abaixo como eu fiz:
procedure TdmMovimentacao.sqlMovimentacaoCOD_CLIENTEGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
if sender.IsNull then
Text := sender.AsString + ´ ´ + dmMovimentacao.sqlMovimentacao.FieldByName(´CLIENTE´).AsString;
end;
Propriedades:
- DataSource: dmVendas.dsVendas
- DataField: COD_CLIENTE
- ListSource: dmClientes.dsClientes
- ListField: CLIENTE
- KeyField: COD_CLIENTE
Fiz dessa maneira e não funcionou. Kra, sou iniciante, vc de fora e com mais experiência perceberá mais facilmente onde estou errando.
Daniel_mc, eu já tinha verificado o DisplayWidth, está certo, qdo faço o teste aparece na lista os dois campos, só aparece apenas qdo depois que eu seleciono.
Grato pela atenção de vcs, caso eu encontre uma solução, postarei.
procedure TdmMovimentacao.sqlMovimentacaoCOD_CLIENTEGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
if sender.IsNull then
Text := sender.AsString + ´ ´ + dmMovimentacao.sqlMovimentacao.FieldByName(´CLIENTE´).AsString;
end;
Propriedades:
- DataSource: dmVendas.dsVendas
- DataField: COD_CLIENTE
- ListSource: dmClientes.dsClientes
- ListField: CLIENTE
- KeyField: COD_CLIENTE
Fiz dessa maneira e não funcionou. Kra, sou iniciante, vc de fora e com mais experiência perceberá mais facilmente onde estou errando.
Daniel_mc, eu já tinha verificado o DisplayWidth, está certo, qdo faço o teste aparece na lista os dois campos, só aparece apenas qdo depois que eu seleciono.
Grato pela atenção de vcs, caso eu encontre uma solução, postarei.
GOSTEI 0
Roger1976
28/09/2005
Ah, corrindo, o correto é dmMovimentacao, e não dmVendas, pois trata-se de movimentaçao de cartuchos (entrada e saida).
GOSTEI 0
Rogick
28/09/2005
O código correto é:
procedure TdmMovimentacao.sqlMovimentacaoCOD_CLIENTEGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
// Se o campo NÃO for nulo, então mostre-o
if [b]not[\b] Sender.IsNull then
Text := sender.AsString + ´ ´ + dmMovimentacao.sqlMovimentacao.FieldByName(´CLIENTE´).AsString;
end;
testa agora p/ ver se vai. 8)
procedure TdmMovimentacao.sqlMovimentacaoCOD_CLIENTEGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
// Se o campo NÃO for nulo, então mostre-o
if [b]not[\b] Sender.IsNull then
Text := sender.AsString + ´ ´ + dmMovimentacao.sqlMovimentacao.FieldByName(´CLIENTE´).AsString;
end;
testa agora p/ ver se vai. 8)
GOSTEI 0
Roger1976
28/09/2005
Rogick, eu fiz a alteração, mas mesmo assim depois que eu seleciono só aparece o código, e não CODIGO - CLIENTE.
Talvez eu tenha me expressado mal, mas vou fazer uma montagem ´grosseira´ para vc me entender melhor.
Até aqui, tudo bem, está funcionando numa boa...
_________________________________
| | V | |____________________________|___|
| | |
| 01 - FULANO DE TAL | |
| 02 - SICRANO | |
| 03 - BELTRANO | |
|____________________________|___|
... mas gostaria que ficasse assim:
_________________________________
| 01 - FULANO DE TAL | V | |____________________________|___|
Vc entendeu?
Tem como fazer, eu já vi um sistema em que o dblookupcombobox funciona dessa forma.
Por enqto, valeu mesmo pela ajuda e caso tenha uma solução, agradeço.
Vamos ver se a gente consegue resolver esta questão, com certeza vai ajudar não só a mim mas a todos do fórum...
Talvez eu tenha me expressado mal, mas vou fazer uma montagem ´grosseira´ para vc me entender melhor.
Até aqui, tudo bem, está funcionando numa boa...
_________________________________
| | V | |____________________________|___|
| | |
| 01 - FULANO DE TAL | |
| 02 - SICRANO | |
| 03 - BELTRANO | |
|____________________________|___|
... mas gostaria que ficasse assim:
_________________________________
| 01 - FULANO DE TAL | V | |____________________________|___|
Vc entendeu?
Tem como fazer, eu já vi um sistema em que o dblookupcombobox funciona dessa forma.
Por enqto, valeu mesmo pela ajuda e caso tenha uma solução, agradeço.
Vamos ver se a gente consegue resolver esta questão, com certeza vai ajudar não só a mim mas a todos do fórum...
GOSTEI 0