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

    [VB 2010] Rich Text Box farmattare delle linee

    Salve a tutti,
    Il programma che sto scrivendo è una specie di agenda. Deve leggere gli appuntamenti da un file e scrverli in amera ordinata in una Rich text box.
    I vari appuntamenti sono contenuti in un array Appuntamento() che fa riferimento ad un classe da me creata. (si dice così? in pratica Appuntamento(i)= new clsAppuntamenti)
    Ogni elemento ha 4 proprietà: scadenza (data), creazione (data), titolo (stringa) e testo (stringa). Nel mio problema però compaiono solo scadenza e titolo.
    Codice della classe clsAppuntamenti:
    codice:
    Public mdatScadenza As Date
    Public mstrTitolo As String
    
    Property Scadenza() As Date
    	Get
    		Return mdatScadenza
    	End Get
    	Set(value As Date)
    		mdatScadenza = value
    	End Set
    End Property
    
    Property Titolo() As String
    	Get
    		Return mstrTitolo
    	End Get
    	Set(value As String)
    		mstrTitolo = value
    	End Set
    End Property
    Ora io vorrei che per ogni appuntamento nell'array Appuntamento() il programma scrivesse nella rich text box (chiamata rboxElencoTotale)

    data
    titolo

    con queste condizioni:
    se l'appuntamento è oggi --> carattere grassetto rosso
    se l'appuntamento è nei prossimi 5 giorni --> carattere rosso-arancio normale
    altrimenti --> carattere nero normale

    Ho fatto varie ricerche su internet e anche nel forum e mi è parso di capire che la procedura per colorare un testo sia:

    seleziona il testo (rboxElencoTotale.SelectionStart = ...
    rboxElencoTotale.SelectionLength = ...)
    formatta il testo (rboxElencoTotale.SelectionColor = ...
    rboxElencoTotale.SelectionFont = ...)

    questo è il codice che ho scritto:
    codice:
    Appuntamento(0).Scadenza = CDate("27/7/2013")
    Appuntamento(0).Titolo = "Iscrizioni al Meeting"
    Appuntamento(1).Scadenza = CDate("30/7/2013")
    Appuntamento(1).Titolo = "Merenda insieme"
    Appuntamento(2).Scadenza = CDate("1/8/2013")
    Appuntamento(2).Titolo = "Gita Cornetto"
    Dim fntOggi As Font = New Font("Microsoft Sans Serif", 8, FontStyle.Bold)
    Dim fnt5Giorni As Font = New Font("Microsoft Sans Serif", 8, FontStyle.Regular)
    Dim fntStandard As Font = New Font("Microsoft Sans Serif", 8, FontStyle.Regular)
    For i = 0 To UBound(Appuntamento)
    	rboxElencoTotale.Text = rboxElencoTotale.Text & CStr(Appuntamento(i).Scadenza) & vbNewLine _
    		& "    " & Appuntamento(i).Titolo & vbNewLine & vbNewLine
    	rboxElencoTotale.SelectionStart = rboxElencoTotale.Find(CStr(Appuntamento(i).Scadenza))
    	rboxElencoTotale.SelectionLength = CStr(Appuntamento(i).Scadenza).Length
    	If Appuntamento(i).Scadenza = Now.Date Then
    		rboxElencoTotale.SelectionColor = Color.Red
    		rboxElencoTotale.SelectionFont = fntOggi
    	ElseIf DateDiff(DateInterval.Day, Now.Date, Appuntamento(i).Scadenza) < 5 Then
    		rboxElencoTotale.SelectionColor = Color.OrangeRed
    		rboxElencoTotale.SelectionFont = fnt5Giorni
    	Else
    		rboxElencoTotale.SelectionColor = Color.Black
    		rboxElencoTotale.SelectionFont = fntStandard
    	End If
    	rboxElencoTotale.SelectionStart = rboxElencoTotale.Find(Appuntamento(i).Titolo)
    	rboxElencoTotale.SelectionLength = Appuntamento(i).Titolo.Length
    	If Appuntamento(i).Scadenza = Now.Date Then
    		rboxElencoTotale.SelectionColor = Color.Red
    		rboxElencoTotale.SelectionFont = fntOggi
    	ElseIf DateDiff(DateInterval.Day, Now.Date, Appuntamento(i).Scadenza) < 5 Then
    		rboxElencoTotale.SelectionColor = Color.OrangeRed
    		rboxElencoTotale.SelectionFont = fnt5Giorni
    	Else
    		rboxElencoTotale.SelectionColor = Color.Black
    		rboxElencoTotale.SelectionFont = fntStandard
    	End If
    Next i
    Ma quello che vedete in allegato è il deludente risultato.non riesco a capire perché non funzioni, anche perché se faccio il debug man mano seleziona i testi giusti e entra negli if giusti, ma il risultato è comunque sbagliato.
    Inoltre se cambio le date i risultati sono dei più vari (una riga arancio, una rossa e una nera, due arancio una rossa e una nera etc.)
    Qualcuno può aiutarmi? è da giorni che tento di risolverlo!
    Se qualcuno ha bisogno di chiarimenti chiedete pure
    Immagini allegate Immagini allegate

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 © 2026 vBulletin Solutions, Inc. All rights reserved.