Novità

Mente da programmatore

Codice:
Public Class cltSelPosizione
    Private Check() As clsChekBoxModificata
    Private Const nCheck As Integer = 5
    Private mBackColorNormale As Color = SystemColors.Control
    Private mBackColorSelected As Color = Color.Red
    Private mForeColorNormale As Color = SystemColors.WindowText
    Private mForeColorSelected As Color = Color.White
    Public Property BackColorNormale As Color
        Get
            Return mBackColorNormale
        End Get
        Set(value As Color)
            mBackColorNormale = value
            LoadCampi()
        End Set
    End Property
    Public Property BackColorSelected As Color
        Get
            Return mBackColorSelected
        End Get
        Set(value As Color)
            mBackColorSelected = value
            LoadCampi()
        End Set
    End Property

    Public Property ForeColorNormale As Color
        Get
            Return mForeColorNormale
        End Get
        Set(value As Color)
            mForeColorNormale = value
            LoadCampi()
        End Set
    End Property

    Public Property ForeColorSelected As Color
        Get
            Return mForeColorSelected
        End Get
        Set(value As Color)
            mForeColorSelected = value
            LoadCampi()
        End Set
    End Property

    Private Sub cltSelRuote_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadCampi()
    End Sub

    Sub LoadCampi()

        Dim nX As Integer, nY As Integer
        Dim nHTxt As Integer = 15, nWTxt As Integer = 25
        Dim Altezza As Integer = 21, Larghezza As Integer = 35
        Dim nLeft As Integer = 10
        ReDim Check(nCheck)
        nX = 0
        nY = 0
        Dim aRuote() = {"", "1", "2", "3", "4", "5"}
        Me.Controls.Clear()
        For r As Integer = 1 To nCheck
            Check(r) = New clsChekBoxModificata
            With Check(r)
                .AutoSize = False
                .Checked = False
                .Left = nX
                .Top = nY
                .Width = Larghezza
                .Height = Altezza
                .ForeColorNormale = mForeColorNormale
                .BackColorNormale = mBackColorNormale
                .BackColorSelected = mBackColorSelected
                .ForeColorSelected = mForeColorSelected
                .TextAlign = ContentAlignment.MiddleCenter
                .Appearance = Appearance.Button
                .Text = aRuote(r)
                Me.Controls.Add(Check(r))
                AddHandler Check(r).CheckStateChanged, AddressOf Gestione_CheckstateChanged
                .Visible = True
            End With
            nX = nX + Larghezza
        Next

    End Sub
    Private Sub Gestione_CheckstateChanged(sender As Object, e As EventArgs)

    End Sub

    Function GetPosizioniSelezionate(ByRef aRetRuote() As Integer) As Integer
        Dim i As Integer
        ReDim aRetRuote(nCheck) ' dimensiono al massimo possibile
        For x As Integer = 1 To nCheck
            If Check(x).Checked = True Then
                i += 1
                aRetRuote(i) = x   ' giusto
            End If
        Next
        ReDim Preserve aRetRuote(i) ' ridimensiono al numero di ruote trovate
        Return i
    End Function

    Function GetPosizioniSelezionate(ByRef aRetRuote() As Boolean) As Integer
        Dim i As Integer
        ReDim aRetRuote(nCheck) ' dimensiono al massimo possibile
        For x As Integer = 1 To nCheck
            If Check(x).Checked = True Then
                i += 1
                aRetRuote(x) = True
            End If
        Next
        Return i
    End Function

    Sub SetPosizioniSelezionate(aRuote() As Integer)
        For x As Integer = 1 To UBound(aRuote)
            Check(aRuote(x)).Checked = True
        Next
    End Sub
    Sub SetPosizioniSelezionate(aRuote() As Boolean)
        For x As Integer = 1 To UBound(aRuote)
            Check(x).Checked = aRuote(x)
        Next
    End Sub
End Class
 
nno no dovrebbe andare bene cosi posizionalo sul form della statistica , poi aggingi una combobox che chiamerai cmbsorte
poi fai una funzione nel mopdulo assistente sub LoadComboSorte (cmb as combobox)

la carichi istanziando oggetti del tipo clsItemCombo , ad ogni oggetto devi valorizzare la proprieta itemdata con il numero 1 , 2 , 3 ...
quindi lo fai con un ciclo da 1 a 5
al load del form statistica lanci la sub per alimentare la combo
 
comunque si se vuoi gestire il salvataggio nel file configurazione delle posizioni selezionate ok
 
nno no dovrebbe andare bene cosi posizionalo sul form della statistica , poi aggingi una combobox che chiamerai cmbsorte
poi fai una funzione nel mopdulo assistente sub LoadComboSorte (cmb as combobox)

la carichi istanziando oggetti del tipo clsItemCombo , ad ogni oggetto devi valorizzare la proprieta itemdata con il numero 1 , 2 , 3 ...
quindi lo fai con un ciclo da 1 a 5
al load del form statistica lanci la sub per alimentare la combo
Fatto. Posto versione aggiornata

 
ok , il progetto da un errore per la mancanza di un immagine che punta una tua risorsa locale facendo le opportune modifiche parte.
Dobbiamo sistemare la faccenda del controllo SelezionaRuote / Seleziona posizioni , avere due controlli simili non va bene perccio sulla base di quello che avevi fatto tu per le ruote ne ho creato un altro piu versatile , in pratica non ha i pulsanti fissi ma c'è una proprieta che si chiama stringa pulsanti che contiene le text da mettere sui pulsanti separate da virgola , cambiando qualla proprietà lui carica i pulsanti giusti. Per default ho impostato la stringa delle ruote

allora in questo file che scarichi c'è sia il nuovo controllo da aggiungere al progetto
sia di nuovo la combo colori a cui h o fatto una modifica.


segui alla lettera i passi da fare

1) ad ambiente chiuso sostituisci il file CmbColorPicker.vb con quello presente nello zip
2) apri l'ambiente ed inserisci il nuovo controlllo ctlGruppoCheckBox.vb
3) rimuovi la classe clsChekBoxModificata.vb perche tanto è contenuta nel controllo di cui sopra
4) manda in run il progetto per fargli compilare il nuovo controllo e chiudi
5) rimuovi dal form principale il controllo delle ruote
6) inserisci sul form principale al posto del controllo levato il nuovo controllo ctlGruppoCheck e chiamalo come prima CltSelRuote1
7) vai nel form della statistca pure li rimuovi il tuo controllo posizioni e metti il nuovo controllo ctlGruppoCheck cambia la proprietà stringapulsanti in "1,2,3,4,5"
8) manda in run il progetto ti dara degli errori perche non esistono piu le funzioni GetRuoteSelezionate bensi al suo posto c'è SetCheckSelezionate , quindi in tutte le funzioni che ti segnala errate sostituisci la parola Ruote con la parola Chek
9) manda in run dovrebbe funzionare
10) elimina i 2 controlli vecchi , delel ruote e delle posizioni.




 
fatto tutto e verificato che funziona vai nel modulo del nuovo controllo usa la funzione Sostituzione e sostituisci la parola Chek con Check , purtroppo avevo fatto un errore di ortografia e non avevo scritto la c prima della k .. di conseguenza a cambia anche nei form dove chiami le funzioni.
 
anzi visto che tutte queste cose gia le ho fatte io , riscaricati il progetto e ripartiamo da qui

 
in ambiente di progettazione imposta la proprieta StartPosition del form Seleziona numeri a CenterScreen
nella form statistica io metterei un campotesto con di fianco un pulsante , nel campo testo l'utente puo scrivere la sua lunghetta , premendo il pulsante (quell oche gia c'è) si selezionano i numeri con l'apposita funzionee premendo ok questi numeri si trasferiscono nel campo testo.

la funzione che avevi fatot seleziona numeri non è corretta , andava fatta cosi , dopo aver corretto aggiungine anche un altra che invece torna una stringa Function SelezionaNumeri(ByRef sRetNumeri As String) As Integer


Codice:
Function SelezionaNumeri(ByRef aRetNumeri() As Integer) As Integer
        Dim frm As New frmSelNumeri
        Dim i As Integer
        If Not IsNothing(aRetNumeri) Then
            For k = 1 To aRetNumeri.GetUpperBound(0)
                frm.CtlSelezionaNumeri1.SetValue(aRetNumeri(k), True)
            Next
        End If

        frm.ShowDialog()
        If frm.Tag = "Ok" Then
            frm.CtlSelezionaNumeri1.GetArrayNumSelezionati(aRetNumeri)
            SelezionaNumeri = frm.CtlSelezionaNumeri1.QNumeriSelezionati
            frm.Close()
            frm.Dispose()
        Else
            SelezionaNumeri = 0
            frm.Close()
            frm.Dispose()
        End If

    End Function
 
