+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: TreeView incolonnato

  1. #1
    giunespo non è in linea Novello
    Post
    30

    TreeView incolonnato

    Buongiorno (buonasera) a tutti.
    I nodi della mia treeview sono costituiti da una stringa data dall'unione di più colonne lette da una tabella dati.
    Per questioni estetiche mi piacerebbe che i vari campi risultassero incolonnati correttamente, ma ovviamente stringhe diverse (pur con la stessa lunghezza) occupano spazio diverso a seconda delle lettere contenute nella stringa stessa.

    Non avendo trovato nulla in rete ipotizzo che non sia realizzabile, ma probabilmente qualcuno ha già avuto questa esigenza e mi può confermare o meno il tutto.

    Di seguito posto la parte di codice che si occupa dell'aggiornamento (quindi anche del popolamento) della treeview:

    codice:
       Private Sub AggiornaElencoLavori()
            NonEseguireEventi = True
            ElencoC.Nodes.Clear()
            Dim sql As String
            ElencoLavori.Clear()
            If connessione.State <> ConnectionState.Open Then
                connessione.Open()
            End If
            sql = "select * from commesse ORDER BY [consegna],[materiale],[cliente] "
            Adattatore = New OleDbDataAdapter(sql, connessione)
            Adattatore.Fill(ElencoLavori, "commesse")
            connessione.Close()
            Dim numerorighe As Integer
            Dim giornodellasettimana, dataattuale, stringa, stringa2 As String
            Dim nodoprincipale, totalesottonodi As Integer
            numerorighe = ElencoLavori.Tables("commesse").Rows.Count
            dataattuale = "01/01/2001"
            Dim caratterenormale As Font
            caratterenormale = ElencoC.Font
            Dim caratteregrassetto As New Font(caratterenormale, FontStyle.Bold)
            nodoprincipale = 0
            Dim datapergiorno As Date
            Dim lunghezza As Integer
            For i = 0 To numerorighe - 1
                If dataattuale <> ElencoLavori.Tables("commesse").Rows(i).Item("consegna") Then
                    dataattuale = ElencoLavori.Tables("commesse").Rows(i).Item("consegna")
                    datapergiorno = ElencoLavori.Tables("commesse").Rows(i).Item("consegna")
                    Select Case datapergiorno.DayOfWeek
                        Case 1
                            giornodellasettimana = "Lunedì"
                        Case 2
                            giornodellasettimana = "Martedì"
                        Case 3
                            giornodellasettimana = "Mercoledì"
                        Case 4
                            giornodellasettimana = "Giovedì"
                        Case 5
                            giornodellasettimana = "Venerdì"
                        Case 6
                            giornodellasettimana = "Sabato"
                        Case 7
                            giornodellasettimana = "Domenica"
                    End Select
    
                    ElencoC.Nodes.Add(giornodellasettimana & " " & dataattuale & "              ")
                    ElencoC.Nodes(nodoprincipale).NodeFont = caratteregrassetto
                    nodoprincipale = nodoprincipale + 1
                    totalesottonodi = 0
                    ElencoC.Nodes(nodoprincipale - 1).Tag = nodoprincipale * -1
                End If
                stringa = ElencoLavori.Tables("commesse").Rows(i).Item("nomemateriale")
                lunghezza = 40 - Len(stringa)
                For k = 0 To lunghezza
                    stringa = stringa & " "
                Next k
                stringa2 = ElencoLavori.Tables("commesse").Rows(i).Item("nomecliente")
                lunghezza = 40 - Len(stringa2)
                For k = 0 To lunghezza
                    stringa2 = stringa2 & " "
                Next k
                stringa = stringa & stringa2
                stringa2 = ElencoLavori.Tables("commesse").Rows(i).Item("telefono")
                lunghezza = 30 - Len(stringa2)
                For k = 0 To lunghezza
                    stringa2 = stringa2 & " "
                Next k
                stringa = stringa & stringa2
                If ElencoLavori.Tables("commesse").Rows(i).Item("inuso") Then
                    stringa = stringa & "   *** " & ElencoLavori.Tables("commesse").Rows(i).Item("dachi")
                End If
                ElencoC.Nodes(nodoprincipale - 1).Nodes.Add(stringa)
                ElencoC.Nodes(nodoprincipale - 1).Nodes(totalesottonodi).NodeFont = caratterenormale
                totalesottonodi = totalesottonodi + 1
                ElencoC.Nodes(nodoprincipale - 1).Nodes(totalesottonodi - 1).Tag = i
            Next i
            ElencoC.ExpandAll()
            NonEseguireEventi = False
        End Sub
    Inutile dire che il risultato non è perfettamente incolonnato, la lettura è sufficiente ma il risultato estetico non è il massimo

    Se qualcuno mi può dare una speranza (aiuto) gli sarei grato
    Per ora grazie

  2. #2
    patel45 non è in linea Scolaretto
    Post
    234
    hai provato ad utilizzare un Font a larghezza costante ? potresti allegare una immagine di esempio ?

  3. #3
    giunespo non è in linea Novello
    Post
    30
    Sai che stupidamente non ci avevo nemmeno pensato.
    Effettivamente funziona tutto correttamente, grazie e scusate se vi ho fatto perder tempo per una cavolata simile.

    Buona giornata (e buon lavoro) a tutti

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi