Newsgroup: it.comp.lang.visual-basic
Titolo: Stampare il contenuto di un txtbox con Printer

Sto scrivendo un programmino per stampare i cartellini dei prezzi
utilizzando VB6. Ho creato un textbox dove inserisco il prezzo,  uno dove
inserisco la descrizione dell'articolo ed un tasto per la stampa. Il
problema è che se nella descrizione vado a capo con enter la stampa viene
effettuata correttamente; se scrivo di continuo (il txtbox è giustificato a
dx e sx),il cursore va a capo da solo e nel momento in cui stampo, il testo
viene stampato su una sola riga del foglio o su due se è lungo. Domanda:
come si fa a stampare su carta nella stessa maniera in cui visualizzo a
video il contenuto di un txtbox.
Scusatemi per il papiro!!! Grazie

 wrote in message 7rgool$j7q$1...@nslave1.tin.it...

 video il contenuto di un txtbox.
Invece di usare il .Text, devi crearti la stringa formattata, riga per riga.
Inserisci in un modulo questo:
____________________________
Option Explicit
Public Const EM_GETLINE = &HC4
Public Const EM_GETLINECOUNT = &HBA
Public Const EM_LINEINDEX = &HBB
Public Const EM_LINEFROMCHAR = &HC9
Public Const EM_SETSEL = &HB1
Public Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByRef lParam As Byte) As Long
Public Const MaxCaratteri = 1500   ' Scale this to size of text box
Public buff(MaxCaratteri) As Byte
____________________________
...poi aggiungi nel form questa funzione:
____________________________
Function fGetLine(Box As Control, LineNumber As Long) As String
    'Dim MAX_CHAR_PER_LINE As Integer
    Dim byteLo%
    Dim byteHi%
    Dim Buffer$
    Dim K As Integer
    Dim x%
    ' This function fills the buffer with a line of text
    ' specified by LineNumber from the text box control.
    ' The first line starts at zero.
    byteLo% = MaxCaratteri And (255)  '[changed 5/15/92]
    byteHi% = Int(MaxCaratteri / 256) '[changed 5/15/92]
    Buffer$ = Chr$(byteLo%) + Chr$(byteHi%) + Space$(MaxCaratteri - 2)
    ' [Above line changed 5/15/92 to correct problem.]
    For K = 0 To MaxCaratteri
        buff(K) = 255
    Next K
    x% = SendMessage(Box.hwnd, EM_GETLINE, LineNumber, buff(0))
    fGetLine$ = ""
    For K = 0 To MaxCaratteri
        If buff(K) = 255 Then Exit For
        fGetLine$ = fGetLine$ & Chr$(buff(K))
    Next K
End Function
_____________________________
Ottieni il testo corretto con queste righe:
_____________________________
    Dim TestoConAccapo As String
    Dim NumeroLinee As Long
    Dim Linee As Long
    NumeroLinee = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
' legge il numero di linee
    For Linee = 0 To NumeroLinee
' e le accoda l'una all'altra inserendo degli a capo forzati.
        TestoConAccapo = TestoConAccapo & fGetLine(Text1, Linee) & vbCrLf
    Next
    Debug.Print TestoConAccapo
_____________________________
Spero che questo risolva, se hai problemi scrivimi.
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