Hola,
Podrías utilizar un objeto "TList" o "TObjectList" que instanciaras en una variable "global", o que estuviera dentro del "formulario de reportes" (nunca usé uno), es decir, suponiendo que su declaración fuera similar a un formulario normal y corriente, algo así:
Código Delphi
[-]
type
TForm1 = class(TForm)
private
FQrLabels: TList;
end;
Eso te permitiría ir creando instancias de "TQrLabel" e ir añadiendo sus referencias al objeto "TList" o "TObjectList". Al cerrarse el formulario o cuando estimaras más conveniente sería cuestión de liberar el objeto de marras. Ahora mismo no recuerdo si con "TList" basta con liberar dicho objeto o hay que "recorrer" la lista y liberar cada una de los objetos que contiene. Lo mismo te digo para "TObjectList". Tendrás que investigar o algún compañero nos sacará de dudas.
Por otro lado, el error que refieres más arriba es bastante común, y es que, en estos casos en que recorremos los componentes de un formulario, por ejemplo, y vamos liberando algunos de ellos (dependiendo de X condición), hemos de iterar por dichos elementos con un bucle al revés que como suele hacerse, es decir, algo así:
Código Delphi
[-]
for i := ComponentCount downto 0 do
begin
end;