Ciao a tutti vi posto questo codice appena sfornato...
E' utile per giustificare il testo in una RichTextBox
Io personalmente uso vb net ma credo si possa adattare bene a tutte le esigenze
creare un nuovo progetto con un form chiamato "Form1" e con un modulo chiamato "Module1"
inserire all'interno del form un RichTextBox chiamato "RichTextBox1"
nelle proprietà del RichTextBox1 impostare la proprietà multiline a "true"
inserire all'interno del form un pulsante chiamato "Button1"
creare questo evento Click
nell'esempio ho impostato a 44 la lunghezza della riga ma si puo impostare una lunghezza qualunque
fate partire il progetto e scrivete o incollate un testo sufficientemente lungo
premete il pulsante e guardate il risultato
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GiustificaTesto(RichTextBox1, 44, fLucida9)
End Sub
inserire quanto segue all'interno del modulo "Module1"
codice:
'dichiarazioni
Public fLucida9 As New Font("Lucida Sans Typewriter", 9)
'funzione
Public Function GiustificaTesto(ByVal xText As RichTextBox, ByVal xLen As Integer, ByVal xFont As Font)
On Error GoTo GestErr
xText.Font = xFont
Dim lineaTotale(9999) As String
Dim subLinea(9999) As String
Dim diffLinea As String
Dim i As Integer = 0
Dim j As Integer = 0
Dim ultimoSpazio As Integer = 0
Dim Spazio As Integer = 1
Dim SpazioAdd As Integer = 0
Dim nuovaPartenza As Integer = 1
For i = 0 To xText.Lines.LongLength - 1
'ottengo la linea da rtb
lineaTotale(i) = xText.Lines(i)
diffLinea = xText.Lines(i)
Do Until Len(diffLinea) <= xLen
subLinea(j) = Mid(lineaTotale(i), nuovaPartenza, xLen)
ultimoSpazio = subLinea(j).LastIndexOf(" ", 44) + 1
If ultimoSpazio < 1 Then ultimoSpazio = xLen
diffLinea = Trim(Mid(lineaTotale(i), nuovaPartenza + ultimoSpazio - 1))
subLinea(j) = Trim(Mid(subLinea(j), 1, ultimoSpazio))
Do Until Len(Trim(subLinea(j))) >= xLen
If Spazio >= Len(subLinea(j)) Then
Spazio = 1
SpazioAdd = SpazioAdd + 1
End If
If InStr(subLinea(j), " ") = 0 Then subLinea(j) = subLinea(j) & " -"
If Mid(subLinea(j), Spazio, 1) = " " Then
subLinea(j) = Mid(subLinea(j), 1, Spazio + SpazioAdd) & " " & Trim(Mid(subLinea(j), Spazio + SpazioAdd +
1))
Spazio = Spazio + 2 + SpazioAdd
Else
Spazio = Spazio + 1
End If
Loop
nuovaPartenza = nuovaPartenza + ultimoSpazio - 1
ultimoSpazio = 0
Spazio = 1
SpazioAdd = 0
j = j + 1
Loop
If Len(Trim(diffLinea)) > 0 Then
subLinea(j) = Trim(diffLinea)
j = j + 1
End If
nuovaPartenza = 1
Next
Dim xLineResult(j) As String
Dim h As Integer = 0
For h = 0 To j
xLineResult(h) = subLinea(h)
Next
xText.Lines = xLineResult
GiustificaTesto = xText.Lines
Exit Function
GestErr:
GiustificaTesto = xText.Lines
End Function