Newsgroup: it.comp.lang.visual-basic
Titolo: Textbox e oggetto printer

Salve,
ho una textbox multiline e ne vorrei stampare il contenuto sulla stampante.
Se il contenuto č inferiore ai 32 caratteri tutto ok, altrimenti la stampa
avviene fuori foglio e quindi se ne leggono solo i primi 32 caratteri e
basta.
Perciņ dovrei impostare la textbox con un larghezza che faccia entrare 32
caratteri e renderla multiline.
Il dubbio č: come posso fare leggere una riga x volta senza usare le api
fgetline?
Avevo pensato ad un ciclo for...next o do...loop che mi varifichi:
    1)Quante sono le righe totali all'interno della textbox
    2)printer.print text1 riga n1
    3)printer.print text1 ultimariga
C'č una proprietą del textbox che mi restituisca il numero totale di righe e
la riga attuale?
Grazie a tutti!


 ho una textbox multiline e ne vorrei stampare il contenuto sulla stampante.
Mi sembra una buona idea: una volta ho provato a stamparla su un tostapane,
e non ci sono riuscito....
(Battuta, prometto che da adesso in poi faccio il serio)
[Eradicator]
 Se il contenuto è inferiore ai 32 caratteri tutto ok, altrimenti la stampa
 avviene fuori foglio e quindi se ne leggono solo i primi 32 caratteri e
 basta.
Già... pare che sia impossibile spiegare alla stampante di comportarsi come
una textbox multiline...
[Eradicator]
Perciò dovrei impostare la textbox con un larghezza che faccia entrare 32
caratteri e renderla multiline.
Mah... mi sembra un approccio un po' limitativo: se cambi il carattere di
stampa (e non c'è bisogno di farlo in modo esplicito, a volte basta cambiare
la stampante) e tutto il tuo castello crolla miseramente
Se vuoi continuare su questa strada, al di là dell'appunto che hai fatto
prima, ti consiglierei di usare un'altro trucco: inserisci un vbcrlf ogni 32
caratteri della stringa contenuta nel textbox e poi stampala.... Se voui
fare qualcosa di più raffinato riposta che vediamo cosa fare.
Salutoni
Sergio

 ha scritto nel messaggio
news:N_5u9.38035$TD1.1...@news2.tin.it...


ahi, cominciamo male.....
hai "quotato" il mio post come un "cinghiale da scogliera" (cit.), proverò a
ricostruire il tutto...
[cssoft]
Se vuoi continuare su questa strada, al di là dell'appunto che hai fatto
prima, ti consiglierei di usare un'altro trucco: inserisci un vbcrlf ogni 32
caratteri della stringa contenuta nel textbox e poi stampala....
[Eradicator]
Come potrebbe essere una routine x fare ciò usando vbcrlf?
utilizzando un ciclo for, ad esempio
[Eradicator]
E se volessi fare lo stesso ma col metodo di cui parlavo prima, come
dovrebbe essere la routine do...loop o for...next?
suppongo che il metodo a cui accenni ora sia quello di sapere in che riga
sei all'interno della text box (??)
Sinceramente non riesco a capire neanche quale sia il significato di una
frase del genere: per come la vedo io il fatto che un determinato carattere
sia in una riga piuttosto che in un'altra, è solo il frutto di condizioni
estemporanee, preferisco di gran lunga lavorare con la stringa, piuttosto
della sua rappresentazione grafica all'interno del controllo
[Eradicator]
In ogni caso, mi potresti rispondere alle domande 1, 2, 3 ? Così anche x
imparare cose nuove!
Quali erano le domande 1, 2, 3 ??
Forse queste?
   1)Quante sono le righe totali all'interno della textbox
    2)printer.print text1 riga n1
    3)printer.print text1 ultimariga
Se così è, mi sembra che solo la prima abbia le caratteristiche di una
domanda.... per la quale non so darti una risposta: una proprietà specifica
del controllo non c'è e, come ho detto poco sopra, di solito faccio in modo
di non dovermi preoccupare di questi dettagli.
Sinceramente: il tuo post mi ha lasciato parecchio perplesso.....
Salutoni
Sergio

 Sinceramente: il tuo post mi ha lasciato parecchio perplesso.....
Prova a vederlo alla luce dell'altro post del 20/10...
Un Paperino che usa quella soluzione da anni.

 Prova a vederlo alla luce dell'altro post del 20/10...
Visto in quella luce, in effetti, il risultato è che il nostro postatore non
legge (o non considera) le risposte....
L'impressione generale è che non abbia effettivamente capito neanche lui
quale sia l'ambito del problema che si trova ad affrontare, oltre ad avere
una conoscenza superficiale del linguaggio.
Imho sarà abbastanza difficile aiutarlo....
Salutoni
Sergio

 legge (o non considera) le risposte....
