hola , lo q puedes hacer es otro dw (dw_2) con un argumento de recuperacion,
en el dw_1 q es donde tienes todos los registros al hacer doble click en el registro q desees tomas el valor , se lo pasas al dw_2. e imprimes este.
seria algo asi
en el dw_1 evento doubleclick
long ll_codigo
ll_codigo=this.getitemnumber(row,"campo")
dw_2.retrieve(ll_Codigo)
dw_2.print()
espero te de una idea.
con respecto al tema de impresion de paginas debes usar
dw_1.modify("DataWindow.Print.Page.Range = '" + ls_rango + "' ")
donde ls_rango tiene el rango de paginas a imprimir (2-4) paginas 2,3 ,4
chequea la ayuda de "Print.property DataWindow object property"
cualquier duda ponla nuevamente en el foro
un saludo desde argentina