Const Cartella As String = "C:\Libretto Voti\", XCorso As String = Cartella & "\Voti.ini"
Const Orale As String = "Orale", Scritto As String = "Scritto", Pratico As String = "Pratico"
Const OrMate As String = "Orale_Materia", ScMate As String = "Scritto_Materia", PrMate As String = "Pratico_Materia"
Const NumVoti As String = "Numero_Voti_", Voto As String = "Voto"
Const VotiSc As String = "Voti Scritto", VotiOr As String = "Voti Orale", VotiPr As String = "Voti Pratica"
Private Sub Salva()
ScriviIni XCorso, "Colore", "Sfondo", Me.BackColor
ScriviIni XCorso, "Colore", "Testo", lblMaterie.ForeColor
For i = 0 To 7
NOrale(i) = lsOrale(i).ListCount - 1
NScritto(i) = lsScritto(i).ListCount - 1
NPratico(i) = lsPratico(i).ListCount - 1
ScriviIni XCorso, NumVoti & Orale, lblMateria(i), CStr(NOrale(i))
ScriviIni XCorso, NumVoti & Scritto, lblMateria(i), CStr(NScritto(i))
ScriviIni XCorso, NumVoti & Pratico, lblMateria(i), CStr(NPratico(i))
For j = 0 To lsOrale(i).ListCount - 1
ScriviIni XCorso, VotiOr, lblMateria(i) & Voto & j, lsOrale(i).List(j)
Next j
For j = 0 To lsScritto(i).ListCount - 1
ScriviIni XCorso, VotiSc, lblMateria(i) & Voto & j, lsScritto(i).List(j)
Next j
For j = 0 To lsScritto(i).ListCount - 1
ScriviIni XCorso, VotiPr, lblMateria(i) & Voto & j, lsPratico(i).List(j)
Next j
Next i
End Sub
Private Sub Apri()
Me.BackColor = LeggiIni(XCorso, "Colore", "Sfondo")
Colore = LeggiIni(XCorso, "Colore", "Testo")
ModificaColoreTesto
For i = 0 To 7
NOrale(i) = CDbl(LeggiIni(XCorso, NumVoti & Orale, lblMateria(i)))
NScritto(i) = CDbl(LeggiIni(XCorso, NumVoti & Scritto, lblMateria(i)))
NPratico(i) = CDbl(LeggiIni(XCorso, NumVoti & Pratico, lblMateria(i)))
For j = 0 To NOrale(i)
lsOrale(i).List(j) = LeggiIni(XCorso, VotiOr, lblMateria(i) & Voto & j)
Next j
For j = 0 To NScritto(i)
lsScritto(i).List(j) = LeggiIni(XCorso, VotiSc, lblMateria(i) & Voto & j)
Next j
For j = 0 To NPratico(i)
lsPratico(i).List(j) = LeggiIni(XCorso, VotiPr, lblMateria(i) & Voto & j)
Next j
Next i
End Sub
Private Sub CalcolaMedia()
Dim NOr(7) As Integer, NSc(7) As Integer, NPr(7) As Integer, SommaFrequenze As Integer
Dim Media(7) As Double, MediaTotale As Double
Dim SValori As String
Dim B As Boolean
On Error Resume Next
SommaFrequenze = 0
MediaTotale = 0
For i = 0 To 7
B = False
Media(i) = 0
NOr(i) = lsOrale(i).ListCount - 1
NSc(i) = lsScritto(i).ListCount - 1
NPr(i) = lsPratico(i).ListCount - 1
For k = 0 To NOr(i)
SValori = ""
For j = 1 To Len(lsOrale(i).List(k))
If Mid(lsOrale(i).List(k), j, 1) = "(" Then B = True
If Mid(lsOrale(i).List(k), j + 1, 1) = ")" Then B = False
If B = True Then SValori = SValori & Mid(lsOrale(i).List(k), j + 1, 1)
Next j
Media(i) = Media(i) + CDbl(SValori)
Next k
For k = 0 To NSc(i)
SValori = ""
For j = 1 To Len(lsScritto(i).List(k))
If Mid(lsScritto(i).List(k), j, 1) = "(" Then B = True
If Mid(lsScritto(i).List(k), j + 1, 1) = ")" Then B = False
If B = True Then SValori = SValori & Mid(lsScritto(i).List(k), j + 1, 1)
Next j
Media(i) = Media(i) + CDbl(SValori)
Next k
For k = 0 To NPr(i)
SValori = ""
For j = 1 To Len(lsPratico(i).List(k))
If Mid(lsPratico(i).List(k), j, 1) = "(" Then B = True
If Mid(lsPratico(i).List(k), j + 1, 1) = ")" Then B = False
If B = True Then SValori = SValori & Mid(lsPratico(i).List(k), j + 1, 1)
Next j
Media(i) = Media(i) + CDbl(SValori)
Next k
If Media(i) <> 0 Then
Media(i) = Media(i) / (NOr(i) + NSc(i) + NPr(i) + 3)
lblMediaMateria(i).Caption = Round(Media(i), 2)
End If
If lblMediaMateria(i).Caption <> "" Then SommaFrequenze = SommaFrequenze + 1
MediaTotale = Media(i) + MediaTotale
Next i
If MediaTotale <> 0 Then MediaTotale = MediaTotale / SommaFrequenze
If MediaTotale < 5.5 Then lblMediaTot.ForeColor = vbRed
If MediaTotale >= 5.5 Then lblMediaTot.ForeColor = vbGreen
lblMediaTot.Caption = Round(MediaTotale, 2)
End Sub
Private Sub ModificaColoreTesto()
lblMaterie.ForeColor = Colore
lblMedia.ForeColor = Colore
For i = 0 To 7
lblMateria(i).ForeColor = Colore
If i < 6 Then lblTipoVoto(i).ForeColor = Colore
If i < 2 Then lblInfo(i).ForeColor = Colore
Next i
End Sub
Private Sub cmdOk_Click()
For i = 0 To 7
NOrale(i) = lsOrale(i).ListCount - 1
NScritto(i) = lsScritto(i).ListCount - 1
NPratico(i) = lsPratico(i).ListCount - 1
If txtOrale(i).Text <> "" Then
If IsNumeric(txtOrale(i).Text) = False Then GoTo NoNumOrale
If CDbl(txtOrale(i).Text) > 10 Or CDbl(txtOrale(i).Text) < 1 Then GoTo NonAccettabileOrale
lsOrale(i).AddItem txtDataVoto.Text & " - (" & txtOrale(i).Text & ")"
End If
If txtScritto(i).Text <> "" Then
If IsNumeric(txtScritto(i).Text) = False Then GoTo NoNumScritto
If CDbl(txtScritto(i).Text) > 10 Or CDbl(txtScritto(i).Text) < 1 Then GoTo NonAccettabileScritto
lsScritto(i).AddItem txtDataVoto.Text & " - (" & txtScritto(i).Text & ")"
End If
If txtPratico(i).Text <> "" Then
If IsNumeric(txtPratico(i).Text) = False Then GoTo NoNumPratico
If CDbl(txtPratico(i).Text) > 10 Or CDbl(txtPratico(i).Text) < 1 Then GoTo NonAccettabilePratico
lsPratico(i).AddItem txtDataVoto.Text & " - (" & txtPratico(i).Text & ")"
End If
Next i
cmdRefresh_Click
CalcolaMedia
txtOrale(0).SetFocus
Exit Sub
NoNumOrale:
MsgBox "Scirivere un valore numerico o lasciare vuota la casella di testo", vbCritical, "Errore, tipo non corrispondente"
txtOrale(i).Text = ""
txtOrale(i).SetFocus
Exit Sub
NoNumScritto:
MsgBox "Scirivere un valore numerico o lasciare vuota la casella di testo", vbCritical, "Errore, tipo non corrispondente"
txtScritto(i).Text = ""
txtScritto(i).SetFocus
Exit Sub
NoNumPratico:
MsgBox "Scirivere un valore numerico o lasciare vuota la casella di testo", vbCritical, "Errore, tipo non corrispondente"
txtPratico(i).Text = ""
txtPratico(i).SetFocus
Exit Sub
NonAccettabileOrale:
MsgBox "Inserisci un voto compreso tra 1 e 10", vbExclamation, "Errore valore non accettabile"
txtOrale(i).Text = ""
txtOrale(i).SetFocus
Exit Sub
NonAccettabileScritto:
MsgBox "Inserisci un voto compreso tra 1 e 10", vbExclamation, "Errore valore non accettabile"
txtScritto(i).Text = ""
txtScritto(i).SetFocus
Exit Sub
NonAccettabilePratico:
MsgBox "Inserisci un voto compreso tra 1 e 10", vbExclamation, "Errore valore non accettabile"
txtPratico(i).Text = ""
txtPratico(i).SetFocus
End Sub
Private Sub cmdRefresh_Click()
For i = 0 To 7
txtOrale(i).Text = ""
txtScritto(i).Text = ""
txtPratico(i).Text = ""
Next i
End Sub
Private Sub Form_Load()
On Error Resume Next
MkDir (Cartella)
Apri
CalcolaMedia
CMDialog.Flags = cdlCCFullOpen
txtDataVoto.Text = Date
End Sub
Private Sub Form_Unload(Cancel As Integer)
Salva
End Sub
Private Sub modColSfondo_Click()
CMDialog.ShowColor
Me.BackColor = CMDialog.Color
End Sub
Private Sub modColTxt_Click()
CMDialog.ShowColor
Colore = CMDialog.Color
ModificaColoreTesto
End Sub
Private Sub txtOrale_Change(Index As Integer)
On Error Resume Next
If Mid(txtOrale(Index).Text, txtOrale(Index).SelStart, 1) = "." Then
txtOrale(Index).Text = Mid(txtOrale(Index).Text, 1, Len(txtOrale(Index).Text) - 1) & ","
txtOrale(Index).SelStart = Len(txtOrale(Index).Text)
End If
If Mid(txtOrale(Index).Text, 1, 1) = 0 Then txtOrale(Index).Text = ""
End Sub
Private Sub txtPratico_Change(Index As Integer)
On Error Resume Next
If Mid(txtPratico(Index).Text, txtPratico(Index).SelStart, 1) = "." Then
txtPratico(Index).Text = Mid(txtPratico(Index).Text, 1, Len(txtPratico(Index).Text) - 1) & ","
txtPratico(Index).SelStart = Len(txtPratico(Index).Text)
End If
If Mid(txtPratico(Index).Text, 1, 1) = 0 Then txtPratico(Index).Text = ""
End Sub
Private Sub txtScritto_Change(Index As Integer)
On Error Resume Next
If Mid(txtScritto(Index).Text, txtScritto(Index).SelStart, 1) = "." Then
txtScritto(Index).Text = Mid(txtScritto(Index).Text, 1, Len(txtScritto(Index).Text) - 1) & ","
txtScritto(Index).SelStart = Len(txtScritto(Index).Text)
End If
If Mid(txtScritto(Index).Text, 1, 1) = 0 Then txtScritto(Index).Text = ""
End Sub