TDBEdit.OnExit X Fechar Form

07/02/2013

0

Delphi XE3

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

Lorival Filho

Responder

Posts

07/02/2013

Rafael Cunha

Se você utilizar o evento OnChange devera resolve o seu problema.
Responder

07/02/2013

Bruno Leandro

Ola guerreiro voce pode fazer logo apos a exibição da mensagem,

showmessage('nao encontrado');
close;
exit;
Responder

18/02/2013

Lorival Filho

mas precisava que não mostrasse a mensagem, pois a tela fecha, mas mostra a mensagem de erro.
Responder

18/02/2013

Rafael Cunha

Mesmo usando o OnChange ele mostra a mensagem?
Responder

18/02/2013

Perivaldo Martins

mas precisava que não mostrasse a mensagem, pois a tela fecha, mas mostra a mensagem de erro.


Certo, mostre-nos como está seu código no OnExit desse Edit.


Boa sorte bons códigos!
Responder

18/02/2013

Lorival Filho

procedure TfrmFormCadPadrao.OnExitIDTabela(Sender: TObject);
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;
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar