TDBEdit.OnExit X Fechar Form
07/02/2013
0
Pessoal seguinte, fiz uma função para checar o ID da tabela, exemplo ... checar o código do CLIENTE na tela de contas a receber.
Fiz dentro do OnExit do TDBEdit.
Nessa função eu checo se o mesmo está em branco para não realizar nenhuma pesquisa, porém se digitei um código que não existe ele mostra mensagem de aviso que não foi encontrado o cliente, porém se o usuário apertar ESC ou o botão cancelar ele passa pelo OnExit mostrando o aviso.
Existe alguma forma para nesse caso ele não passar pelo OnExit dos TDBEdit ou o que vocês recomendam?
Abs
Lorival Filho
Posts
07/02/2013
Rafael Cunha
07/02/2013
Bruno Leandro
showmessage('nao encontrado');
close;
exit;
18/02/2013
Lorival Filho
18/02/2013
Perivaldo Martins
Certo, mostre-nos como está seu código no OnExit desse Edit.
Boa sorte bons códigos!
18/02/2013
Lorival Filho
var sTabela : String;
oCampos : OleVariant;
oValores : OleVariant;
oRetorno : OleVariant;
oResult : OleVariant;
nRetorno : Integer;
begin
if Sender is TDbEdit then
begin
//deixa em branco o campo de resultado
if TForm(self).FindComponent( 'edt'+TDbEdit( Sender ).Field.FieldName ) is TEdit then
TEdit( TForm(self).FindComponent( 'edt'+TDbEdit( Sender ).Field.FieldName ) ).Text := '';
// se o campo n estiver preenchido sai da rotina
if TDbEdit( Sender ).Text = '' then
exit;
// carrega as variaveis como padrão
// a tabela de maneira gera é o nome após o ID - Exemplo : IDENTIDADE
sTabela := Copy( TDbEdit( Sender ).Field.FieldName, 3, 50) ;
// por padrao será procurado apenas 1 campo
oCampos := VarArrayCreate ( [0,0], varVariant );
oCampos[0] := TDbEdit( Sender ).Field.FieldName;
// por padrão será enviado apenas o texto informado no edit
oValores := VarArrayCreate ( [0,0], varVariant );
oValores[0] := TDbEdit( Sender ).Text;
// cria Variant de retorno
nRetorno := 0;
if Pos( TDbEdit( Sender ).Field.FieldName+'.', 'IDENTIDADE.IDFILIAL.IDTIPODOCUMENTO.IDCONTACAIXA.' ) > 0 then
nRetorno := nRetorno + 1;
oRetorno := VarArrayCreate ( [0,nRetorno], varVariant );
// campo de retorno
// todas as tabelas que vão retornar a campo NOME
if Pos( TDbEdit( Sender ).Field.FieldName+'.', 'IDENTIDADE.IDFILIAL.' ) > 0 then
oRetorno[0] := 'NOME'
else if Pos( TDbEdit( Sender ).Field.FieldName+'.', 'IDTIPODOCUMENTO.IDCONTACAIXA.' ) > 0 then
oRetorno[0] := 'DESCRICAO';
// se o numero de campos de retorno for igual a 1 é pq precisa retornar o IDEMPRESA
if nRetorno = 1 then
oRetorno[1] := 'IDEMPRESA';
// abaixo será informa o que não for padrão alterando as variaiveis acima
// checa se foi encontrado a tabela
if sTabela <> '' then
begin
// executa a consulta do ID da tabela
oResult := DM.ChecaIDTabela ( sTabela, oCampos, oValores, oRetorno );
if oResult[0] <> '' then
begin
//if TDbEdit( Sender ).Parent is TForm then
if TForm(self).FindComponent( 'edt'+TDbEdit( Sender ).Field.FieldName ) is TEdit then
TEdit( TForm(self).FindComponent( 'edt'+TDbEdit( Sender ).Field.FieldName ) ).Text :=
oResult[0];
// ID da empresa da tabela
if Pos( TDbEdit( Sender ).Field.FieldName+'.', 'IDENTIDADE.IDFILIAL.IDTIPODOCUMENTO.IDCONTACAIXA.' ) > 0 then
cdsCad.FieldByName( 'IDEMP'+Copy( TDbEdit( Sender ).Field.FieldName,3,50) ).AsString := oResult[1];
end
else
TDbEdit( Sender ).SetFocus;
end;
end;
end;
Clique aqui para fazer login e interagir na Comunidade :)