Buenas,
Vuelvo a enviaros la consulta porque en la que envié el viernes no se entendía nada.
Nuestra aplicación incluye una ventana de configuración de impresión que permite al usuario escoger impresora, formato de papel y los márgenes a utilizar. Para cargar los formatos de papel (con sus correspondientes códigos) de cada impesora utilizamos un procedimiento que un compañero encontró hace mucho tiempo:
#DEFCONSTPCS-CODEDEB#
PROCEDURE FormatoPapel()
cI is int
TPAPER is array of 256 int
PAPER est un tableau de 256 chaînes ASCIIZ sur 64
vNbBac is int
Nbpaper is int
vNOMIMP est une chaîne ASCIIZ sur 32
vNOMPORT est une chaîne ASCIIZ sur 32
impre is string = IMPRESORA[IMPRESORA] //Combo con los nombres de las impresoras
puerto is string = ExtractString(INILit("Devices",impre),2,",")
//Para obtener los códigos de los formatos de papel
Nbpaper = CallDLL32("winspool.drv","DeviceCapabilitiesA" , &impre,&puerto,2,&TPAPER, 0)
ListDeleteAll("CODPAPEL")
FOR cI = 1 TO Nbpaper
ListAdd("CODPAPEL",TPAPER[cI])
END
//Para obtener los formatos de papel de la impresosra
Nbpaper = CallDLL32("winspool.drv","DeviceCapabilitiesA" , &impre,&puerto,16,&PAPER, 0)
ListDeleteAll("PAPEL")
FOR cI = 1 TO Nbpaper
ListAdd("PAPEL",PAPER[cI])
END
#DEFCONSTPCS-CODEFIN#
Con WD5.5 funciona perfectamente, pero ahora que hemos migrado a WD11 los códigos de formato de papel que nos devuelve son unos números enormes para los primeros 93 formatos y cero para los siguientes. ¿Alguien sabe cómo solucionar este problema u otra forma de obtener los códigos de los formatos de papel?
Muchas gracias |