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

VB6 creare margine sinistro costante con printer.print

42 views
Skip to first unread message

ag

unread,
Jun 26, 2010, 6:55:11 AM6/26/10
to
vb6-sp6

Piuttosto che dover usare un tab per ogni riga di printer.print, desidererei
creare un margine costante di circa 4 cm. a sinistra di ogni riga.
Ho provato con il comando CurrentX, CurrentY, ma mentre sono riuscito a
spostare in basso l'inizio stampa, non altrettanto a spostare verso destra
l'inizio stampa di ogni riga.
Non sono bravo in materia, ovviamente, mi aiutate ?
Grazie e cordiali saluti.
giap


JS

unread,
Jun 27, 2010, 5:52:27 AM6/27/10
to

"ag" <giu...@tin.it> ha scritto nel messaggio
news:4c25dc8b$0$18993$4faf...@reader5.news.tin.it...
Eppure con l'utilizzo di CurrentX, CurrentY dovresti risolvere
magari imposta la proprietà ScaleMode = 6 (in mm) e ricorda
di ripetere i comandi CurrentX, CurrentY per ogni riga di stampa.
Un'altra cosa da sapere è che il punto 0,0 sul foglio di carta è diverso
da stampante a stampante, percui dovresti fare dei test per capire da
dove parte la stampa realmente.

Per semplificare il codice potresti inserire un contatore per incrementare
automaticamente la posizione delle righe con il passo voluto.

spero di essere stato di aiuto

Saluti

JS


ag

unread,
Jun 28, 2010, 12:25:49 PM6/28/10
to
Ti ringrazio vivamente, ma il problema rimane.
Mi permetto trascrivere le istruzioni iniziali della stampa.
Sbaglio qualcosa, ma cosa ????
Grazie
giap

Printer.FontName = "COURIER NEW"
Printer.FontSize = 12
Printer.FontBold = True
Printer.ScaleMode = 6
Printer.CurrentY = 30
Printer.ScaleMode = 6
Printer.CurrentX = 60
fanno seguito le righe di stampa.


JS

unread,
Jun 28, 2010, 12:34:37 PM6/28/10
to

"ag" <giu...@tin.it> ha scritto nel messaggio
news:4c28cd0b$0$31370$4faf...@reader1.news.tin.it...
Bene, forse non mi sono spiegato bene

Printer.ScaleMode = 6: ' devi metterlo una sola volta all'inizio della
procedura

Printer.FontName = "COURIER NEW"
Printer.FontSize = 12
Printer.FontBold = True

'Stampa Righe

Printer.CurrentY = 30
Printer.CurrentX = 60
Printer.Print riga 1

Printer.CurrentY = 40 : 'ibcremento di Y di 10 mm
Printer.CurrentX = 60
Printer.Print riga 2

e cos� via

spero di essere stato piu chiaro

ciao

JS


GbC

unread,
Jun 29, 2010, 3:30:20 AM6/29/10
to

La quasi totalità delle stampanti non è in grado di stampare 'al vivo',
vuoi perché il formato della carta non lo consente vuoi perché tra
meccanismi di trascinamento e sistema di spostamento della testina
questo non è possibile.

A parte ciò che potremmo impostare con i parametri eventualmente
gestibili nel driver, ogni stampante ha un suo 'offset' che di fatto
sposta l'origine delle stampe sia verso in basso che verso destra.

Sebbene in alcuni casi una precisione millimetrica non sia necessaria,
in altri (moduli prestampati, bollettini, ecc.) diventa indispensabile
posizionare in modo assolutamente preciso la stampa.

Esistono due modi per posizionare una stampa in un foglio: spostare il
foglio o spostare la stampa. Il primo modo va bene per la posizione
orizzontale ma rende impossibile il centraggio verticale, a meno che non
si utilizzi una stampante a modulo continuo. Il secondo modo è quello da
preferire.

Per posizionare in modo assoluto una stampa dobbiamo conoscere la
posizione relativa dell'origine delle stampe. Windows posiziona
l'origine della stampa (il punto 0,0) in alto a sinistra nella pagina.
Di fatto è il primo punto stampabile, quindi non è nell'angolo della
pagina ma subito dopo i margini 'hardware'. Si deve quindi sapere la
dimensione di questi margini 'hardware', dipendenti dalla marca,
modello, tecnologia della stampante utilizzata.

Una volta definito lo scostamento di base è semplice definire la
posizione della stampa in modo assoluto.
Tutto questo comporta la necessità di effettuare una 'taratura' per ogni
stampante si utilizzi.

Questa procedura di inizializzazione va realizzata dal programmatore e
consiste in due funzionalità di base:

A) mostrare dove effettivamente la stampante inizia a stampare, cioè la
posizione del punto 0,0 al di fuori dei margini hardware. Si realizza
stampando qualcosa alle coordinate 0,0.

B) consentire di inserire dei valori che consentiranno al programma di
tener conto che la stampante in uso ha determinati valori di scostamento
verso destra e verso il basso. Si predispone una maschera di immissione
con due valori e si salvano in una file INI (o quel che si vuole) il
nome della stampante ed i suoi valori di scostamento per il loro
riutilizzo.

--
-> GbC|
www.gbcweb.com
www.chiappori.com

ag

unread,
Jun 29, 2010, 7:42:10 AM6/29/10
to
Ti ringrazio, sei stato chiarissimo, comunque se hai letto gli altri
messaggi, hai compreso quale era in definitiva il problema.
Comunque risolvibile facilmente con un tab(x).
Grazie ancora e cordiali saluti
giap


0 new messages