Italian intercettare il CheckBox

max611

Active Member
Licensed User
Longtime User
cambio strada, ho trovato in giro questo codice che mi andrebbe bene
praticamente crea una scroll con tante CheckBox
ora il mio problema è come faccio a capire quando metto la spunta o la tolgo nella CheckBox?
grazie ancora
questo il codice:

ScrollView1.Initialize(0)
pnl = ScrollView1.Panel
Activity.AddView(ScrollView1, 0, 0, 100%x, 100%y)
lstChecks.Initialize

For i = 1 To 100
chk.Initialize("")
chk.Text = "Item #" & i
lstChecks.Add(chk)
Dim lbl1 As Label
lbl1.Initialize("")
lbl1.Text = "Value #" & i
lbl1.Gravity = Gravity.CENTER_VERTICAL
pnl.AddView(chk, 300, height * (i - 1), 120dip, height)
pnl.AddView(lbl1, 225dip, height * (i - 1), 120dip, height)
Next
pnl.Height = lstChecks.Size * height
 

Star-Dust

Expert
Licensed User
Longtime User
Metti nel Tag di ogni Check un ID che può essere la stessa posizione ottenuta dalla variebile I del FOR NEXT

B4X:
For i = 1 To 100
        Dim chk As CheckBox
        chk.Initialize("chk")
        chk.Tag=i
        chk.Text = "Item #" & i
        'lstChecks.Add(chk) ' Non c'è bisogno
        Dim lbl1 As Label
        lbl1.Initialize("")
        lbl1.Text = "Value #" & i
        lbl1.Gravity = Gravity.CENTER_VERTICAL
        pnl.AddView(chk, 300, height * (i - 1), 120dip, height)
        pnl.AddView(lbl1, 225dip, height * (i - 1), 120dip, height)
    Next
B4X:
Sub chk_CheckedChange(Checked As Boolean)
    Dim C As CheckBox = Sender
    Dim Indice As Int = C.tag
   
End Sub
 

max611

Active Member
Licensed User
Longtime User
ho fatto in questo modo ma...
Sub chk_CheckedChange(Checked As Boolean)
Dim C As CheckBox = Sender
Dim Indice As Int = C.tag
If C.Checked=True Then Msgbox(Indice, "Checked indices")
End Sub
o devo metterlo in un ciclo for?
 

Star-Dust

Expert
Licensed User
Longtime User
upload_2018-11-6_16-34-14.png

B4X:
Sub chk_CheckedChange(Checked As Boolean)
    Dim C As CheckBox = Sender
    Dim Indice As Int = C.tag
    
    If Checked then MsgBox("Cliccato", "Linea: " & Indice)
End Sub
 

max611

Active Member
Licensed User
Longtime User
per il code ho fatto cosi ma non mi da il risultato che hai tu, forse Edge è la causa...?
 

max611

Active Member
Licensed User
Longtime User
B4X:
Sub Activity_Create(FirstTime As Boolean)
    ScrollView1.Initialize(0)
  
    pnl = ScrollView1.Panel
    Activity.AddView(ScrollView1, 0, 0, 100%x, 100%y)
    
    For i = 1 To 100
        
        chk.Initialize("")
        chk.Tag=i
        chk.Text = "Item #" & i
'        lstChecks.Add(chk)
        Dim lbl1 As Label
        lbl1.Initialize("")
        lbl1.Text = "Value #" & i
        lbl1.Gravity = Gravity.CENTER_VERTICAL
        pnl.AddView(chk, 0, height * (i - 1), 120dip, height)
        pnl.AddView(lbl1, 125dip, height * (i - 1), 120dip, height)
    Next
    pnl.Height = i * height
End Sub

B4X:
Sub chk_CheckedChange(Checked As Boolean)
 Dim C As CheckBox = Sender
    Dim Indice As Int = C.tag
    If Checked Then Msgbox("Cliccato", "Linea: " & Indice)
    
End Sub

questo in riassunto il codice modificato, ma quando spundo un qualsiasi check non succede niente
sbaglio qualcosa?
 

Star-Dust

Expert
Licensed User
Longtime User
Si ...
B4X:
chk.Initialize("chk")
chk.Tag=i
 
Top