Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
30/10/10 7:04
carmine
ragazzi per un progetto a scuola devo riuscire a leggere un bottone OK, cambiando ogni volta il testo di una label, nella stessa form, come faccio? ho provato con un case e per i primi menu funziona poi quando si va ai sottomenu nn funz...
ho usato variabili booleane e controlli ora posto il codice:
Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
        Select Case i
            Case 0, 1
                Label1.Text = Spec(j)
                Specia = True
                men = False
                If a = True Then
                    If j <= 3 Then
                        Label1.Text = Classi(k)
                        clas = True
                        Specia = False
                    End If
                End If
                If b = True Then
                    clas = False
                    If k = 0 Then
                        If ele = False Then
                            Label1.Text = Prime(l)
                            inf = True
                        End If
                        If inf = False Then
                            Label1.Text = Prime(l)
                            ele = True

                        End If
                    End If
                End If
        End Select
    End Sub

gli incrementi degli indici li faccio in altre 2 bottoni, avanti e indietro

ekko:
Indietro:

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        If men = True Then   'controllo primo menu per de-incremento indice
            If i > 0 Then
                i = i - 1
                Label1.Text = Menu(i)
            End If
        End If
        If Specia = True Then  'secondo menu scelta specializzaizione
            a = True
            If j > 0 Then
                j = j - 1
                Label1.Text = Spec(j)
            End If
        End If
        If clas = True Then   'scelta classe
            b = True
            If k > 0 Then
                k = k - 1
                Label1.Text = Classi(k)
            End If
        End If
        If l > 0 Then
            If inf = True Then
                l = l - 1
                Label1.Text = Prime(l)
            End If
            If ele = True Then
                l = l - 1
                Label1.Text = Prime(l)
            End If
        End If
    End Sub

Avanti:
Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
        If men = True Then
            If i < 1 Then
                i = i + 1
                Label1.Text = Menu(i)
            End If
        End If
        If Specia = True Then
            a = True
            If j < 3 Then
                j = j + 1
                Label1.Text = Spec(j)
            End If
        End If
        If clas = True Then
            b = True
            If k < 4 Then
                k = k + 1
                Label1.Text = Classi(k)
            End If
        End If

        If l < 9 Then
            If inf = True Then
                l = l + 1
                Label1.Text = Prime(l)
            End If
            If ele = True Then
                Label1.Text = Prime(l)
                If l >= 1 Then
                    l = 1
                End If
            Else
                l = l + 1
            End If

        End If
    End Sub
Ultima modifica effettuata da carmine 30/10/10 7:06
aaa
30/10/10 8:43
lorenzo
1) non ho capito cosa vuoi fare
2) nel codice che mostri usi delle variabili (i, j, etc...) che non si capisce cosa siano
aaa
30/10/10 9:18
Il Totem
Cosa significa "leggere un pulsante"? E di quali sottomenu parli? Forse l'elemento selezionato di ogni menu corrisponde a un indice diverso?
aaa
30/10/10 9:36
carmine
vi presento il programma come è strutturato:

label1


btn(Indietro) btn(OK) btn (Avanti)

il programma gestisce l'orario di ricevimento dei docenti e l'orario delle classi!

questi sono i primi testi ke avrà la label!

quindi apparirà:

ricevimento docenti

indietro ok avanti

se clicco avanti mi uscirà "orario classi"

se premo ok la label mi mostrerà tutte le specializzazioni

con la stessa procedura di avanti e indietro, e se premo OK mi mostrerà quale classe tra prima seconda terza quarta e quinta dopo di ke le singole classi

ho creato degli array di stringhe ad esempio Classi ("PRIME", "SECONDE" ecc..)
Specializzazioni("INFORMATICA", "ELETTROTECNICA" ecc..)

quindi tutto il prog è centrato nelle funzioni OK AVANTI E INDIETRO!

gli indici mi fanno capire dove sono arrivato a quale menu!

