Newsgroup: it.comp.lang.delphi
Titolo: [Delphi 5] Stampanti ad aghi

Ciao a tutti,
devo sviluppare un'applicazione che stampi un registro su una stampante ad
aghi con modulo continuo a 132 (o 136?) colonne. Questo mi genera una serie
di problemi:
1) dovrei stampare record per record, man mano che un altro programma me li
inserisce in una tabella. Anche utilizzando le primitive Assignprn, e
Write/Writeln ottengo che al termine di ogni stampa la stampante mi va a
fine pagina e quindi mi stampa al massimo una riga per pagina. Inoltre non
riesco ad impostare correttamente la modalità compressa per il carattere;
2) una soluzione che ho trovato (anche se non la gradisco molto) potrebbe
essere quella di utilizzare un report di una pagina da stampare ogni volta
che nell'archivio raggiungo un certo numero di righe presenti. Ma in questo
caso ho notato che, benchè impostassi correttamente le dimensioni del
foglio, tutto ciò che come margine è oltre il normale A4 mi viene tagliato;
3) inoltre, e qui non so ancora come fare, sul pc dovrebbero essere
installate due stampanti per produrre due di questi registri. A seconda del
valore di un campo "selettore" dovrei stampare su una o sull'altra, in una
delle due modalità descritte.
Grazie a tutti per l'attenzione.
Gianluca.

"Gianluca Plevani" <*
in...@brain-enterprise.com
*> wrote in message
news:wGbW8.43486$
Jj7.1...@news1.tin.it

Ciao Gianluca
non è molto chiaro quello che dici, sarebbe meglio vedere un po' di
codice...
Allora: io ti posso dire come ho risolto diversi di questi problemi.
La procedura (Bde) legge un archivio (o apposito o query), record per
record,
e trasferisce un record per ogni riga sul Canvas della stampante (anche
se ad aghi).
Devi utilizzare il Canvas.TextOut(...) per impostare la riga da stampare
e tenere conto della altezza della riga nella pagina (puoi farlo creando
una riga
campione tipo Canvas.Text.Height), memorizzare il numero di riga
raggiunto in stampa,
saltare ad una nuova pagina quando hai raggiunto il numero di righe che
vuoi
stamparte nella pagina, chiudere il documento.
Se utilizzi il vecchio Assign(Prn), devi utilizzare WriteLn(Testo): la
stampante salta
alla nuova pagina a seconda di come è impostata (fai ill calcolo delle
righe e
stampi tante WriteLn('') fino a termine pagina).
Se utilizzi il compoinente TPrinter, devi inizializzare la pagina da
stampare con BeginDoc,
saltare alla nuova con NewPage, chiudere con EndDoc. Va utilizzato il
Canvas della
stampante, e quindi i comandi Canvas.TextOut() per stabilire a che
altezza della
pagina inserire le righe.
Forse è poco chiaro, ma se mi mandi qualche riga di sorgente, forse
posso darti qualche
risposta meglio diretta.
A risentirci                                        NioBi
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Mi inserisco per spiegare il mio problema.
Stampo usando AssignPrn su porta lpt1, e fin qui tutto ok.
Ma se devo stampare su di una stampante di rete ?
Anche se è connessa (per dos)  a lpt2  assignprt mi da' errore.
Qualche idea ?
Grazie da Giulio Cavedali, Unisoft

 ha scritto nel messaggio
news:0f14b8af3d962323439...@mygate.mailgate.org...


 Grazie in anticipo della tua disponibilità!
Se ti risponde, è pure troppa...
Andrea

Piu' gli argomenti sono complessi e articolati, piu' i niubbi, notoriamente
pigri, rompono su cose banalissime anziche' leggersi la manualistica. E la
gente che si e' fatta il mazzo per imparare quello che sa, poi, a ragione,
si incavola. I linuxiani ad esempio, da anni e anni, da quando leggo usenet,
sono sempre incazzatissimi, e vedo che anche con Delphi sta cominciando a
crearsi lo stesso atteggiamento verso i niubbi ;)
Bene bene :D
Ciao, Sandro

 Punto Terzo: Mi sembra strano che non sia nelle FAQ, le hai lette per
caso?
Punto terzo: gli ho letti e non ho trovato nulla che mi interessasse.
Punto quarto: non pensavo che ti girassero i c....... senza sapere uno come
lavora.

 lavora.
Ed il bello è che hai torto... non mi girano _ancora_ i c... :))))))
Tuttavia, mi ripeto, certe cose vanno specificate NEL messaggio, almeno le
prime
volte.
Saluti non incazzosi <g>
Andrea