Creo que tal como te dice el compañero, debes rellenar una tabla temporal (por ejemplo un clientdataset) con los datos de cada etiqueta, y después lanzas la impresión, la idea es que esta línea :
Código:
Form2.frxreport2.PrepareReport();
Form2.frxReport2.Print;
se ejecute una sola vez, y no una por cada etiqueta. Ahora mismo estás llamando a
Código:
printer.begindoc; ... printer.enddoc;
por cada etiqueta, y posiblemente será lo que te ralentiza la impresión. También es posible es que el software de etiquetas que probaste envíe las órdenes de impresión directamente a la impresora, y normalmente los lenguajes de impresora tienen comandos para actualizar esos números incrementales de una forma más eficiente.