Antonio, estoy intentando ver porque la funcion PrnBinSource() no funciona correctamente;
Si en las propiedades de la impresora cambiamos la bandeja DEBERÍA la llamada a PrnBinSource() indicar correctamente su número,
tal y como hace esta funcion en delphi.
En fivewin SIEMPRE devuelve el mismo número , y es imposible saber que numero le corresponde para usar la bandeja 2.
Los #DEFINES no sirven para nada, pues la bandeja2 para una impresora es 260, alucina, y yo probando del 1 al 14, pues mal vamos.
La función PRINTERSETUP() no guarda o mantiene la esctructura LPDEVMODE , por lo tanto, es imposible saber el codigo BIN que le corresponde
a las diferentes bandejas de la impresora.
function GetBinSelection: integer;
var
hDevMode: THandle;
Device,Driver,Port: array [0..1024] of Char;
bin: integer;
DevMode : PDevMode;
begin
Printer.GetPrinter (Device,Driver,Port,hDevMode);
bin := -1;
if hDevMode <> 0 then
begin
DevMode := GlobalLock (hDevMode);
bin := DevMode^.DMDEFAULTSOURCE;
UserCollateCode := DevMode^.dmCollate;
GlobalUnlock (hDevMode);
end;
result := bin;
end;
Aqui esta el código completo en delphi para que puedas observar que funciona perfectamente
http://www.clubdelphi.com/foros/showthread.php?t=35149
Si el código bin que me devuelve Delphi, se lo coloco a prnBinSource() funciona perfectamente.
#include "fivewin.ch"
Function Main
PRINTERSETUP()
? "bin code", PrnBinSource()
return nilSi en las propiedades de la impresora cambiamos la bandeja DEBERÍA la llamada a PrnBinSource() indicar correctamente su número,
tal y como hace esta funcion en delphi.
En fivewin SIEMPRE devuelve el mismo número , y es imposible saber que numero le corresponde para usar la bandeja 2.
Los #DEFINES no sirven para nada, pues la bandeja2 para una impresora es 260, alucina, y yo probando del 1 al 14, pues mal vamos.
La función PRINTERSETUP() no guarda o mantiene la esctructura LPDEVMODE , por lo tanto, es imposible saber el codigo BIN que le corresponde
a las diferentes bandejas de la impresora.
function GetBinSelection: integer;
var
hDevMode: THandle;
Device,Driver,Port: array [0..1024] of Char;
bin: integer;
DevMode : PDevMode;
begin
Printer.GetPrinter (Device,Driver,Port,hDevMode);
bin := -1;
if hDevMode <> 0 then
begin
DevMode := GlobalLock (hDevMode);
bin := DevMode^.DMDEFAULTSOURCE;
UserCollateCode := DevMode^.dmCollate;
GlobalUnlock (hDevMode);
end;
result := bin;
end;
Aqui esta el código completo en delphi para que puedas observar que funciona perfectamente
http://www.clubdelphi.com/foros/showthread.php?t=35149
Si el código bin que me devuelve Delphi, se lo coloco a prnBinSource() funciona perfectamente.
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)