Newsgroup: it.comp.lang.visual-basic
Titolo: STAMPA CONTENUTO TEXTBOX DI 500 CARATTERI

Chiedo aiuto ai più bravi in VB6, io sono appena all'inizio.
Ho esigenza di stampare il contenuto di una textbox contenente un massimo di 
500 caratteri.
Ovviamente con i comuni comandi di Printer.print (i soli a me noti) e 
suddividendo la stringa in gruppi di 80 caratteri a riga, è impossibile (per 
me) fare in modo che la stampa sia giustificata a sinistra ed a destra, non 
tanto l'allineamento a destra, ma affinchè non siano tagliati i vocaboli in 
maniera non sillabica, come accada invece con il sistema da me utilizzato.
E' possibile raggiungere l'obbiettivo almeno di evitare il taglio a caso dei 
vocaboli ? e come fare ?
Se poi riuscissi nell'intento di ottenere anche la giustificazione a destra 
sarebbe il massimo.
Grazie sin da ora.
giap

 vocaboli ? e come fare ?
non sono sicuro sia esattamente cio` che cerchi, ma potrebbe essere
di aiuto:
http://www.it-lang-vb.net/archivio.asp?subMenu=Tutte&FullText=on&TypeRic=AND&keyword=testo+giustificato&x=0&y=0
breve: 
http://tinyurl.com/mqcme
-- 
ciao, hal

 destra sarebbe il massimo.
Prova anche a vedere l'esempio WordWrap.zip che trovi qui:
http://www.softcircuits.com/sw_vbsrc.htm
Ciao
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

 vocaboli ? e come fare ?
Io ho scritto questa sub, non è testata al 100% ma non mi ha dato problemi
per quello che dovevo fare.
In pratica ti ritorna un vettore di n elementi tanti quante sono le righe.
Public Sub SpezzaStringa(Desc As String, VetDesc() As String, Optional nCar
As Integer)
'entro con una descrizione desc
'se passo ncar spezzo ogni Ncaratteri (sugli spazi),
'e spezzo anche i ritorni a capo
Dim VetAppo() As String
Dim cc As Integer
Dim VetSpazi() As String
Dim appo As String
Erase VetAppo
Erase VetDesc
ReDim Preserve VetDesc(0)
If Desc = "" Then Exit Sub
Debug.Print Desc
If nCar <= 0 Then nCar = 35
VetAppo() = Split(Desc, vbNewLine) 'spezzo al ritorno a capo
cc = 0
For i = LBound(VetAppo) To UBound(VetAppo)
  Erase VetSpazi
  VetSpazi() = Split(Trim(VetAppo(i)), " ") 'spezzo gli spazi
  appo = ""
  For j = LBound(VetSpazi) To UBound(VetSpazi)
    If Len(appo) + Len(VetSpazi(j)) < nCar Then
      appo = appo & VetSpazi(j) & " "
    Else
      If Trim(appo) <> "" Then
        ReDim Preserve VetDesc(cc)
        VetDesc(cc) = Left(Trim(appo), nCar) 'faccio left nel caso di
parola molto lunga la taglio
        cc = cc + 1
        appo = VetSpazi(j)
      End If
    End If
  Next j
 
  If Trim(appo) <> "" Then
    ReDim Preserve VetDesc(cc)
    VetDesc(cc) = Left(Trim(appo), nCar)
    cc = cc + 1
  End If
Next
For i = LBound(VetDesc) To UBound(VetDesc)
  Debug.Print VetDesc(i)
Next i
End Sub

 ha scritto nel messaggio 
news:dtvvhj$km$1...@area.cu.mi.it...


Ringrazio il sig. Andrea e proverò ad attuare il suo suggerimento. Poichè 
per me è abbastanza complicata devo prima provare a studiarla bene per 
comprenderne il senso e quindi proverò ad attuarla.
Non sarà facile ma ci proverò.
Le altre due soluzioni che ho scaricato e provato, purtroppo non fanno al 
caso mio.
Grazia ancora
giap
"Andrea" <nos...@invalid.invalid> ha scritto nel messaggio 
news:bbjp3dqmm7uh.1w9fv8sj5uylr$.dlg@40tude.net...


 Non sarà facile ma ci proverò.
Ti basta fare copia/incolla in un modulo e poi nel programma provi con:
Poi provi ad aprire il file c:\stampa.txt e vedere quello che ha fatto
Dim VetDesc() As String
dim Desc as string
FilePath = "C:\STAMPA.TXT"
ff = FreeFile
Open FilePath For Output As #ff
Desc$ = txttua.text
'spezzo la stringa
Call SpezzaStringa(Desc, VetDesc(), 35)
For i = 0 To UBound(VetDesc)
  Print #ff,  VetDesc(i)
next i
Close #ff

Caro Andrea,
credo mi posso permettere di rivolgermi così a te dall'alto (si fa per dire) 
dei miei settantatre anni.
Sei stato molto gentile nel riprendere il discorso sul mio problema e dopo 
attento studio, ne ho capito qualcosa in più e sono così pervenuto alla 
stampa come mi avevi suggerito. Io da solo non ne sarei venuto mai a capo.
Sono riuscito a vedere il file stampa.txt, sono riuscito a stampare anche 
con printer.print il file VetDesc(i), ma c'è un qualche problema che non 
riesco a comprendere.
Allora sperando che tu mi legga preciso come ho proceduto:
ho predisposto una textbox con larghezza di 60 caratteri avendo modificato i 
tuoi 35. Ho usato il carattere Lucide Console che occupa gli stessi spazi 
per qualsiasi carattere di stampa per evitare possibili problemi.
Posso dirti di certo che non taglia alcun vocabolo contenuto nella textbox, 
ma stranamente fatta eccezione per la prima riga, tutte le altre cominciano 
con due vocaboli attaccati senza lo spazio di divisone tra loro ?
Cosa ho sbagliato ?
Ti ringrazio ancora.
giap
"Andrea" <nos...@invalid.invalid> ha scritto nel messaggio 
news:15nqewmgoetjb$.ibxly3g7hnrv$.dlg@40tude.net...


 Cosa ho sbagliato ?
Può essere un bug della routine, come ti ho detto non l'ho testata bene, a
livello di debug ti appaiono per bene?
Effettivamente pure a me da lo stesso problema e non me n'ero accorto,
forse l'ho modificata di recente tralasciando qualcosa.
Vedo di ricontrollarla e farti sapere qui

         appo = VetSpazi(j)
L'ultima riga deve essere
appo = VetSpazi(j) & " "
Comunque ti ripeto che non l'ho testata bene, e potrebbe contenere grossi
problemi, se riesci a trovare qualcosa di fatto meglio te lo consiglio,
altrimenti grossi problemi non me li ha mai dati

Caro Andrea
ti ringrazio ancora sei di una cortesia non comune. Leggo in giro in questo 
group tante risposte diciamo poco carine e per la maggior parte proprio nei 
confronti dei più sprovveduti per cui pensavo di ricevere risposte di quel 
genere anche io ed invece ho trovato una persona seria che si è preoccupata 
di aiutarmi in tutti i modi senza averne alcun obbligo ma solo per il 
piacere di essere utile a chi ne sa di meno.
Ed anche e solo per questo ti ringrazio ancora. Proverò la soluzione che mi 
suggerisci, sperando di riuscire a comprendere le modifiche da attuare.
Grazie e cordialissimi saluti.
giap
giu...@tin.it
"Andrea" <nos...@invalid.invalid> ha scritto nel messaggio 
news:1xw7gxyf3c3hf$.jz9n7fajpo7u$.dlg@40tude.net...


 Grazie e cordialissimi saluti.
Figurati, č stato un caso che mi fosse servita quella routine una settimana
prima e l'avessi buttata giů. 
Se l'altra non l'hai personalizzata con cose tue basta che la sostituisci
con questa se hai problemi a capire dove aggiungere & " "
Ciao!


Debug.Print Desc


      If Trim(appo) <> "" Then
        ReDim Preserve VetDesc(cc)
        VetDesc(cc) = Left(Trim(appo), nCar) 'faccio left nel caso di
parola molto lunga la taglio
        cc = cc + 1
        appo = VetSpazi(j) & " "
      End If
    End If
  Next j
 
  If Trim(appo) <> "" Then
    ReDim Preserve VetDesc(cc)
    VetDesc(cc) = Left(Trim(appo), nCar)
    cc = cc + 1


 prima e l'avessi buttata giù.


 ha scritto nel messaggio 
news:44084f98$0$29729$4faf...@reader2.news.tin.it...
