Novità

Mente da programmatore

per la riapertura e la selezione del file fai una form apposita , anzi una function simile a SelezionaNumeri.
Tu a questa function passi un percorso e un estensione , quella ti apre un form con una lista e 2 pulsanti ok /annulla.
Nella lista carica i file nel percorso che gli hai specificato.
Alla pressione di ok questa funzione torna il percorso del file selezionato.
La potrmo usare anche se servià ancora.
In questa lista fai vedere il nome dele file , il percorso completo lo scrivi nel tag dell'item
se alla pressione di ok un item è selezionato ti prend il tag di quell'item.
 
metti una gestione degli errori in salva file perche se l'utente inserisce caratteri non validi nel nome darà errore.
Per esempio se nel nome mette uno slash non sarebbe valido per nome file... e cosi anche altri caratteri che potrebbero far scatenare l'eccezione.
 
dato che è necessario poter editare la formazione un pezzetto l'ho scritto io abbiamo modificato il form FrmSelNumeri in modo che possa essere adatto a selezionare anche ruote , sorte e posizioni pertanto te lo posto , sostituiscilo al tuo


poi aggiungi questa sub nel modulo assistente

Codice:
 Function SelezionaNumeriRuoteESorte(ByRef sRetNumeri As String, ByRef sRetRuote As String, ByRef sRetSorte As String, ByRef sRetPos As String) As Integer
        Dim frm As New FrmSelNumeri
        Dim aRuote() As Boolean = Nothing
        Dim aPos() As Boolean = Nothing
        frm.ImpostaModalitaNumeriRuoteESelezione()

        If sRetNumeri.Trim <> "" Then
            Dim aRetNumeri() As Integer = Nothing
            GetArrayNumeriFromString(sRetNumeri, aRetNumeri)
            For k = 1 To aRetNumeri.GetUpperBound(0)
                frm.CtlSelezionaNumeri1.SetValue(aRetNumeri(k), True)
            Next
        End If

        If sRetRuote <> "" Then

            aRuote = StringaRuoteToBool(sRetRuote, ".")
            frm.CltSelRuote1.SetCheckSelezionate(aRuote)
        End If
        If sRetSorte <> "" Then
            Call SelezionaItemCombo(frm.cmbSorte, sRetSorte)
        End If
        If sRetPos <> "" Then

            StringaNumeriToArray(sRetPos, aPos, 5)
            frm.CtlSelPosizione1.SetCheckSelezionate(aPos)
        End If
        frm.ShowDialog()
        If frm.Tag = "Ok" Then

            sRetNumeri = frm.CtlSelezionaNumeri1.GetStringaNumeri()
            frm.CltSelRuote1.GetCheckSelezionate(aRuote)
            sRetRuote = RuoteBToString(aRuote)
            sRetSorte = frm.cmbSorte.Text
            frm.CtlSelPosizione1.GetCheckSelezionate(aPos)
            sRetPos = ArrayNumeriToString(aPos)
            If sRetNumeri <> "" AndAlso sRetRuote <> "" AndAlso sRetSorte <> "" AndAlso sRetPos <> "" Then

                SelezionaNumeriRuoteESorte = frm.CtlSelezionaNumeri1.QNumeriSelezionati
                frm.Close()
                frm.Dispose()
            Else
                MessageBox.Show("Dati mancanti", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If


        Else
            SelezionaNumeriRuoteESorte = 0
            frm.Close()
            frm.Dispose()
        End If

    End Function

poi all'evento doubleclick della prima lista metti questo

Codice:
  Private Sub CtlLvOrdinabile1_DoubleClick(sender As Object, e As EventArgs) Handles CtlLvOrdinabile1.DoubleClick
        If CtlLvOrdinabile1.SelectedItems.Count Then
            Dim itmSel As ListViewItem = CtlLvOrdinabile1.SelectedItems(0)
            Dim sNumeri As String = itmSel.Text
            Dim sRuote As String = itmSel.SubItems(1).Text
            Dim sSorte As String = itmSel.SubItems(2).Text
            Dim sPos As String = itmSel.SubItems(10).Text

            If SelezionaNumeriRuoteESorte(sNumeri, sRuote, sSorte, sPos) Then
                itmSel.Text = sNumeri
                itmSel.SubItems(1).Text = sRuote
                itmSel.SubItems(2).Text = sSorte
                itmSel.SubItems(10).Text = sPos

                ' call aggiornaStatistica ( itmsel) questa la devi implementare tu deve aggiornare la statistica di questo item con i nuovi parametri

            End If

        End If
    End Sub


noterai che devi scrivere tu la funzione aggiornastatistica
 
Gestione errore caratteri non consentiti fatta
Codice:
    Private Sub ButtonSalva_Click(sender As Object, e As EventArgs) Handles ButtonSalva.Click
        Dim NameFile As String
        CreaFolderFileDefault(GetDirFormazioni)
        If LvLunghette.Items.Count > 0 Then
            If MessageBox.Show("Desideri salvare le formazioni?", "Salvataggio", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes Then
                NameFile = InputBox("Indicare nome del file", "Formazioni")
                If VerificaCaratteriNonConsentiti(NameFile) = True Then
                    SalvaFormazioni(LvLunghette, GetDirFormazioni() & NameFile & ".csv")
                Else
                    MessageBox.Show("Si prega di non inserire caratteri speciali come ~ # % & : < > ? \ / { } |", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            End If
        Else
            MessageBox.Show("Nessuna formazione da salvare presente", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub
    Private Function SalvaFormazioni(LvOrd As ctlLvOrdinabile, DirFile As String)
        Dim SB As New StringBuilder
        Dim i As Integer
        Dim strmW As New StreamWriter(DirFile)
        For Each itm In LvOrd.Items
            i = 0
            SB.Clear()
            For Each ch As ColumnHeader In LvOrd.Columns
                i += 1
                SB.Append(itm.subitems(i - 1).text)
                SB.Append(";")
            Next
            strmW.WriteLine(SB.Remove(SB.Length - 1, 1))
        Next
        strmW.Close()
    End Function
    Function VerificaCaratteriNonConsentiti(sDaVerificare As String) As Boolean
        Dim CaratteriNonConsentiti() As String = {"~", "#", "%", "&", ":", "<", ">", "?", "\", "/", "{", "}", "|"}
        For k As Integer = 0 To sDaVerificare.Length - 1
            For y As Integer = 0 To UBound(CaratteriNonConsentiti)
                If sDaVerificare(k) = CaratteriNonConsentiti(y) Then
                    Return False
                End If
            Next
        Next
    End Function

Fatta anche la sub "aggiornastatistica"

Codice:
    Private Sub LvLunghette_DoubleClick(sender As Object, e As EventArgs) Handles LvLunghette.DoubleClick
        If LvLunghette.SelectedItems.Count Then
            Dim itmSel As ListViewItem = LvLunghette.SelectedItems(0)
            Dim sNumeri As String = itmSel.Text
            Dim sRuote As String = itmSel.SubItems(1).Text
            Dim sSorte As String = itmSel.SubItems(2).Text
            Dim sPos As String = itmSel.SubItems(10).Text

            If SelezionaNumeriRuoteESorte(sNumeri, sRuote, sSorte, sPos) Then
                itmSel.Text = sNumeri
                itmSel.SubItems(1).Text = sRuote
                itmSel.SubItems(2).Text = sSorte
                itmSel.SubItems(10).Text = sPos
                AggiornaStatistica(itmSel)
            End If

        End If
    End Sub

    Sub AggiornaStatistica(ItemSel As ListViewItem)
        Dim frz As New struct_formazione
        Dim aNumeri() As Integer = Nothing
        Dim aRuote() As Boolean = Nothing
        Dim aPos() As Boolean = Nothing
        Dim nSorte As Integer
        Dim Inizio As Integer
        Dim fine As Integer
        ItemSel.Remove()
        GetArrayNumeriFromString(ItemSel.Text, aNumeri)
        aRuote = StringaRuoteToBool(ItemSel.SubItems(1).Text)
        nSorte = ConvertToInt(ItemSel.SubItems(2).Text)
        StringaNumeriToArray(ItemSel.SubItems(10).Text, aPos, 5)
        Inizio = frmMain.CtlRangeEstrazioni1.Inizio
        fine = frmMain.CtlRangeEstrazioni1.Fine
        If frz.Inizializza(aNumeri, aRuote, nSorte, Inizio, fine, aPos) Then
            cArchivio.StatFormazione(frz)
            Dim itm As ListViewItem = LvLunghette.Items.Add(ArrayNumeriToString(aNumeri))
            itm.SubItems.Add(RuoteBToString(aRuote))
            itm.SubItems.Add(frz.Sorte)
            itm.SubItems.Add(frz.Ritardo)
            itm.SubItems.Add(frz.RitardoMax)
            itm.SubItems.Add(frz.IncrRitMax)
            itm.SubItems.Add(frz.Frequenza)
            itm.SubItems.Add(frz.Presenze)
            itm.SubItems.Add(frz.Inizio)
            itm.SubItems.Add(frz.Fine)
            itm.SubItems.Add(ArrayNumeriToString(frz.aPosizioni))
        End If
    End Sub

devo fare solo per la riapertura e la selezione del file
 
devo fare solo per la riapertura e la selezione del file
ahime .. purtroppo mi sono dimenticato di predisporre anche range inizio e fine nella funzione SelezinaNumeriRuoteSorte ... quindi dovrai farlo tu :)

apri il form seleziona numeri riduci momentaneamente l'altezza del textbox
aumenta l'altezza del frame sotto
metti 2 scrollbar inizio e fine
rimetti il textbox a coprire tutto

fai le opportune modifiche nellafunction pr gestire anche il range

nel new del form devi andare a gestire i limiti delle scrollar
 
Allora per quanto riguarda inizio e fine funziona perfettamente e questo è il codice:

Codice:
    Private Sub LvLunghette_DoubleClick(sender As Object, e As EventArgs) Handles LvLunghette.DoubleClick
        If LvLunghette.SelectedItems.Count Then
            Dim itmSel As ListViewItem = LvLunghette.SelectedItems(0)
            Dim sNumeri As String = itmSel.Text
            Dim sRuote As String = itmSel.SubItems(1).Text
            Dim sSorte As String = itmSel.SubItems(2).Text
            Dim sInizio As String = itmSel.SubItems(8).Text
            Dim sFine As String = itmSel.SubItems(9).Text
            Dim sPos As String = itmSel.SubItems(10).Text
            If SelezionaNumeriRuoteESorte(sNumeri, sRuote, sSorte, sInizio, sFine, sPos) Then
                itmSel.Text = sNumeri
                itmSel.SubItems(1).Text = sRuote
                itmSel.SubItems(2).Text = sSorte
                itmSel.SubItems(8).Text = sInizio
                itmSel.SubItems(9).Text = sFine
                itmSel.SubItems(10).Text = sPos
                AggiornaStatistica(itmSel)
            End If

        End If
    End Sub


    Sub AggiornaStatistica(ItemSel As ListViewItem)
        Dim frz As New struct_formazione
        Dim aNumeri() As Integer = Nothing
        Dim aRuote() As Boolean = Nothing
        Dim aPos() As Boolean = Nothing
        Dim nSorte As Integer
        Dim Inizio As Integer
        Dim fine As Integer
        ItemSel.Remove()
        GetArrayNumeriFromString(ItemSel.Text, aNumeri)
        aRuote = StringaRuoteToBool(ItemSel.SubItems(1).Text)
        nSorte = ConvertToInt(ItemSel.SubItems(2).Text)
        StringaNumeriToArray(ItemSel.SubItems(10).Text, aPos, 5)
        Inizio = ConvertToInt(ItemSel.SubItems(8).Text)
        fine = ConvertToInt(ItemSel.SubItems(9).Text)
        If frz.Inizializza(aNumeri, aRuote, nSorte, Inizio, fine, aPos) Then
            cArchivio.StatFormazione(frz)
            Dim itm As ListViewItem = LvLunghette.Items.Add(ArrayNumeriToString(aNumeri))
            itm.SubItems.Add(RuoteBToString(aRuote))
            itm.SubItems.Add(frz.Sorte)
            itm.SubItems.Add(frz.Ritardo)
            itm.SubItems.Add(frz.RitardoMax)
            itm.SubItems.Add(frz.IncrRitMax)
            itm.SubItems.Add(frz.Frequenza)
            itm.SubItems.Add(frz.Presenze)
            itm.SubItems.Add(frz.Inizio)
            itm.SubItems.Add(frz.Fine)
            itm.SubItems.Add(ArrayNumeriToString(frz.aPosizioni))
        End If
    End Sub


Codice:
Public Class FrmSelNumeri
    Sub New()
        ' La chiamata è richiesta dalla finestra di progettazione.
        InitializeComponent()
        CtlSelezionaNumeri1.BackColorSelected = Color.FromName(GetValoreCfg(eValoriAppConfig.SfondoColoreNumEvidenziato))
        CtlSelezionaNumeri1.ForeColorSelected = Color.FromName(GetValoreCfg(eValoriAppConfig.ForeColorNumEvidenziato))
        CtlSelezionaNumeri1.SetBackColorFromStringaColoriWin32(GetValoreCfg(eValoriAppConfig.SfondoColoreNumeri))
        CtlSelezionaNumeri1.SetForeColorFromStringaColoriWin32(GetValoreCfg(eValoriAppConfig.ForeColorNumeri))
        CaricaItemCombo()
        ImpostaLimitiScrollBar()
        Init()
        ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().

    End Sub

    Sub ImpostaModalitaNumeriRuoteESelezione()

        TextBox1.Height = FrameRuoteSorte.Top - TextBox1.Top - 5
        FrameRuoteSorte.Visible = True

    End Sub
    Private Sub ButtonOk_Click(sender As Object, e As EventArgs) Handles ButtonOK.Click
        Me.Tag = "OK"
        Me.Hide()
    End Sub

    Private Sub ButtonAnnulla_Click(sender As Object, e As EventArgs) Handles ButtonAnnulla.Click
        Me.Tag = ""
        Me.Hide()
    End Sub
    Sub CaricaItemCombo()

        Dim FileInPath() As String
        FileInPath = GetAllFileInPath(GetDirPreselezioni, "*.csv")
        Dim cComb As ClsItemPreselezione
        For k = 0 To UBound(FileInPath)
            cComb = New ClsItemPreselezione(FileInPath(k))
            ComboBox1.Items.Add(cComb)
        Next

        cmbSorte.Items.Clear()
        For k As Integer = 1 To 5
            cmbSorte.Items.Add(k.ToString)
        Next
    End Sub

    Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
        If Not IsNothing(ComboBox1.SelectedItem) Then
            Dim c As ClsItemPreselezione = DirectCast(ComboBox1.SelectedItem, ClsItemPreselezione)
            CtlSelezionaNumeri1.SetValueFromStringaNum(c.Tag)
        End If
    End Sub

    Private Sub ButtonPulisci_Click(sender As Object, e As EventArgs) Handles ButtonPulisci.Click
        For k = 1 To 90
            CtlSelezionaNumeri1.SetValue(k, 0)
        Next
        TextBox1.Text = ""
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        CtlSelezionaNumeri1.Tag = "x"
        CtlSelezionaNumeri1.SelezionaTutto(False)
        CtlSelezionaNumeri1.SetValueFromStringaNum(TextBox1.Text)
        CtlSelezionaNumeri1.Tag = ""
    End Sub

    Private Sub CtlSelezionaNumeri1_OnChange(Num As Integer) Handles CtlSelezionaNumeri1.OnChange
        If CtlSelezionaNumeri1.Tag = "" Then
            Me.TextBox1.Text = CtlSelezionaNumeri1.GetStringaNumeri
        End If
    End Sub

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
        SoloCaratteriPerInserimentoLunghette(e)
    End Sub
    
    
    Sub ImpostaLimitiScrollBar()
        ScrollBarInizio.Minimum = 1
        ScrollBarInizio.Maximum = cArchivio.QuantitaEstrazioni
        ScrollBarInizio.Value = 1
        ScrollBarFine.Minimum = 1
        ScrollBarFine.Maximum = cArchivio.QuantitaEstrazioni
        ScrollBarFine.Value = ScrollBarFine.Maximum
    End Sub
    
    
    Sub Init()

        LabEstrS1.Text = cArchivio.GetInfoEstrazione(ScrollBarInizio.Value)
        LabEstrS2.Text = cArchivio.GetInfoEstrazione(ScrollBarFine.Value)

    End Sub
    
    
    Sub GestioneRangeInizio()
        If ScrollBarInizio.Minimum > 0 And ScrollBarFine.Minimum > 0 Then
            If ScrollBarInizio.Value <= ScrollBarFine.Value Then
                LabEstrS1.Text = cArchivio.GetInfoEstrazione(ScrollBarInizio.Value)
            Else
                ScrollBarInizio.Value = ScrollBarFine.Value

            End If
        End If
    End Sub
    
    Sub GestioneRangeFine()
        If ScrollBarInizio.Minimum > 0 And ScrollBarFine.Minimum > 0 Then
            If ScrollBarFine.Value >= ScrollBarInizio.Value Then
                LabEstrS2.Text = cArchivio.GetInfoEstrazione(ScrollBarFine.Value)
            Else
                ScrollBarFine.Value = ScrollBarInizio.Value
            End If
        End If

    End Sub
    
    
    Private Sub ScrollBarFine_ValueChanged(sender As Object, e As EventArgs) Handles ScrollBarFine.ValueChanged
        GestioneRangeFine()
    End Sub

    Private Sub ScrollBarInizio_ValueChanged(sender As Object, e As EventArgs) Handles ScrollBarInizio.ValueChanged
        GestioneRangeInizio()
    End Sub
End Class


Codice:
    Function SelezionaNumeriRuoteESorte(ByRef sRetNumeri As String, ByRef sRetRuote As String, ByRef sRetSorte As String, ByRef sInizio As String, ByRef sFine As String, ByRef sRetPos As String) As Integer
        Dim frm As New FrmSelNumeri
        Dim aRuote() As Boolean = Nothing
        Dim aPos() As Boolean = Nothing
        frm.ImpostaModalitaNumeriRuoteESelezione()

        If sRetNumeri.Trim <> "" Then
            Dim aRetNumeri() As Integer = Nothing
            GetArrayNumeriFromString(sRetNumeri, aRetNumeri)
            For k = 1 To aRetNumeri.GetUpperBound(0)
                frm.CtlSelezionaNumeri1.SetValue(aRetNumeri(k), True)
            Next
        End If

        If sRetRuote <> "" Then

            aRuote = StringaRuoteToBool(sRetRuote, ".")
            frm.CltSelRuote1.SetCheckSelezionate(aRuote)
        End If
        If sRetSorte <> "" Then
            Call SelezionaItemCombo(frm.cmbSorte, sRetSorte)
        End If
        If sInizio <> "" Then
            frm.ScrollBarInizio.Value = ConvertToInt(sInizio)
        End If
        If sFine <> "" Then
            frm.ScrollBarFine.Value = ConvertToInt(sFine)
        End If
        If sRetPos <> "" Then

            StringaNumeriToArray(sRetPos, aPos, 5)
            frm.CtlSelPosizione1.SetCheckSelezionate(aPos)
        End If
        frm.ShowDialog()
        If frm.Tag = "Ok" Then

            sRetNumeri = frm.CtlSelezionaNumeri1.GetStringaNumeri()
            frm.CltSelRuote1.GetCheckSelezionate(aRuote)
            sRetRuote = RuoteBToString(aRuote)
            sRetSorte = frm.cmbSorte.Text
            sInizio = frm.ScrollBarInizio.Value.ToString
            sFine = frm.ScrollBarFine.Value.ToString
            frm.CtlSelPosizione1.GetCheckSelezionate(aPos)
            sRetPos = ArrayNumeriToString(aPos)
            If sRetNumeri <> "" AndAlso sRetRuote <> "" AndAlso sRetSorte <> "" AndAlso sInizio <> "" AndAlso sFine <> "" AndAlso sRetPos <> "" Then

                SelezionaNumeriRuoteESorte = frm.CtlSelezionaNumeri1.QNumeriSelezionati
                frm.Close()
                frm.Dispose()
            Else
                MessageBox.Show("Dati mancanti", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If


        Else
            SelezionaNumeriRuoteESorte = 0
            frm.Close()
            frm.Dispose()
        End If

    End Function
 
Questo è il scegli file formazioni

Codice:
    Function ScegliFileFormazioni(sFilePercorso As String, Optional Estensione As String = "*.csv") As String
        Dim frm As New frmApriFileFormazioni
        Dim Ext As String = Estensione.TrimStart("*")
        Dim AllFile() As String = GetAllFileInPath(sFilePercorso, Estensione)
        For k = 0 To UBound(AllFile)
            frm.ListBox1.Items.Add(GetNomeFileSenzaEstensione(AllFile(k)))
        Next
        frm.ShowDialog()
        If frm.Tag = "OK" Then
            ScegliFileFormazioni = sFilePercorso & frm.ListBox1.SelectedItem.ToString & Ext
            frm.Close()
            frm.Dispose()
        Else
            ScegliFileFormazioni = ""
            frm.Close()
            frm.Dispose()
        End If
    End Function

Codice:
    Private Sub ButtonApriFile_Click(sender As Object, e As EventArgs) Handles ButtonApriFile.Click
        ScegliFileFormazioni(GetDirFormazioni)
    End Sub


Senza titolo.png
 
Per completezza posto sorgenti

 
perche si ferma li ? se hai il percorso con uno streamreader dvi leggere il file
record per record fai lo split e aggiungi l'item nella lista senza calcolare niente riscrivi tutti i dati nelle colonne previste
 
Devi correggere la funzione che veridfica i caratteri perche non torna mai tru e non consente di salvare dice che il nome è sbagliato.
poi devi correggere e fare cosi la funzione

poi al pulsante che la chiama farai

sFile = ScegliFileFormazioni
if fileexist(sFile ) then
' svuota lista
' apre streamreader
' ciclo che legge le linee e aggiunge gli item alla listvieew
chiud stream
end if


Codice:
  Function ScegliFileFormazioni(sFilePercorso As String, Optional Estensione As String = "*.csv") As String
        Dim frm As New frmApriFileFormazioni
        Dim Ext As String = Estensione.TrimStart("*")
        Dim AllFile() As String = GetAllFileInPath(sFilePercorso, Estensione)

        Dim cItm As ClsItemCombo



        For k = 1 To UBound(AllFile)
            cItm = New ClsItemCombo
            cItm.Text = GetNomeFileSenzaEstensione(AllFile(k))
            cItm.Tag = AllFile(k)
            frm.ListBox1.Items.Add(cItm)
        Next
        frm.ShowDialog()
        If frm.Tag = "OK" Then
            If frm.ListBox1.SelectedItems.Count Then
                cItm = DirectCast(frm.ListBox1.SelectedItem, ClsItemCombo)

                ScegliFileFormazioni = cItm.Tag
                frm.Close()
                frm.Dispose()
            End If

        Else
            ScegliFileFormazioni = ""
            frm.Close()
            frm.Dispose()
        End If
    End Function
 
fatto tutto e corretto tutto. Nel pulsante che apre il file formazione il codice è il seguente

Codice:
    Private Sub ButtonApriFile_Click(sender As Object, e As EventArgs) Handles ButtonApriFile.Click
        Dim sFile As String
        sFile = ScegliFileFormazioni(GetDirFormazioni)
        If FileExist(sFile) Then
            lvScomposizione.Items.Clear()
            Dim SR As New StreamReader(sFile)
            Dim sline As String
            Dim sRecord() As String
            sline = SR.ReadLine
            sRecord = sline.Split(";")
            Dim itm As ListViewItem = LvLunghette.Items.Add(sRecord(0))
                itm.SubItems.Add(sRecord(1))
                itm.SubItems.Add(sRecord(2))
                itm.SubItems.Add(sRecord(3))
                itm.SubItems.Add(sRecord(4))
                itm.SubItems.Add(sRecord(5))
                itm.SubItems.Add(sRecord(6))
                itm.SubItems.Add(sRecord(7))
                itm.SubItems.Add(sRecord(8))
                itm.SubItems.Add(sRecord(9))
            itm.SubItems.Add(sRecord(10))
        End If
    End Sub
 
Per completezza posto sorgenti con tutti i cambiamenti

 
C'è un bug nel form sel numeri... dopo aver scatenato l'evento doppio click sulla formazione, se la ruota viene sostituita alla pressione del button OK nessun problema. Se si aggiunge una ruota da errore
 
buongiorno , devi cercare di capire gli errori da che dipendono perche è una cosa che capita spesso magari per distrazione.
In questo caso la funzione che da errore è quella che hai appena scritto la quale non riesce a trovare le ruote.
Perche non le trova ?

la funzione che non torna il risultato giusto è questa

1637995775080.png

ma non perche sia sbagliata , è sbagliato il modo in cui l'hai chiamata ,vedi che c'è un parametro opzionale che identifica i lseparatore da usare ? Per default è il punto e virgola , ma la stringa delel ruote è divisa dal punto ... quindi glie lo devi passare ..
 
Devi correggere la funzione che veridfica i caratteri perche non torna mai tru e non consente di salvare dice che il nome è sbagliato.
poi devi correggere e fare cosi la funzione

poi al pulsante che la chiama farai

sFile = ScegliFileFormazioni
if fileexist(sFile ) then
' svuota lista
' apre streamreader
' ciclo che legge le linee e aggiunge gli item alla listvieew
chiud stream
end if


Codice:
  Function ScegliFileFormazioni(sFilePercorso As String, Optional Estensione As String = "*.csv") As String
        Dim frm As New frmApriFileFormazioni
        Dim Ext As String = Estensione.TrimStart("*")
        Dim AllFile() As String = GetAllFileInPath(sFilePercorso, Estensione)

        Dim cItm As ClsItemCombo



        For k = 1 To UBound(AllFile)
            cItm = New ClsItemCombo
            cItm.Text = GetNomeFileSenzaEstensione(AllFile(k))
            cItm.Tag = AllFile(k)
            frm.ListBox1.Items.Add(cItm)
        Next
        frm.ShowDialog()
        If frm.Tag = "OK" Then
            If frm.ListBox1.SelectedItems.Count Then
                cItm = DirectCast(frm.ListBox1.SelectedItem, ClsItemCombo)

                ScegliFileFormazioni = cItm.Tag
                frm.Close()
                frm.Dispose()
            End If

        Else
            ScegliFileFormazioni = ""
            frm.Close()
            frm.Dispose()
        End If
    End Function
Perfetto ho corretto tutto. Anche un un'altro bug di piccolo conto. La funzione scegli file non trovava il primo file in lista. Ho fatto partire il ciclo dall'indice 0 "For k = 0 To UBound(AllFile)"
 
Ho aggiunto il tasto elimina al form che apre le formazioni


Senza titolo.png


Codice:
Public Class frmApriFileFormazioni
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Tag = "OK"
        Me.Hide()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Me.Tag = ""
        Me.Hide()
    End Sub

    Private Sub ButtonCancella_Click(sender As Object, e As EventArgs) Handles ButtonCancella.Click
        If ListBox1.SelectedIndex >= 0 Then
            If MessageBox.Show("Vuoi eliminare la formazione selezionata?", "Elimina formazione", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes Then
                DeleteFile(GetDirFormazioni() & ListBox1.SelectedItem.ToString & ".csv")
                Me.Close()
            End If
        Else
            MessageBox.Show("Nessuno formazione selezionata", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub
End Class
Codice:
 
ok , bene con questa finestraabbiamo quasi finito ,ora vedi la funzione lanciastatistica quella che parte dla pulsante sopra = falla diventare una sub dover i numeri e solo i numeri invece di prenderli dalla textbox li prenda da un parametro.
Quindi alla luce delle nuove modifiche quando la lancerai dal pulsante gli passerai per parrametro la stringa contenuta nella textbox.
Questa modifica ci consente di lanciarequesta funzione anche per la prossima cosa che ci apprestiamo a fare
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 11 gennaio 2025
    Bari
    73
    43
    01
    58
    81
    Cagliari
    69
    60
    18
    02
    10
    Firenze
    25
    32
    18
    55
    54
    Genova
    48
    05
    40
    34
    69
    Milano
    10
    07
    70
    44
    79
    Napoli
    11
    89
    01
    34
    80
    Palermo
    37
    80
    82
    44
    77
    Roma
    78
    04
    38
    39
    56
    Torino
    08
    13
    30
    27
    24
    Venezia
    56
    75
    36
    18
    70
    Nazionale
    63
    83
    19
    31
    80
    Estrazione Simbolotto
    Bari
    35
    34
    12
    23
    20
Indietro
Alto