RecNo solo funciona en tablas planas (paradox, dbase, etc) en Firebird devolverá -1. (Creo que ha de hacerse un .last para obtener el valor, aunque no estoy seguro).
Lo que se suele hacer en estos casos es un procedimiento almacenado, declarando una variable contador que se va aumentando en cada select.
Ej:
Código SQL
[-]
declare procedure ClientesNumerados()
returning( numrow integer,
nombre varchar(80),
Apellidos varchar(80))
as
begin
numrow = 0;
for select nombre, apellidos from tabla
into :nombre, :Apellidos do
begin
numrow := numrow + 1;
suspend;
end;
end.
Está escrito de memoria, fijo que tiene errores.
Ahora en delphi:
Código Delphi
[-]
query1.sql.text := 'select * from clientes_numerados order by nombre';
query1.Open;
Asociado a un Grid debería funcionar.
Saludos