Simplemente lo que pasa, es que cuando se modifica la propiedad Sql se vuelven a regenerar los parametros, i vacia su valor.
Prueba de poner el sql primero, i luego asigna el valor al parametro.
Tambien puedes dejar el codigo fuente igual, i poner la propiedad SqlQuery.ParamCheck a FALSE. Esto lo que hace es que no se autogeneran los parametros cuando se reescribe el Sql.
Código:
if Application.MessageBox('¿Deseas borrar el cliente seleccionado?', 'Confirmar', MB_ICONQUESTION or MB_YESNO) = idYes
then begin
QrBuscaCliente.SQL.Clear;
QrBuscaCliente.SQL.Add('DELETE FROM cliente WHERE cli_id = :cli_id');
cdsBuscaCliente.Params.ParamByName('cli_id').asInteger:= codigoABorrar;
QrBuscaCliente.ExecSql;
end;
un saludo.
uri.