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:
Ora io vorrei che per ogni appuntamento nell'array Appuntamento() il programma scrivesse nella rich text box (chiamata rboxElencoTotale)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
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:
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.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
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

Rispondi quotando