Donde dice
Código Delphi
[-]
if Dep.Locate('clave',edit1.Text,[]) then
yo creo que debería decir:
Código Delphi
[-]
if not Dep.Locate('clave',edit1.Text,[]) then
es decir, que está alrevés tu condición. Y para borrar, basta que uses Dep.Delete; las asignaciones que haces después con Dep.FieldValues no vienen al caso.
// Saludos