Hola,
lo que estoy usando es más o menos así.
1 - en el report llamas a una ventana que permite seleccionar la impresora
!window manager init 2700
ReturnValue = datoslistcostos(loc:tipo, loc:tiporubro, loc:detrub)
If ReturnValue then return ReturnValue.
2- El procedimiento datoslistcostos permite cambiar la impresora y darle valor a las variables
que necesita el listado
imagen007.jpg
En el botón que se ve en la imagen llamas al proc para seleccionar laimpresora:
2-a: !botón de la impresora. Accepted prioridad >5000
PRINTERDIALOG('SELECCIONE LA IMPRESORA DEL SISTEMA', 0)
GLO:DEVICE = PRINTER{PROPPRINT:DEVICE}
GLO:PORT = PRINTER{PROPPRINT:PORT}
display()
Las variables globales las uso para mostrar en la pantalla la impresora que está seleccionada.
2-b Podes guardar los valores existentes antes de entrar el proc
!window manager Init 7300
save:port = printer{PROPPRINT:port}
save:device = printer{PROPPRINT:device}
sav:pantalla = GLO:pantalla
2-c y restaurarlos en caso de escapar sin listar
!window manager kill 2300
If self.response = RequestCancelled
printer{PROPPRINT:port} = save:port
printer{PROPPRINT:device} = save:device
GLO:pantalla = sav:pantalla
ret = 1
End
Espero que te sirva. Saludos.