Son dos cosas totalmente separadas.
Crea un trigger before Post en la tabla, verificas allí si el dni está comprendido entre el rango y si no lo está lanzas la excepción.
La filosofía es contraria a lo que piensas. Ahora te olvidas hacer las validaciones en el boton grabar en delphi, directamente dejas pasar los datos a la base de datos, y en los triggers adecuados, el SGBBDD hará saltar la excepción que tu quieras:
Trigger (hecho de memoria....):
Código SQL
[-]
Create trigger Check_Valores for tabla before update active position 0
as
begin
if (new.CampoDNI < 1 or new.CAmpoDNI > 99999999) then
exception MAL_DNI;
end;
Al saltar la excepción, verás en delphi un MessageBox con el texto de la excepción.
PD: el usuario, a veces no sabe el dni para dar de alta el registro, deberías dejarle introducir un cero para esos casos especiales. Si no.... ya te lo pedirán

.
Para estos 2 casos, yo no crearía una excepción, sino un "check constraint". Revisa la documentación de Firebird/IB.
Saludos