Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Giustifica Testo RichTextBox

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A parte la sezione sbagliata del forum, hai un problema con questo codice?

    Forse non hai letto il Regolamento di questo forum ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciao,
    forse ho fatto un po di confusione...
    sono nuovo del forum.
    Volevo aiutare un utente che aveva un problema simile.

    ...cmq leggerò il regolamento sperando di nn commettere più errori...

    a presto

  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da LoopInfinito
    ...cmq leggerò il regolamento...
    Strano che tu non l'abbia già fatto.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da LoopInfinito
    Ciao,
    forse ho fatto un po di confusione...
    sono nuovo del forum.
    Volevo aiutare un utente che aveva un problema simile.
    Infatti, non ho capito se questa doveva essere la risposta ad un problema postato da un altro utente (nel qual caso, bisognava entrare nella discussione e cliccare "Rispondi") oppure se voleva essere una sorta di "pillola" sulla base di un lavoro svolto e che volevi condividere.

    Tengo buona questa seconda ipotesi, correggo il posting del codice (vedi l'uso dei tag CODE nel regolamento interno), aggiungo il linguaggio nel titolo e sposto la discussione nel forum corretto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    ho trovato un piccolo errore:

    sostituire questa riga:
    codice:
     ultimoSpazio = subLinea(j).LastIndexOf(" ", 44) + 1
    con questa:
    codice:
    ultimoSpazio = subLinea(j).LastIndexOf(" ", xLen) + 1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.