Newsgroup: it.comp.lang.visual-basic
Titolo: Stampa caratteri ASCII

Ho il problema di dover mandare  ad  una stampante laser dei caratteri
ASCII semigrafici per fare delle cornici ( i caratteri sono 196 , 218
etc. ) .
Uso il comando Printer.print ma la stampante non li interpreta
corrattamente. Sicuramente sbaglio qualcosa oppure non è questo il
 modo corretto per stampare quei tipi di caratteri. Qualcuno ,
attraverso un'esempio, mi può  insegnare come si fa.
Grazie
Antonio
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 attraverso un'esempio, mi può  insegnare come si fa.
Il problema è che il font che usi non contiene i semigrafici del DOS.
In effetti nessuno dei caratteri standard li contiene.
C'è un font TrueType per "LineDraw", è una specie di Courier che fa
anche i caratteri estesi uguali a quelli del Dos, funziona sotto win95/98,
non l'ho provato su NT, ma non credo ci siano problemi.
Lo puoi scaricare da qui:
ftp://ftp.microsoft.com/softlib/mslfiles/gc0651.exe
Le informazioni relative sono qui, ma l'indirizzo dell'exe non funzia,
hanno rifatto il sito e non hanno aggiornato i links.
Usa invece quello che ti ho dato io.
http://support.microsoft.com/support/kb/articles/Q96/0/40.ASP
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

etc. ) .
Se ho capito bene vorresti usare i caratteri interni della stampante
(perchč se cosě non fosse, i caratteri True Type non contengono i
semigrafici)
Ti consiglierei anzitutto  di accertarti che tali caratteri siano
interpretati correttamente dalla stampante (Crea un file di testo
dall'edit di Dos con tali caratteri, poi stampalo con TYPE
nomefile.txt >lpt1)
Se tutto OK, non credo sia possibile stampare usando l'oggetto print
(sono felice se qualcuno mi smentisce); invece ti consiglierei di
usare i comandi di apertura file sequenziali:
open "lpt1" for output as #1
	print #1,"abcd" & chr(13) & chr(10)
	print #1, "efgh" & chr(13) & chr(10)
close #1

>
Io per mandare in stampa dei caratteri che vengono filtrati uso queste
funzioni
'Dichiarazioni
Private Declare Function openprinter& Lib "winspool.drv" Alias
"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal
pDefault As Long)
Private Declare Function StartDocPrinter& Lib "winspool.drv" Alias
"StartDocPrinterA" (ByVal hprinter As Long, ByVal Level As Long, pDocInfo As
DOC_INFO_1)
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hprinter
As Long) As Long
Private Declare Function writeprinter Lib "winspool.drv" Alias
"WritePrinter" (ByVal hprinter As Long, pBuf As Any, ByVal cdBuf As Long,
pcWritten As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hprinter As
Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hprinter
As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hprinter As
Long) As Long
Private Type DOC_INFO_1
    pDocName    As String
    pOutputFile As String
    pDatatype   As String
End Type
Public hprinter&
Public Sub OpenSpool(Nome As String)
                'Apre lo sool di stampa
            Dim jobid&
            Dim res&
            Dim written&
            Dim printdata$
            Dim docinfo As DOC_INFO_1
           ' Nome = Nome della stampante
            res& = openprinter(Nome, hprinter, 0)
            If res = 0 Then
                MsgBox "Errore Sulla Stampante " & Nome
                Exit Sub
            End If
            docinfo.pDocName = "Nome applicazione"
            docinfo.pOutputFile = vbNullString
            docinfo.pDatatype = vbNullString
            jobid = StartDocPrinter(hprinter, 1, docinfo)
            Call StartPagePrinter(hprinter)
End Sub
Public Sub WriteSpool(dato As String)
            Dim jobid&
            Dim res&
            Dim written&
            Dim printdata$
            Dim docinfo As DOC_INFO_
            printdata$ = dato
            Call writeprinter(hprinter, ByVal printdata$, Len(printdata$),
written)
End Sub
Public Sub Closespool()
              'Chiude lo spool di stampa
            Call EndPagePrinter(hprinter&)
            Call ClosePrinter(hprinter&)
End Sub
Spero di essere stato utile Luca

Spero di essere stato utile Luca
Interessante!
Almeno, dalle mie parti puo' risultare molto interessante.. . so gia' dove
andare ad applicare il tuo esempio ;-)
Che ne dici di farne un semplice prj ed inviarlo al WM del Sito Comune?
Salutoni
Ciao
By -MES-   Maronese Ettore
http://www.maronese.com/mes
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://www.murialdo.it/it_lang_vb