Problema ao concluir uma pesquisa com dblookupcombobox
23/07/2008
0
Rochajl
Posts
24/07/2008
Aroldo Zanela
Coloca um fragmento de seu código para ajudar no entendimento de sua necessidade.
24/07/2008
Rochajl
procedure TfrmEnderecosPesq.BtnEditSelClick(Sender: TObject);
begin
//Ativação dos Campos do formulario Endereço//
frmEnderecos.EdtCEP.Enabled:=true;
EdtRecebeDados(Sender);
if dm.IBQSelEndereco.RecordCount > 0 then
begin
frmEnderecos.EdtCEP.Text:= frmEnderecosPesq.DBGrid1.DataSource.DataSet.Fields[6].AsString;
frmEnderecos.CBUF.KeyValue:= frmEnderecosPesq.DBGrid1.DataSource.DataSet.Fields[1].AsInteger;
frmEnderecos.CBRua.KeyValue:= frmEnderecosPesq.DBGrid1.DataSource.DataSet.Fields[5].AsInteger;
frmEnderecos.CBCidade.KeyValue:= frmEnderecosPesq.DBGrid1.DataSource.DataSet.Fields[2].AsInteger;
frmEnderecos.CBBairro.KeyValue:= frmEnderecosPesq.DBGrid1.DataSource.DataSet.Fields[3].AsInteger;
end;
frmEnderecosPesq.Close;
end;
procedure TfrmEnderecosPesq.EdtRecebeDados(Sender: TObject);
begin
dm.IBQSelEndereco.Open;
end;
Fechando o form de Pesquisa o sistema volta para o form de endereço onde tenho um DBedit com o CEP q fica preenchido corretamente com o CEP escolhido no form pesquisa e no evento onchange deste tenho um código que habilita o dblookupcombobox da UF, que também está com a UF preenchida corretamente, a partir daí, todos os outros dblookupcombobox estão disables (por mais q eu coloque no evento on change do DBedit CEP para q eles fiquem enable), e só consigo ver o restante da pesquisa ao dar tab pelos campos. Eles possuem os dados corretos, mas só visualizo a medida q dou o tab.
Tenho o seguinte código a no evento onexit de cada dblookupcombobox:
procedure TfrmEnderecos.CBUFExit(Sender: TObject);
begin
dm.IBQSelCidade1.Close;
dm.IBQSelCidade1.SQL.Clear;
dm.IBQSelCidade1.SQL.Add(´select * from tab_cidade, tab_uf´);
dm.IBQSelCidade1.SQL.Add(´where tab_cidade.tb_uf=:par_uf and´);
dm.IBQSelCidade1.SQL.Add(´tab_cidade.tb_uf=tab_uf.cod_uf´);
dm.IBQSelCidade1.SQL.Add(´order by cidade´);
dm.IBQSelCidade1.ParamByName(´par_uf´).Value := CBUF.KeyValue;
dm.IBQSelCidade1.Open;
dm.IBQSelCidade1.FetchAll;
end;
em cada dblookupcombobox tenho o select para o próximo, para q ele me mostre somente os dados corretos.
Bem, o q ainda não consegui fazer, foi q ao clicar no botão Editar Seleção do form pesquisa, os dblookupcombobox, já venham todos preenchidos.
Espero q possam ajudam.
25/07/2008
Aroldo Zanela
Colega,
Experimente trocar o código do evento OnExit para o OnChange.
25/07/2008
Aroldo Zanela
Você pode:
1. Criar um componente descendente e adicionar a funcionalidade usando TNotifyEvent para a implementação.
FOnChange: TNotifyEvent; ... property OnChange: TNotifyEvent read FOnChange write FOnChange; ... procedure TSeuLookupControl.Change; begin if Assigned(FOnChange) then FOnChange(Self); end; ...
2. Usar um componente de terceiro, como: (RxLib, Jedi, etc);
3. Mudar sua estratégia para o OnChange do DataSource;
26/07/2008
Rochajl
Clique aqui para fazer login e interagir na Comunidade :)