Olá a todos,

Estou enfrentando um problema que eu mesmo criei... e não acho a solução.

É o seguinte tenho um formulário de cadastro, nele tenho uma função que 
muda a cor do componente ao receber e sair do foco, para que minha query 
que verifica se o nome (generico) já existe no banco funcionar tive que 
coloca-la dentro da função que muda o foca... funciona redondinho... Se 
a query não ficar dentro da função (muda foco) ela não funciona.

Agora vem o problema... Quando eu localizo um cadastro e quero alterar 
um campo que não seja o campo onde é feito a verificação de duplicidade 
ele faz a verificão tenho que altera-lo, issao está errado..

Como escapar desta verificação quando eu quero alterar um dadastro...


{Código do muda foco evento Exit}

procedure TfrmCadastroCargo.ExitEx(Sender: TObject);
var
   nome:String;
begin
   {: altera a cor do componente quando sair o foco }
   if (Sender is TEdit) then
     (Sender as TEdit).Color := clWindow;
   if (Sender is TMemo) then
     (Sender as TMemo).Color := clWindow;
   {: altera a cor do componente quando sair o foco }
   if (Sender is TDBEdit) then
     (Sender as TDBEdit).Color := clWindow;
   if (Sender is TDBMemo) then
     (Sender as TDBMemo).Color := clWindow;

   {: verifica se já existe um cargo com o mesmo nome }

     nome:= DBEdit1.Text;
     with qBusca do
     begin
       Close;
       Sql.Clear;
       Sql.Add('select CARGO_NOME from CARGO where CARGO_NOME 
=:CARGO_NOME');
       ParamByName('CARGO_NOME').AsString := nome;
       Open;
       if not IsEmpty then
         begin
           ShowMessage('O Cargo ' + '"' + DBEdit1.Text + '"' + ' já está 
cadastrado! Entre com um novo nome ou Alt+C para cancelar.');
           Close;
           DBEdit1.SetFocus;
         end;
     end;

     {:fim verifica se já existe um cargo com o mesmo nome}

Responder a