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}