allora... provo a spiegarmi così...
57736703LkQ.jpg
Per capirci...
Questa è il form principale
c'è una textbox dove si inserisce il nome di un candidato al colloquio
c'è alla destra c'è una combobox per stabilire le ore di partenza del colloquio (da 1 a 4)
c'è un ovalschape (pallino rosso) che è il pulsante di avvio del colloquio.
Da notare sotto la label indicante i 3600 secondi ancora da avviare.
Andando nella vista codice, il tutto è comandato dall'evento click sull'ovalshape.
nelle dichiarazioni delle variabili troviamo questi parametri... oltre ad altri che servono ad altro...
Evento click sul pallinocodice:Public Class FormColloqui Dim HH As Integer Dim LineaNumero As Integer Dim LineaPerPagina As Integer Dim I_Avvio As Integer Dim I_Conta As Integer Dim Records As String = My.Computer.FileSystem.CurrentDirectory + "\Dati\Colloqui-del-" & Format(Now, "dd-MM-yyyy") & ".dat" Dim Backup As String = ("C:\Dati_Colloqui_Backup") + "\Colloqui-del-" & Format(Now, "dd-MM-yyyy") & ".dat" Dim Durata As Integer = 3600 Dim t1 As Integer = 3600 't1 corrisponde a 1 ora Dim t2 As Integer = 7200 't2 corrisponde a 2 ore Dim t3 As Integer = 10800 't3 corrisponde a 3 ore Dim t4 As Integer = 14400 't4 corrisponde a 4 ore Public contatore As Integer = 0
Impostazione della Label del timer, cambia la label in base a quante ore l'utente dichiara di fare.codice:Private Sub OSSala1Posto1_Click(sender As System.Object, e As System.EventArgs) Handles OSSala1Posto1.Click 'evento click sul pallino ovalshape gestito da un select case 'le casistiche cambiano in base al colore del pallino Select Case OSSala1Posto1.FillColor 'se il pallino è ROSSO Case Color.Red 'verifica che sia inserito un nome nella textbox, in caso contrario If TBSala1Posto1.Text = "" Then 'un messaggio avvisa che non ci sono nomi nella postazione MsgBox("Nessun candidato è nella postazione 1.") 'esce dalla sub Exit Sub End If 'verifica che sia selezionata almeno una delle 4 opzioni di durata del colloquio If CBSala1Posto1.Text = "" Then 'in caso contrario mostra messaggio di assenza ed esce dalla sub MsgBox("Al candidato " & TBSala1Posto1.Text.ToUpper & " Non hai specificato la durata del colloquio.") Exit Sub 'se tutto è ok allora... Else 'colora il pallino di verde OSSala1Posto1.FillColor = Color.Lime 'disabilita la textbox per non modificare o cancellare i dati TBSala1Posto1.Enabled = False 'diabilita la combobox per non modificare o cancellare i dati CBSala1Posto1.Enabled = False 'imposta la label "InizioS1P1" nel formato orario attuale nelle 24 ore. InizioS1P1.Text = Format(Now, "HH:mm") 'avvia il Timer TimerS1P1.Start() End If 'se il pallino è GIALLO Case Color.Yellow 'colora il pallino di ROSSO OSSala1Posto1.FillColor = Color.Red 'resetta lo sfondo della textbox TBSala1Posto1.BackColor = SystemColors.Window 'abilita la textbox TBSala1Posto1.Enabled = True 'abilita la combobox CBSala1Posto1.Enabled = True 'cancella il nominativo nella textbox TBSala1Posto1.Text = "" 'cancella la durata dalla combobox CBSala1Posto1.Text = "" 'resetta la label "inizio" colloquio InizioS1P1.Text = "00.00" 'resetta la laber "fine" colloquio FineS1P1.Text = "00.00" 'se il pallino è VERDE Case Color.Lime 'rinomina la label2 nel FormScelta FormScelta.Label2.Text = "S1P1" 'mostra il Form FormScelta.ShowDialog() 'se il pallino è GRIGIO Case Color.Gray 'Mostra messaggio ed esci dalla sub MsgBox("Questa postazione è disabilitata") Exit Sub End Select End Sub
Gestione del Timer Tickcodice:Public Sub CBSala1Posto1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles CBSala1Posto1.SelectedIndexChanged 'se è selezionato l'item 0, la label sarà rinominata con il t1 che corrisponde a "3600". If CBSala1Posto1.SelectedIndex = "0" Then LBTimerS1P1.Text = t1 End If 'se è selezionato l'item 1, la label sarà rinominata con il t2 che corrisponde a "7200". If CBSala1Posto1.SelectedIndex = "1" Then LBTimerS1P1.Text = t2 End If 'se è selezionato l'item 2, la label sarà rinominata con il t3 che corrisponde a "10800". If CBSala1Posto1.SelectedIndex = "2" Then LBTimerS1P1.Text = t3 End If 'se è selezionato l'item 3, la label sarà rinominata con il t4 che corrisponde a "14400". If CBSala1Posto1.SelectedIndex = "3" Then LBTimerS1P1.Text = t4 End If End Sub
codice:Private Sub TimerS1P1_Tick(sender As System.Object, e As System.EventArgs) Handles TimerS1P1.Tick 'ad ogni 1000 millisecondi, scala il numero della label di "1" LBTimerS1P1.Text -= 1 'quando la label è uguale a "0"... If LBTimerS1P1.Text = 0 Then OSSala1Posto1.FillColor = Color.Yellow TBSala1Posto1.BackColor = Color.Gold TimerS1P1.Stop() FineS1P1.Text = Format(Now, "HH:mm") Notifica.Show() contatore += 1 ListView1.Items.Add(contatore) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(TBSala1Posto1.Text) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add("1") ListView1.Items(ListView1.Items.Count - 1).SubItems.Add("1") ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(CBSala1Posto1.Text) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(InizioS1P1.Text) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(FineS1P1.Text) ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(LBNote.Text) LBNote.Text = "n.n." End If If File.Exists(Records) = False Then Using CreaRecords As New StreamWriter(Records) For CFR = 0 To ListView1.Items.Count - 1 CreaRecords.WriteLine(ListView1.Items(CFR).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(1).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(2).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(3).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(4).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(5).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(6).Text) CreaRecords.WriteLine(ListView1.Items(CFR).SubItems(7).Text) Next CreaRecords.Close() End Using Else Using CreaRecords As New StreamWriter(Records) For CFR2 = 0 To ListView1.Items.Count - 1 CreaRecords.WriteLine(ListView1.Items(CFR2).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(1).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(2).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(3).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(4).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(5).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(6).Text) CreaRecords.WriteLine(ListView1.Items(CFR2).SubItems(7).Text) Next CreaRecords.Close() End Using End If If File.Exists(Backup) = False Then Using CreaBackup As New StreamWriter(Backup) For CFR = 0 To ListView1.Items.Count - 1 CreaBackup.WriteLine(ListView1.Items(CFR).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(1).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(2).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(3).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(4).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(5).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(6).Text) CreaBackup.WriteLine(ListView1.Items(CFR).SubItems(7).Text) Next CreaBackup.Close() End Using Else Using CreaBackup As New StreamWriter(Backup) For CFR2 = 0 To ListView1.Items.Count - 1 CreaBackup.WriteLine(ListView1.Items(CFR2).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(1).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(2).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(3).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(4).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(5).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(6).Text) CreaBackup.WriteLine(ListView1.Items(CFR2).SubItems(7).Text) Next CreaBackup.Close() End Using End If End Sub

Rispondi quotando