Autore Topic: [RISOLTO]TableView con CheckBox  (Letto 816 volte)

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
[RISOLTO]TableView con CheckBox
« il: 03 Giugno 2017, 15:10:50 »
Ciao a tutti, sono nuovamente a chiedere aiuto, dopo varie ricerche, ma non ne vengo a capo:
Ho una TableView popolata con 5 CheckBox con il seguente metodo:
Codice: [Seleziona]

Private kb As CheckBox
Private sa As ScrollArea

Public Sub Form_Open()
Dim obs As Observer
Dim i As Integer


  sa = TableView2.Children[0]

  obs = New Observer(sa) As "Scroll"
 
   With TableView2
    .W = 882
    .H = 280
    .Columns.Count = 3
    .Rows.Count = 30
  End With
   
  TableView2.Columns[0].W = 70
  TableView2.Columns[1].W = 110
  TableView2.Columns[2].W = 120

For i = 1 To 5
  With kb = New CheckBox(sa) As "CheckBox"
    .X = TableView2.Columns[2].X
    .Y = TableView2.Rows[i].Y
    .W = TableView2[i, 0].W
    .H = TableView2[i, 0].H
    .Text = "Prova" 
    .Name = "CheckBox"
  End With
Next 
End


e fino a qui tutto ok , applico il metodi Edit e Save per editare nelle celle:

Codice: [Seleziona]
Public Sub TableView2_Click()
  TableView2.Edit
 End

Public Sub TableView2_Save(Row As Integer, Column As Integer, Value As String)
TableView2[row, column].Text = Value
Print Value
End
 
Quando però vado a leggere il contenuto delle celle:

Codice: [Seleziona]
Public Sub Button1_Click()
Dim i As Integer
Dim a As Boolean
Dim b As String

  For i = 0 To 5
    a = TableView2[i, 2].Text  ' CheckBox.Value?? '
    b = TableView2[i, 0].Text
  Print b, a
  Next

End
non viene restituito il valore della CheckBox ( ottengo sempre 'False') mentre negli altri casi tutto ok. Dove sbaglio? Grazie :ciao:
 
« Ultima modifica: 04 Giugno 2017, 14:30:31 da naderit »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:TableView con CheckBox
« Risposta #1 il: 03 Giugno 2017, 15:26:02 »
A me funziona correttamente.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re:TableView con CheckBox
« Risposta #2 il: 03 Giugno 2017, 16:01:33 »
urka!
allora non so proprio, provato a modificare anche le proprietà da QT5 a QT4, ma nulla. ???

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:TableView con CheckBox
« Risposta #3 il: 03 Giugno 2017, 16:58:28 »
Va rilevato che nel tuo codice il risultato True è legato alla scrittura in una cella di almeno un carattere (quindi anche un semplice spazio), e che pertanto la mera vergatura di un CheckBox non condiziona il risultato booleano richiesto.


« Ultima modifica: 03 Giugno 2017, 17:46:15 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:TableView con CheckBox
« Risposta #4 il: 03 Giugno 2017, 17:42:14 »
Ciao Naderit,
ti allego un progettino fatto da Fabien Bodard che potrebbe ispirarti.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re:TableView con CheckBox
« Risposta #5 il: 04 Giugno 2017, 14:29:57 »
Bene grazie all'esempio postato da Gianluigi ho risolto in questo modo ( da migliorare  il codice  ;D):
Codice: [Seleziona]
Private kb As New CheckBox[10]
Private ck As CheckBox
Private sa As ScrollArea

Public Sub Form_Open()
Dim obs As Observer
Dim i As Integer

 sa = TableView2.Children[0]
 obs = New Observer(sa) As "Scroll"
 
   With TableView2
    .W = 882
    .H = 280
    .Columns.Count = 4
    .Rows.Count = 30
  End With
   
  TableView2.Columns[0].W = 70
  TableView2.Columns[1].W = 110
  TableView2.Columns[2].W = 100

For i = 0 To 5
  With ck = New CheckBox(sa) As "Check"
    .X = TableView2.Columns[0].X
    .Y = TableView2.Rows[i].Y
    .W = TableView2[i, 0].W
    .H = TableView2[i, 0].H
    .Text = "Prova" 
    .Name = "Check"
  End With
  kb[i] = ck 'Assegna la variabile ck, appena creata, al vettore di tipo checkbox'
Next 
End

Public Sub Scroll_Scroll()
  Dim ob As Object
 Dim b As Byte
 
  For Each ob In sa.Children
  ob.Y = TableView2.Rows[b].Y - sa.ScrollY
  Inc b
  Next
 
End

Public Sub Check_Click()

TableView2[0, 1].Text = kb[0].Value
TableView2[1, 1].Text = kb[1].Value
TableView2[2, 1].Text = kb[2].Value
TableView2[3, 1].Text = kb[3].Value
TableView2[4, 1].Text = kb[4].Value
TableView2[5, 1].Text = kb[5].Value

End

Public Sub TableView2_Click()
Print TableView2.Row, TableView2.Column
End

Public Sub TableView2_Save(Row As Integer, Column As Integer, Value As String)
TableView2[row, column].Text = Value
End

Public Sub Button1_Click()
Dim i As Integer
Dim a As String
  For i = 0 To 5
    a = TableView2[i, 1].Text
   Print a
  Next
TableView2.Refresh
End
   :ciao:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:[RISOLTO]TableView con CheckBox
« Risposta #6 il: 04 Giugno 2017, 15:33:48 »
Forse non comprendo il problema, ma così non sarebbe più semplice?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re:[RISOLTO]TableView con CheckBox
« Risposta #7 il: 04 Giugno 2017, 15:56:13 »
 si il risultato mi pare simile. Dai è venuto un bel lavoretto! Spero utile ai dilettanti come me  ;D   :ciao: 

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:[RISOLTO]TableView con CheckBox
« Risposta #8 il: 04 Giugno 2017, 16:06:16 »
Su questo hai perfettamente ragione  :D, discutere dei problemi di programmazione è sempre utile a tutti e non solo ai “dilettanti”.
Qui tutti siamo dilettanti rispetto ai programmatori professionisti, ricorda che per tanto capaci diventeremo ci sarà sempre qualcuno che ne saprà più di noi.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro