Novità

Mente da programmatore

LuigiB

Premium Member
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.
 

LuigiB

Premium Member
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.
 

LuigiB

Premium Member
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
 

Edoardo_95

Super Member >PLATINUM<
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
 

LuigiB

Premium Member
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
 

Edoardo_95

Super Member >PLATINUM<
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
 

Edoardo_95

Super Member >PLATINUM<
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
 

Edoardo_95

Super Member >PLATINUM<
Per completezza posto sorgenti

 

LuigiB

Premium Member
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
 

LuigiB

Premium Member
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
 

Edoardo_95

Super Member >PLATINUM<
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
 

Edoardo_95

Super Member >PLATINUM<
Per completezza posto sorgenti con tutti i cambiamenti

 

Edoardo_95

Super Member >PLATINUM<
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
 

LuigiB

Premium Member
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 ..
 

Edoardo_95

Super Member >PLATINUM<
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)"
 

Edoardo_95

Super Member >PLATINUM<
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:
 

LuigiB

Premium Member
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 27 novembre 2021
    Bari
    64
    50
    86
    88
    54
    Cagliari
    29
    78
    33
    68
    72
    Firenze
    42
    38
    69
    54
    13
    Genova
    46
    02
    36
    41
    29
    Milano
    33
    37
    70
    71
    21
    Napoli
    41
    57
    27
    06
    82
    Palermo
    04
    25
    49
    68
    60
    Roma
    17
    45
    78
    75
    56
    Torino
    17
    36
    64
    53
    08
    Venezia
    79
    83
    90
    60
    08
    Nazionale
    51
    26
    63
    83
    43
    Estrazione Simbolotto
    Torino
    01
    38
    24
    02
    06

Ultimi Messaggi

Alto