Esto suele hacerse del lado servidor, dentro de la base de datos en un trigger before insert:
Código SQL
[-]
if new.id_monitor is null then
new.id_monitor = Gen_ID('GEN_ID_MONITOR',1);
Ahora al tiempo de insertar, omites el campo id_monitor o directamente en la SQL le pasas el valor NULL (declara la unidad Variants en el uses para que compile).
Para hacerlo del método que tú quieres, tendrías que lanzar otra consulta más para generar el valor:
Código Delphi
[-]
query1.sql.text := 'select Gen_ID('+ quotedstr('GEN_ID_MONITOR')+',1)';
query1.Open
IB_Dataset.FieldByName('ID_MONITOR').AsInteger:=
query1.Fields[0].AsInteger;
query1.Close;
(dicho de memoria, espero que funcione).
Saludos