Arrggghhh, mi ero fatto una routine all'uopo.
Ora come faccio a postarla? Mi menereste. :-(

 Ora come faccio a postarla? Mi menereste. :-(
Posta pure, a qualcun altro servirà.....
Magari anche eradicator (che ha un nick che trovo irritante, ma non è colpa
sua se io mi irrito...) riuscirà un giorno ad imparare qualcosa...
Salutoni
Sergio

 sua se io mi irrito...) riuscirà un giorno ad imparare qualcosa...
Ok (SE&O), la responsabilità è tua. ;-)
'------------------------
'Creare sul form
'   un textbox multilinea con nome Text1
'   un CommandButton con nome Command1
'   un ListBox (Sorted=False) con nome List1
Private Sub Command1_Click()
    Dim n As Long
    List1.Clear
    Call STATISTICHE_STRINGA(Text1.Text, risultati)
    'Call STATISTICHE_STRINGA(Text1.Text, risultati, 2 ^ 0)  'Per non
restituire le singole righe
    For n = 0 To UBound(risultati)
        List1.AddItem n & " = " & risultati(n)
    Next n
    List1.Visible = 1
End Sub
Sub STATISTICHE_STRINGA(stringa As String, risultati, Optional parametri =
0)
'   Restituisce nel vettore risultati:
'   0       Numero dei caratteri della stringa (compresi vbCrLf)
'   1       Numero delle righe (ogni vbCrLf indica una riga)
'   2       Numero della riga piu' lunga
'               (a parita' di caratteri la prima incontrata)
'   3       Numero dei caratteri della riga piu' lunga
'   4       Numero della riga piu' corta
'               (a parita' di caratteri la prima incontrata)
'   5       Numero dei caratteri della riga piu' corta
'   6       Numero della riga piu' corta non vuota
'               (a parita' di caratteri la prima incontrata)
'   7       Numero dei caratteri della riga piu' corta non vuota
'   8       * Non usato * (0)
'   9       * Non usato * (0)
'   10      * Non usato * (0)
'   11-n    Se (parametri and 2^0)=0, tanti elementi da 10 a 10+risultati(1)
'           (quindi uno per ogni riga) che riporta la riga ennesima (in 11
la numero 1)
'   parametri   2^0     Non restituisce le informazioni sulle righe
    Dim n_riga As Long
    Dim partenza As Long
'       Prepara vettore risultati e azzera risultati
    ReDim risultati(0 To 10) As Variant
    For n_riga = 0 To 10
        risultati(n_riga) = 0
    Next n_riga
    risultati(5) = 10 ^ 10
    risultati(7) = 10 ^ 10
    risultati(0) = Len(stringa)
'       Conta le righe e, se richiesto, le deposita
'       Conteggia anche altre statistiche
    n_riga = 0
    partenza = 1
    Do
        If partenza > Len(stringa) Then Exit Do
        n_riga = n_riga + 1
        fine_riga = InStr(partenza, stringa, vbCrLf)
        If fine_riga = 0 Then fine_riga = Len(stringa) + 1
        riga = Mid(stringa, partenza, fine_riga - partenza)
        If Len(riga) > risultati(3) Then
            risultati(2) = n_riga
            risultati(3) = Len(riga)
        End If
        If Len(riga) < risultati(5) Then
            risultati(4) = n_riga
            risultati(5) = Len(riga)
        End If
        If Len(riga) Then
            If Len(riga) < risultati(7) Then
                risultati(6) = n_riga
                risultati(7) = Len(riga)
            End If
        End If
        If (parametri And 2 ^ 0) = 0 Then
            ReDim Preserve risultati(0 To 10 + n_riga)
            risultati(10 + n_riga) = riga
        End If
        partenza = fine_riga + 2    '2=Len(vbCrLf)
    Loop
    risultati(1) = n_riga
    If risultati(5) = 10 ^ 10 Then risultati(5) = 0
    If risultati(7) = 10 ^ 10 Then risultati(7) = 0
End Sub
Private Sub Form_Load()
    Text1.Text = ""
    Command1.Caption = "&Statistiche"
    Call adatta
End Sub
Private Sub Text1_Change()
    Call adatta
End Sub
Sub adatta()
    List1.Visible = 0
    Command1.Enabled = IIf(Text1 = "", 0, 1)
End Sub

Grazie a tutti! Sia x i commenti che x i suggerimenti!
Di programmazione in Vb me ne intendo anche se poco e sono moltissime le
cose che non conosco!
Comunque il fatto č che avevo bisogno di un modo semplice (x venire in
contro alle mie conoscenze e veloce x fare ciň che mi interessava)!