fermo restando quanto detto riscaricati il progetto che ho modificato perche avevo fatto un po di casino ..

 
bene , ora nel form selezione vai a spostare quell oche fai nell'evento load dentro la procedura Sub New , in pratica scrivi sub New premi enter , lui ti crea la sub poi fai taglia dal load e metti tutto li .
 
nel modulo assistente vai ad aggiungere questa funcxtion che avevamo fatto con legend

Codice:
 Function GetArrayNumeriFromString(sNumeri As String, ByRef aRetNumeri() As Integer) As Integer

        Dim sValue As String = ""
        Dim sChr As String
        Dim n As Integer, i As Integer
        ReDim aRetNumeri(90)

        For k As Integer = 0 To sNumeri.Length - 1
            sChr = sNumeri.Substring(k, 1)
            If IsNumeric(sChr) Then
                sValue = sValue & sChr
            Else
                Try
                    n = Convert.ToInt32(sValue)
                    i += 1
                    aRetNumeri(i) = n
                    sValue = ""
                Catch ex As Exception

                End Try

            End If


        Next

        If sValue <> "" Then
            Try
                n = Convert.ToInt32(sValue)
                i += 1
                aRetNumeri(i) = n
                sValue = ""
            Catch ex As Exception

            End Try
        End If
        ReDim Preserve aRetNumeri(i)
        Return i

    End Function
 
la versione stringa della nostra SelezionaNumeri deve esssere cosi , l chiamata dal pulsante invece cosi

SelezionaNumeri(TextBox1.Text) dove textbox è la tua textbox da mettere sul form statistica

fai la modifica e dimmi se tutto funge come prima



Codice:
Function SelezionaNumeri(ByRef sRetNumeri As String) As Integer
        Dim frm As New frmSelNumeri

        Dim i As Integer
        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

        frm.ShowDialog()
        If frm.Tag = "Ok" Then
            sRetNumeri = frm.CtlSelezionaNumeri1.GetStringaNumeri()
            SelezionaNumeri = frm.CtlSelezionaNumeri1.QNumeriSelezionati
            frm.Close()
            frm.Dispose()
        Else
            SelezionaNumeri = 0
            frm.Close()
            frm.Dispose()
        End If

    End Function
 
Codice:
Public Class frmStatLung
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles ButtonScegliNumeri.Click
        SelezionaNumeri(TextBox1.Text)
    End Sub

    Private Sub frmStatLung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadComboSorte(cmbsorte)
    End Sub

End Class

Codice:
Imports System.IO
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()
        ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().

    End Sub
    Private Sub frmSelNumeri_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    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 i As Integer
        Dim FileInPath() As String
        FileInPath = GetAllnameFile(GetDirPreselezioni)
        Dim cComb As clsItemPreselezione
        For k = 0 To UBound(FileInPath)
            cComb = New clsItemPreselezione(GetDirPreselezioni() & FileInPath(k) & ".csv")
            ComboBox1.Items.Add(cComb)
        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


End Class
 
ok c'è un altro problemino banale , OK è diverso da Ok quindi per non incorrere i nquesti problemi nel modulo assistente i ncima vai a scrivere option compare text

in realta quando testi il tag basta che sia diverso da stringa vuota ...
 
Ultima modifica di un moderatore:
nel form seleziona numeri non è gestito il campo testo quindi devi aggiungere un pulsantino che passa il contenuto del campo testo al controllo per la selezione dei numeri con l'apposita funzione poi svuoti il campo testo , naturalmente solo se il campo testo contiene valori ,
 
Quindi una cosa del genere:

Codice:
   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If TextBox1.Text <> "" Then
            If IsNumeric(Val(TextBox1.Text)) Then
                CtlSelezionaNumeri1.SetValueFromStringaNum(TextBox1.Text, True)
                TextBox1.Text = ""
            End If
        End If
    End Sub
 

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