Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB6 Printer.PaperBin = 2

146 views
Skip to first unread message

Sauro

unread,
Jun 25, 2012, 2:38:23 PM6/25/12
to
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




GbC

unread,
Jun 26, 2012, 2:12:29 AM6/26/12
to
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


Sauro

unread,
Jun 26, 2012, 3:45:44 AM6/26/12
to

"GbC" <infoToglimiSe...@gbcdepot.com> ha scritto nel messaggio
news:4fe952ca$0$6820$5fc...@news.tiscali.it...
[CUT]

Grazie G

La proverò domani.

Sauro


GbC

unread,
Jun 26, 2012, 10:24:32 AM6/26/12
to
Sauro wrote:
> "GbC" <infoToglimiSe...@gbcdepot.com> ha scritto nel
> messaggio news:4fe952ca$0$6820$5fc...@news.tiscali.it...
>> Sauro wrote:
[cut]
>>> 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.
>
> [CUT]
>

Scaricatelo da qui:

http://win.gbcdepot.com/files/printerPaperBinPARAMETERS.zip
~20k

Sauro

unread,
Jun 28, 2012, 1:49:01 PM6/28/12
to

>> [CUT]
>>
>
> Scaricatelo da qui:
>
> http://win.gbcdepot.com/files/printerPaperBinPARAMETERS.zip
> ~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


GbC

unread,
Jun 29, 2012, 4:22:33 AM6/29/12
to
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.

GbC

unread,
Jun 29, 2012, 4:31:20 AM6/29/12
to
Sauro wrote:
>>> [CUT]
>
> Perņ il programma ignora l'istruzioone:
> Printer.PaperBin = 3 'Cassetto inferiore
>
> e stampa in A4

Ora che ci penso...

Printer.PaperSize che dice?

Sauro

unread,
Jul 1, 2012, 3:23:30 AM7/1/12
to
> Ora che ci penso...
>
> Printer.PaperSize che dice?

Ricevo sempre 9 (A4) qualsiasi sia il
PaperBin impostato.

Ciao G
Sauro


GbC

unread,
Jul 2, 2012, 3:18:07 AM7/2/12
to
prova ad impostarlo te il formato A3

Sauro

unread,
Jul 5, 2012, 12:26:44 PM7/5/12
to

> 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


XP

unread,
Jul 6, 2012, 2:18:05 AM7/6/12
to
> Insomma A3 ha gli stessi punti di stampa di
> A4, solo più rarefatti.
>
> 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.



GbC

unread,
Jul 6, 2012, 3:41:51 AM7/6/12
to
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.
0 new messages