'inizializzazione dei vettori all'avvio del form
    Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Menu(0) = "RICEVIMENTO DOCENTI"
        Menu(1) = "ORARIO CLASSI"
        Spec(0) = "INFORMATICA"
        Spec(1) = "ELETTROTECNICA"
        Spec(2) = "BIOTECNOLOGIA"
        Spec(3) = "GRAFICA"
        Classi(0) = "PRIME"
        Classi(1) = "SECONDE"
        Classi(2) = "TERZE"
        Classi(3) = "QUARTE"
        Classi(4) = "QUINTE"
        Prime(0) = "1A"
        Prime(1) = "1B"
        Prime(2) = "1C"
        Prime(3) = "1D"
        Prime(4) = "1E"
        Prime(5) = "1F"
        Prime(6) = "1G"
        Prime(7) = "1H"
        Prime(8) = "1I"
        Prime(9) = "1L"
        i = 0
        j = 0
        k = 0
        l = 0
        el = 0
        Me.BackgroundImage = My.Resources.back2
        Label1.Text = Menu(i)
        men = True
        Specia = False
        clas = False
        a = False
        b = False
        inf = False
        ele = False
    End Sub
Ultima modifica effettuata da carmine 30/10/10 9:38
aaa
30/10/10 9:53
Il Totem
Così è chiaro, se si leggesse il regolamento non ci sarebbe bisogno di chiedere ogni volta ulteriori informazioni.
Senza guardare il codice, posso dirti che molto probabilmente hai fatto un pastrocchio con le variabili booleane, quindi il mio consiglio è di creare un dizionario. Ogni riga dell dizionario contiene gli elementi di un sotto menu; spostandosi di chiave in chiave si passa ai menu successivi. Ad esempio:
Dim D As New Dictionary(Of String, String())
D.Add("Menu iniziale", New String() {"Ricevimento docenti", "Orario classi"})
D.Add("Ricevimento docenti", New String() {"Informatica", "Elettrotecnica", ...})
'Eccetera...

Così puoi accedere ad ogni elemento semplicemente avendo due dati: CurrentMenu, il nome del menu attuale, e i l'indice dell'elemento in questo menu.
In questo caso, il pulsante indietro semplicemente diminuisce i di 1, mentre avanti aumenta i di 1. Il pulsante Ok imposta CurrentMenu = D(CurrentMenu, i).
Dim D As Dictionary(Of String, String())
Dim i As Int32 = 0
Dim CurrentMenu As String

'...

Sub Avanti()
   i += 1
   If i > D(CurrentMenu).Length - 1 Then
      i = D(CurrentMenu).Length -1
   End If
   Label1.Text = D(CurrentMenu)(i)
End Sub 

'Sub Indietro ...

Sub OK()
   If D.ContainsKey(D(CurrentMenu)(i)) Then
      CurrentMenu = D(CurrentMenu)(i)
      i = 0
      Label1.Text = D(CurrentMenu)(i)
   Else
      'azione specifica per una voce del menu
   End If
End Sub
aaa
31/10/10 7:04
carmine
mi dici in che funzione devono stare l'aggiunzione dell'elemento (d.ADD) mi da errore di (Riferimento a un oggetto non impostato su un'istanza di oggetto.)
ed inizialmente la label deve contenere il valore di d(corr)(0)?
cioè d("ricevimento docenti";)(0)
Ultima modifica effettuata da carmine 31/10/10 7:11
aaa
31/10/10 14:04
Il Totem
Se non inizializzi il dictionary, ovviamente ti darà quell'eccezione. Nel codice è solo dichiarato, manca il new.

P.S.: "aggiunzione"? Ma stiamo scherzando?
aaa
31/10/10 14:09
carmine
 Dim D As Dictionary(Of String, String())
    'inizializzazione dei vettori all'avvio del form
    Private Sub nuovo()
        
    End Sub

    Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        With D
            .Add("MENU", New String() {"RICEVIMENTO DOCENTI", "ORARIO CLASSI"})
            .Add("RICEVIMENTO DOCENTI", New String() {"INFORMATICA", "ELETTROTECNICA", "BIOTECNOLOGIA", "GRAFICA"})
        End With
    End Sub


sorry per il termine andavo veloce e ho scritto la prima cosa ke mi è venuta! ihihi
aaa