Newsgroup: it.comp.lang.visual-basic
Titolo: VB6     Printer.PaperBin = 2

Il seguente comando funziona bene stampando A4
 
Private Sub Command4_Click()
Set Pict.Picture = LoadPicture(IlFile)
If Pict.Width > Pict.Height Then
    Printer.Orientation = 2 'Orrizzontale
    Printer.PaintPicture Pict.Picture, 0, 0, 16350, 11300
Else
    Printer.Orientation = 1 'Verticale
    Printer.PaintPicture Pict.Picture, 0, 0, 11300, 16350
End If
Unload Me
End Sub
 
Dovrei ora stampoare in A3 e quindi:
 
Private Sub Command2_Click()
Set Pict.Picture = LoadPicture(IlFile)
Printer.PaperBin = 2 'Cassetto inferiore
If Pict.Width > Pict.Height Then
    Printer.Orientation = 2 'Orrizzontale
    Printer.PaintPicture Pict.Picture, 0, 0, 32700, 22600
Else
    Printer.Orientation = 1 'Verticale
    Printer.PaintPicture Pict.Picture, 0, 0, 22600, 32700
End If
Unload Me
End Sub
 
Però il programma va in  errore:
Valore di proprietà non valido
 
Anche:
Printer.PaperBin = 10 'Cassetto grande
genera lo stesso errore.
 
La stampante, in rete, è una olivetti.
 
Qualche suggerimento?
 
Grazie e saluti.
Sauro
 
 
 
 


Benvenuto nelle gioioso mondo della stampa!
 
Ogni driver assegna ai cassetti delle stampanti che gesctisce valori 
diversi. Esistono delle impostazioni standard, quelle che hai usato, ma 
generalmente non funzionano su periferiche complesse. Devi andarti a 
leggere i valori che il driver assegna ai cassetti.
 
Option Explicit
 
Private Declare Function DeviceCapabilities Lib "winspool.drv" _
   Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, _
   ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, _
   ByVal dev As Long) As Long
 
Private Const DC_BINS = 6
Private Const DC_BINNAMES = 12
 
 
Sub readBinSETTINGS(Optional devToREAD As String = "")
 
   Dim prn As Printer
   Dim dwbins As Long
   Dim ct As Long
   Dim nameslist As String
   Dim nextString As String
   Dim numBin() As Integer
 
   Dim A As String, locTXT As String
   If devToREAD = "" Then
        A = Printer.DeviceName
   Else
        A = devToREAD
   End If
 
   locTXT = ""
   For Each prn In Printers
     If prn.DeviceName = A Then
        dwbins = DeviceCapabilities(prn.DeviceName, prn.Port, _
            DC_BINS, ByVal vbNullString, 0)
        ReDim numBin(1 To dwbins)
        nameslist = String(24 * dwbins, 0)
        dwbins = DeviceCapabilities(prn.DeviceName, prn.Port, _
            DC_BINS, numBin(1), 0)
        dwbins = DeviceCapabilities(prn.DeviceName, prn.Port, _
            DC_BINNAMES, ByVal nameslist, 0)
 
        If locTXT <> "" Then locTXT = locTXT & vbCrLf & vbCrLf
        locTXT = locTXT & prn.DeviceName
 
        For ct = 1 To dwbins
           nextString = Mid(nameslist, 24 * (ct - 1) + 1, 24)
           nextString = Left(nextString, InStr(1, nextString, Chr(0)) - 
1)
           nextString = String(6 - Len(CStr(numBin(ct))), " ") & _
            numBin(ct) & "  " & nextString
           locTXT = locTXT & vbCrLf & nextString
        Next ct
 
     End If
   Next prn
 
   MsgBox stripMESSAGE(locTXT), vbInformation, "Info cassetti"
 
End Sub
 
 
 
-- 
-> G.Chiappori
www.chiappori.it
 
www.chiappori.com
 
 
 

 ha scritto nel messaggio 
news:4fe952ca$0$6820$5fc...@news.tiscali.it...

[CUT]
 
Grazie G
 
La proverò domani.
 
Sauro 
 
 


 
Scaricatelo da qui:
 
http://win.gbcdepot.com/files/printerPaperBinPARAMETERS.zip
 
~20k


 ~20k
 
Scaricato e provato.
Mi ha dato i cassetti giusti che non generano errore.
 
Però il programma ignora l'istruzioone:
Printer.PaperBin = 3 'Cassetto inferiore
 
e stampa in A4
 
Qualche idea?
 
Grazie G.
Sauro 
 
 


Attento a non fare confusione tra le funzionalità del driver ed i 
comandi che dai via VB.
 
Se nel cassetto 3 hai una carta A3 chi glielo dice a VB che vuoi 
stampare in A3? Devi ridimensionare tutta la stampa o, se il driver lo 
fa, adattare la stampa al nuovo formato. E se da VB imposti la 
dimensione della stampa su A3 nel driver è impostato che il cassetto 3 
ha carta A3?
 
Insomma l'interazione tra formati, cassetti e dimensioni è fortissima e 
se nel driver non sono stati impostati i parametri corretti non c'è 
verso. Ad esempio per il fronte retro se nel driver non è attivato non 
c'è modo di attivarlo.
 
Il modo migliore (per me, io ho fatto così) è geenrare prima delel 
stampe (per controllo) una finestrina con tutti i parametri di stampa in 
cui si possa controllare cosa stai per fare, dai parametri della 
stampante alla dimensione di quello che stai per stampare. Generalmente 
io ho una finestra di log che mostra tutto quello che faccio.
 
Inoltre avrai certamente una error trap nelle routine. Controlla che 
quella trappola logghi i parametri che generano delle anomalie.


 e stampa in A4
 
Ora che ci penso...
 
Printer.PaperSize che dice?


 Printer.PaperSize che dice?
 
Ricevo sempre 9 (A4) qualsiasi sia il
PaperBin impostato.
 
Ciao G
Sauro 
 
 


prova ad impostarlo te il formato A3


 prova ad impostarlo te il formato A3
 
Ok
 
Con questa stampante bisogna ignorare
la proprietà PaperBin
 
Printer.PaperSize = 8 ' A3
è sufficiente per stampare in A3.
 
Tra l'altro ho capito una cosa che in un primo
momento mi sembrava strana.
La medesima istruzione di stampa occupa
percentualmente lo stesso spazio sia in A4
che in A3.
Insomma A3 ha gli stessi punti di stampa di
A4, solo più rarefatti.
 
Giusto?
 
Ciao G e grazie di tutto.
Sauro
 
 

 Giusto?
Si è "giusto" se vuoi uno zoom del tipo A4 zoom 110%= A3
Se stampi un foglio A4 sul formato A3 deve uscire una stampa di dimensioni 
uguali e con un bordo bianco su due lati (potrebbero essere anche tre lati), 
se le sovrapponi in controluce l'immagine o il testo DEVONO essere uguali.
 
 
 


I twips sono unità virtuali. Quindi nessuno ti vieta di usare come unità 
di misura della stampa i millimetri ed indicare valori come 0.0000001. 
Il driver interpreterà quel valore in ragione delle possibilità hardware 
della periferica. Quindi parlare di densità di punti è inappropriato.
