Que base de datos?
Casi todas permiten retornar el Id generado en un Insert. Por ejemplo, en SQL Server se hace asi:
Código SQL
[-]
INSERT INTO Tabla (campo1, campo2, ... campoN)
OUTPUT INSERTED.NombreCampoId AS AliasCampo
VALUES (valor1, valor2, ... valorN)
Y desde Delphi:
Código Delphi
[-]
var
qry: TADOQuery;
begin
qry.SQL.Text := setear SQL
qry.Parameters.ParamByName('valor1').Value := valor1;
qry.Open;
Result := qry.FieldByName('AliasCampo').AsInteger;
end;