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
inserire quanto segue all'interno del modulo "Module1"codice:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click GiustificaTesto(RichTextBox1, 44, fLucida9) End Sub
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

Rispondi quotando


