Erro - DBLookupComboBox limpando vários combos !!
Pessoal,
Até consegui localizar na WEB outras pessoas com o mesmo problema, mas ninguém apresentou um solução razoável...
Migração D5 > D2010.
Tenho um form com vários DBLookupComboBox, apontando para o mesmo ListSource/ListField/KeyField.
Quando seleciono um valor em um combo qualquer, TODOS os demais combos são limpos !!!
O mesmo código funciona perfeitamente quando compilado com Delphi 5.
Alguma ideia ?
Até consegui localizar na WEB outras pessoas com o mesmo problema, mas ninguém apresentou um solução razoável...
Migração D5 > D2010.
Tenho um form com vários DBLookupComboBox, apontando para o mesmo ListSource/ListField/KeyField.
Quando seleciono um valor em um combo qualquer, TODOS os demais combos são limpos !!!
O mesmo código funciona perfeitamente quando compilado com Delphi 5.
Alguma ideia ?
Marcos P
Curtidas 0
Respostas
Marcos P
18/04/2015
Alguém ?
GOSTEI 0
Marcos P
18/04/2015
Galera,
Como solução de contorno acabei individualizando os DBLookupComboBox em DataSource + Queries exclusivas, o quê resolve o problema, mas acaba gerando custo adicional ao banco de dados !
Vou manter esse post "vivo" nos próximos dias, pois ainda tenho esperança de resolver esse negócio do jeito certo !
Como solução de contorno acabei individualizando os DBLookupComboBox em DataSource + Queries exclusivas, o quê resolve o problema, mas acaba gerando custo adicional ao banco de dados !
Vou manter esse post "vivo" nos próximos dias, pois ainda tenho esperança de resolver esse negócio do jeito certo !
GOSTEI 0
Marcos P
18/04/2015
Mesmo problema em outro form !!!
Alguém tem alguma ideia da causa e de como corrigir isso ?
Alguém tem alguma ideia da causa e de como corrigir isso ?
GOSTEI 0
Thiago Santana
18/04/2015
Marcos no Delphi 5 funciona normalmente como você citou!
Qual seria esse comportamento normal?
Tipo se ambos estão ligados na mesma fonte de dados, ao selecionar um os outros teriam que alterar os seus valores!
Não entendi muito bem sua dúvida!
Pode detalhar mais por favor?
Qual seria esse comportamento normal?
Tipo se ambos estão ligados na mesma fonte de dados, ao selecionar um os outros teriam que alterar os seus valores!
Não entendi muito bem sua dúvida!
Pode detalhar mais por favor?
GOSTEI 0
Marcos P
18/04/2015
Thiago,
Repare, na imagem abaixo, que nas combo-box de "Serviço" ( baseadas do DBLookupComboBox ), consigo selecionar valores diferentes mesmo tendo a mesma configuração de ListSource / ListField / KeyField. Esse é o executável gerado com Delphi 5.
[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150430-181141.png[/img]
Essa mesma estrutura, com o Delphi 2010 não funciona... ao selecionar um combo ele limpa os outros.
É exatamente o mesmo problema descrito nesse link.
Repare, na imagem abaixo, que nas combo-box de "Serviço" ( baseadas do DBLookupComboBox ), consigo selecionar valores diferentes mesmo tendo a mesma configuração de ListSource / ListField / KeyField. Esse é o executável gerado com Delphi 5.
[img]http://arquivo.devmedia.com.br/forum/imagem/378439-20150430-181141.png[/img]
Essa mesma estrutura, com o Delphi 2010 não funciona... ao selecionar um combo ele limpa os outros.
É exatamente o mesmo problema descrito nesse link.
GOSTEI 0
Thiago Santana
18/04/2015
Posta o seu código que faz o carregamento desses Combos!
Para facilitar por favor.
Para facilitar por favor.
GOSTEI 0
Marcos P
18/04/2015
Segue o código do "OnClick" dos combos...
procedure TfrmNovaFatura.cbSrvClick(Sender: TObject);
var
cbSrv, cbTipo: TDBLookupComboBox;
edVlr, edNroOS: TAlignEdit;
CodServ: Integer;
begin
cbSrv := TDBLookupComboBox(Sender);
cbTipo := TDBLookupComboBox(FindComponent('cbTipo' + IntToStr(cbSrv.Tag)));
edVlr := TAlignEdit(FindComponent('edVlr' + IntToStr(cbSrv.Tag)));
edNroOS := TAlignEdit(FindComponent('edNroOS' + IntToStr(cbSrv.Tag)));
CodServ := cbSrv.KeyValue;
case CodServ of
3:
begin
cbTipo.ListSource := nil;
cbTipo.ListField := 'Descricao;CodTipo';
cbTipo.KeyField := 'CodTipo';
cbTipo.ListSource := dsTipoParcela;
qrTipoParcela.First;
cbTipo.KeyValue := qrTipoParcelaCodTipo.Value;
end;
4:
begin
cbTipo.ListSource := nil;
cbTipo.ListField := 'Descricao;CodProg';
cbTipo.KeyField := 'CodProg';
cbTipo.ListSource := dsServicos;
qrServicos.First;
cbTipo.KeyValue := qrServicosCodProg.Value;
end;
30:
begin
cbTipo.ListSource := nil;
cbTipo.ListField := 'Descricao;CodEvento';
cbTipo.KeyField := 'CodEvento';
cbTipo.ListSource := dsEventos;
qrEventos.First;
cbTipo.KeyValue := qrEventosCodEvento.Value;
end;
else
begin
cbTipo.ListSource := nil;
cbTipo.ListField := '';
cbTipo.KeyField := '';
end;
end;
edVlr.Enabled := True;
edNroOS.Enabled := (CodServ = 3);
end;
GOSTEI 0