Inserire un ulteriore testo in una GridView sempre nell'ultima riga
Vai alla navigazione
Vai alla ricerca
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 <= GridView1.Rows.Count Then
For c As Short = 0 To GridView1.Rows.Max - 1
GridView1[c, 0].RichText = GridView1[c + 1, 0].RichText
GridView1[c, 1].RichText = GridView1[c + 1, 1].RichText
GridView1[c, 2].RichText = GridView1[c + 1, 2].RichText
Next
Else
' Se tutte e tre le righe iniziali della "GridView" sono state riempite con il testo, viene aggiunta una riga in ultimo:
GridView1.Rows.Count += 1
Endif
GridView1[GridView1.Rows.Max, 0].RichText = "Testo 1<SUP>a</sup> cella" '[nota 2]
GridView1[GridView1.Rows.Max, 1].RichText = "Testo 2<SUP>a</sup> cella"
GridView1[GridView1.Rows.Max, 2].RichText = CStr(i)
' Fa sì che sia sempre visibile l'ultima riga della "GridView":
GridView1.ScrollY = i * GridView1.Rows.H
End
2° codice
[nota 3]
Private $aTotale As New String[]
Private $hText As TextBox
Private $hGrid As GridView
Static Public Sub _init()
Application.Theme = "Gambas"
End
Public Sub Form_Open()
Dim hControl As HBox
Dim hButton As ToolButton
Dim hLabel As Label
With Me
.H = 500
.W = 500
.Arrangement = Arrange.Vertical
.Margin = True
.Resizable = False
.Spacing = True
End With
Me.Show
With $hGrid = New GridView(Me)
.Columns.Count = 2
.Expand = True
.Columns[0].Expand = True
.Columns[1].Width = 150
.Columns[1].Alignment = Align.Right
.Grid = False
End With
With hControl = New HBox(Me)
.H = 35
.Spacing = True
End With
With hButton = New ToolButton(hControl) As "btnAdd"
.W = 35
.Picture = Picture["icon:/22/add"]
End With
With hLabel = New Label(hControl)
.Alignment = Align.Right
.Text = "TOTALE DOVUTO :"
.Expand = True
End With
With $hText = New TextBox(hControl)
.Width = 150
End With
With $hGrid
.Rows.Count = 1
Print .H
Print .Rows.H
.Rows.Count = (.H \ .Rows.H)
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 $hGrid
If $hGrid[0, 0].Text <> "" Then
.Rows.Count += 1
$hGrid[.Rows.Max, 0].Text = aConsumazioni[p]
$hGrid[.Rows.Max, 1].Text = Format(aPrezzi[p], "$,0.00")
$aTotale.Push($hGrid[.Rows.Max, 1].Text)
Else
$hGrid[0, 0].Text = aConsumazioni[p]
$hGrid[0, 1].Text = Format(aPrezzi[p], "$,0.00")
$aTotale.Push($hGrid[0, 1].Text)
For r = 1 To .Rows.Max
Swap $hGrid[r, 0].Text, $hGrid[r - 1, 0].Text
Swap $hGrid[r, 1].Text, $hGrid[r - 1, 1].Text
Next
Endif
End With
$hText.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] Riguardo all'uso del codice HTML con la GridView vedere la seguente pagina: Oggetti grafici e di testo che supportano il codice HTML
[3] Questo codice è stato suggerito da Gianluigi, membro del forum www.gambas-it.org