Bueno, tienes razón. No me expliqué bien. No quiero eliminar el registro en sí, quiero dejarlo vacío, visible de que ese día a esa hora no hay ninguna cita concertada.
EDITO:
No se me ocurrió mirar las propiedades del Query. He probado tanto con .Clear como con .IsNull (no sé cómo no se me ocurrió antes) y me pasa algo que paso a explicar.
Código Delphi (todavía no sé cómo lo formateais :P)
showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);
DMCitasCalendario.QIntervaloUSUARIO.Clear;
showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);
DMCitasCalendario.QIntervaloUSUARIO.IsNull;
showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);
Así he visto cómo tanto con .Clear como con .IsNull borra el entero que había antes, pero no sé porqué no lo guarda. He mirado la base de datos (Firebird) y este campo admite nulos, no es ni clave única ni primaria ni nada, por lo que no sé qué problema hay. Las soluciones que me diste, Marcos, funcionan, pero no lo guarda (y cuando le asigno a pelo .Value=3000 sí lo coge).
Si al menos pudieras/pudiérais orientarme un poco en qué tipo de problema puedo tener, os lo agradecería. Y si necesitais mas información no teneis más que pedirlo.
Gracias de nuevo