Newsgroup: it.comp.lang.delphi
Titolo: Selezionare cassetto (vassoio) e foglio di una laser

Ho un cliente con una laser con due cassetti (vassoi)
nel cassetto principale sono caricati fogli A5
nel cassetto 2 ci sono fogli A4
 
dovrei stampare i ddt su foglio A5
e le fatture (e altre stampe) su A4
 
La stampante ha un driver dove è possibile impostare le preferenze
quindi si può manualmente impostare per esempio:
 
cassetto principale e foglio a5
oppure
cassetto 2 e foglio A4
 
Vorrei farlo da codice.
 
Ho trovato questo : 
----------------------------------------------------
procedure TFwps.setfoglio(foglio:string);
var
   Device, Driver, Port: array[0..80] of Char;
   DevMode: THandle;
   pDevmode: PDeviceMode;
begin
   // Get printer device name etc.
   Printer.GetPrinter(Device, Driver, Port, DevMode);
   // force reload of DEVMODE
   Printer.SetPrinter(Device, Driver, Port, 0) ;
   // get DEVMODE handle
   Printer.GetPrinter(Device, Driver, Port, DevMode);
   If Devmode <> 0 Then Begin
     // lock it to get pointer to DEVMODE record
     pDevMode := GlobalLock( Devmode );
     If pDevmode <> Nil Then
     try
       With pDevmode^ Do Begin
         // modify paper size
         if foglio='A4' then dmPapersize := DMPAPER_A4;
         if foglio='A5' then dmPapersize := DMPAPER_A5;
         // tell printer driver that dmPapersize field contains
         // data it needs to inspect.
         dmFields := dmFields or DM_PAPERSIZE;
       End;
    finally
      // unlock devmode handle.
      GlobalUnlock( Devmode );
    end;
   End; { If }
   //Peter Below (TeamB)  
100113.1...@compuserve.com
)
end;
 
-------------------------------------------------------
Mi consente di selezionare il foglio ma non il cassetto. 
 in DEVMODE non mi pare ci sia nulla che riguardi le 'preference'
 
qualcuno ha qualcosa di utile?


Penso sia questo (input bin = cassetto di origine) :
 
dmDefaultSource
 
  For printers, specifies the printer's default input bin. This must 
  be one of the DMBIN-prefixed constants defined in wingdi.h. 
  If the specified constant is DMBIN_FORMSOURCE, the input bin should 
  be selected automatically.
 
ciao
Giacomo
 
 
 
 
 
 
 

Giacomo
 
Grazie, proverò anche se in DEVMODE vedo :
 
dmDefaultSource
 
Reserved; must be zero. 

Ciao,
  hai  anticipato una situazione che, tra poco, mi sarei imbattuto anch'io.
Quindi mi sono letto alcuni documenti e ho eseguito qualche ricerca.
Segui questo link, che tra i molti e' quello piu' completo.
 
https://www.tek-tips.com/viewthread.cfm?qid=1079747
 
 
E' molto, molto semplice, tanto che l'ho implementata nella mia unit delle 
utilita' varie.
Quello che mi manca da trovare e' come individuare quanti vassoi ha una 
stampante.
Puo' capitare di essere in rete e mandare una stampa da qualche parte e non 
sapere quale vassoio ha di defautl.
Nel tuo caso, il link in questione risolve il problema perche' tu sai gia' 
in partenza il numero dei vassoi.
 
Ciao
 
Daniele
 
 


Grazie!, sembra interessante.
Io avevo già fatto una prova ma avevo impostato
         dmFields := DM_PAPERSIZE
e non funzionava ora dovrebbe
...
Farò sapere
Ciao :-)
 
Dmfield