Differenze tra le versioni di "Inserire un ulteriore testo in una GridView sempre nell'ultima riga"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
Il caso è quello in cui, ogni qual volta deve essere inserito del testo in una ''GridView'', esso viene inserito nell'ultima riga spostando verso le righe superiori quello preesistente.
+
Il caso è quello in cui, ogni qual volta deve essere inserito del testo in una ''GridView'', esso viene inserito nell'ultima riga spostando verso le righe superiori quello preesistente. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  
 
Mostriamo due possibili codici.
 
Mostriamo due possibili codici.
Riga 47: Riga 47:
  
 
====2° codice====  
 
====2° codice====  
<SUP>&#091;[[#Note|nota 1]]&#093;</sup>
+
<SUP>&#091;[[#Note|nota 2]]&#093;</sup>
 
  Private $aTotale As New String[]
 
  Private $aTotale As New String[]
 
   
 
   
Riga 132: Riga 132:
  
 
=Note=
 
=Note=
[1] Questo codice è stato suggerito da [https://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi], membro del forum www.gambas-it.org
+
[1] Vedere anche questa pagina: [[Aggiungere righe in una GridView da codice mediante un tasto]]
 +
 
 +
[2] Questo codice è stato suggerito da [https://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi], membro del forum www.gambas-it.org

Versione delle 10:31, 3 lug 2023

Il caso è quello in cui, ogni qual volta deve essere inserito del testo in una GridView, esso viene inserito nell'ultima riga spostando verso le righe superiori quello preesistente. [nota 1]

Mostriamo due possibili codici.

1° codice

Private i As Integer


Public Sub Form_Open()

 With GridView1
   .Columns.Count = 3
   .Rows.Count = 3
   .Rows.Height = 21
   .Columns[0].Width = GridView1.W * 0.45
   .Columns[1].Width = GridView1.W * 0.45
   .Columns[2].Width = GridView1.W * 0.05
   .Columns[2].Alignment = Align.Center
 End With

End


Public Sub Button1_Click()

 Inc i

 If i < 4 Then 
   For c As Short = 0 To GridView1.Rows.Max - 1
     GridView1[c, 0].Text = GridView1[c + 1, 0].Text
     GridView1[c, 1].Text = GridView1[c + 1, 1].Text
     GridView1[c, 2].Text = GridView1[c + 1, 2].Text
   Next 
 Else 
' Se tutte e tre le righe iniziali della "GridView" sono state popolate con il testo, viene aggiunta una riga in ultimo:
   GridView1.Rows.Count += 1 
 Endif

 GridView1[GridView1.Rows.Max, 0].Text = "Testo 1"
 GridView1[GridView1.Rows.Max, 1].Text = "Testo 2"
 GridView1[GridView1.Rows.Max, 2].Text = CStr(i)

' Fa sì che sia sempre visibile l'ultima riga della "GridView":
 GridView1.ScrollY = i * GridView1.Rows.H

End

2° codice

[nota 2]

Private $aTotale As New String[]

Static Public Sub _init()

 Application.Theme = "Gambas"

End

Public Sub Form_Open()

 Me.Show
 TextBox1.Width = 150
 With GridView1
   .Columns.Count = 2
   .Rows.Count = 1
   Print .H
   Print .Rows.H
   .Rows.Count = (.H \ .Rows.H)
   .Columns[0].Expand = True
   .Columns[1].Width = 150
   .Columns[1].Alignment = Align.Right
 End With

End

Public Sub btnAdd_Click()

 Dim aConsumazioni As String[] = ["PANINO FARCITO", "ACQUA FRIZZANTE 1/2", "ACQUA NATURALE 1/2", "BIBITA GASATA", "BIRRA", "FETTA DI TORTA", "COPPA GELATO", "BICCHIERE VINO"]
 Dim aPrezzi As Float[] = [3.5, 1.0, 0.95, 2.5, 3.0, 2.5, 1.9, 1.8]
 Dim r, p As Integer
' un numero a caso
 p = Rand(0, 7)
' Se la griglia è piena aggiunge una riga e la riempe altrimenti riempe la prima riga e con swap la posiziona
 With GridView1
   If GridView1[0, 0].Text <> "" Then 
     .Rows.Count += 1
     GridView1[.Rows.Max, 0].Text = aConsumazioni[p]
     GridView1[.Rows.Max, 1].Text = Format(aPrezzi[p], "$,0.00")
     $aTotale.Push(GridView1[.Rows.Max, 1].Text)
   Else 
     GridView1[0, 0].Text = aConsumazioni[p]
     GridView1[0, 1].Text = Format(aPrezzi[p], "$,0.00")
     $aTotale.Push(GridView1[0, 1].Text)
     For r = 1 To .Rows.Max
       Swap GridView1[r, 0].Text, GridView1[r - 1, 0].Text 
       Swap GridView1[r, 1].Text, GridView1[r - 1, 1].Text 
     Next
   Endif
 End With
 TextBox1.Text = ReturnAddString($aTotale)

End

Private Function ReturnAddString(value As String[]) As String

' Ritorna la somma dei numeri 'stringa' come una stringa formattata currency
 Dim sCurr As String
 Dim iCurr As Long

 For i As Integer = 0 To value.Max
   sCurr = ReturnStringInteger(value[i])
   If IsNull(sCurr) Then Continue
   iCurr += CLong(sCurr)
 Next
 Return Format((iCurr / 100), "$,0.00")

End

Private Function ReturnStringInteger(value As String) As String

' Ritorna una stringa in forma di numero intero
 value = Trim(Replace(value, "€", ""))
 value = Trim(Replace(value, "$", ""))
 value = Trim(Replace(value, "£", ""))
 value = Replace(value, ".", "")
 value = Replace(value, " ", "")
 value = Replace(value, ",", "")
 Return value

End


Note

[1] Vedere anche questa pagina: Aggiungere righe in una GridView da codice mediante un tasto

[2] Questo codice è stato suggerito da Gianluigi, membro del forum www.gambas-it.org