Escribo de nuevo porque se me había olvidado dos pequeños detalles en el ejemplo anterior:
1º No se ha de buscar registros si el
DataSet está en modo de edición o inserción.
2º No se ha de buscar registros si, lógicamente, el contenido del control no ha cambiado (tal y como está ahora, lo busca siempre).
Así que mejorando el ejemplo anterior, quedaría así:
Código Delphi
[-]
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Edit1.Modified and (Edit1.Text <> '') and not (DataSource1.State in [dsInser, dsEdit])
and not DataSet.Locate('CODIGO', Edit.Text, []) then
begin
Edit1.Modified := False;
end;
end;
(La propiedad
Modified indica que el control ha sido modificado)
Saludos!