|
|
(7 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | ==Ordinare valori ''numerici''==
| + | #REDIRECT [[Ordinare_i_valori_all'interno_di_una_colonna_di_una_GridView]] |
− | | |
− | Ipotizziamo di avere una ''GridView'' con 5 righe e 3 colonne. In una prima fase avremo nella prima colonna 5 numeri posti in modo "non ordinato" (li sceglieremo casualmente per ottenere l'esempio). Successivamente, in quella colonna tali valori saranno inseriti e mostrati in modo "ordinato" crescente.
| |
− | | |
− | | |
− | '''Public''' Sub Form_Open()
| |
− |
| |
− | Dim j, k As Byte
| |
− | Dim a As New Byte[]
| |
− |
| |
− | With GridView1
| |
− | .Columns.Count = 3
| |
− | .Rows.Count = 5
| |
− | End With
| |
− |
| |
− | For j = 0 To 4
| |
− | k = Rnd(1, 100) <FONT color=#006400>' ''li individuo casualmente per creare il nostro esempio''</font>
| |
− | a.Add(k) <FONT color=#006400>' ''li pongo in una variabile array''</font>
| |
− | Print a[j] <FONT color=#006400>' ''li vedo in console come individuati in modo casuale''</font>
| |
− | Next
| |
− |
| |
− | <FONT color=#006400>' ''provvedo a ordinarli in modo crescente:''</font>
| |
− | a.Sort(gb.Ascent)
| |
− |
| |
− | <FONT color=#006400>' ''li piazzo nella 1^ colonna così come finalmente ordinati:''</font>
| |
− | For j = 0 To 4
| |
− | GridView1[j, 0].Text = a[j]
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | ==Ordinare valori ''stringa''==
| |
− | Possiamo ordinare all'interno delle colonne, come più in generale all'interno di un array, anche valori ''stringa''.
| |
− | | |
− | Private a As New String[]
| |
− |
| |
− |
| |
− | '''Public''' Sub Form_Open()
| |
− |
| |
− | Dim j As Byte
| |
− |
| |
− | <FONT color=#006400>' ''impostiamo 6 colonne e 3 righe alla GridView:''</font>
| |
− | With GridView1
| |
− | .Columns.Count = 6
| |
− | .Rows.Count = 3
| |
− | End With
| |
− |
| |
− |
| |
− | <FONT color=#006400>' ''Imponiamo una stringa in ciascuna delle tre celle della 1^ colonna:''</font>
| |
− | For j = 0 to 2
| |
− | With GridView1[j, 0]
| |
− | <FONT color=#006400>' '' coloriamo di verde la nostra colonna:''</font>
| |
− | .Background = Color.Green
| |
− | <FONT color=#006400>' '' per "semplificare" l'esempio, mettiamo solo un carattere:''</font>
| |
− | .Text = Chr(80 - j)
| |
− | End With
| |
− |
| |
− | <FONT color=#006400>' '' Inseriamo ciascun carattere in una variabile stringa array,
| |
− | ' ''perché "solo così", potremo utilizzare una funzione di Gambas
| |
− | ' ''per poter procedere al riordino dei caratteri.
| |
− | ' ''Prendiamo quei caratteri *dall'interno di ciascuna cella* della colonna:''</font>
| |
− | a.Add(GridView1[j, 0].Text)
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim j As Byte
| |
− |
| |
− | <FONT color=#006400>' ''Nonostante vi siano dei caratteri, è possibile effettuare anche
| |
− | ' ''con essi al loro riordino ! Riordino che avverrà nel rispetto
| |
− | ' ''della sequenza imposta nel protocollo ASCII. Provvediamo, dunque,
| |
− | ' ''ad ordinare qui i caratteri in modo "ascendente" (dalla A alla Z):''</font>
| |
− | a.Sort(gb.Ascent)
| |
− |
| |
− | <FONT color=#006400>' ''Raggiungiamo così il nostro obiettivo finale di vedere "ordinati"
| |
− | ' ''all'interno della 1^ colonna:''</font>
| |
− | For j = 0 to 2
| |
− | GridView1[j, 0].Text = a[j]
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | Sarà semplice, come ora mostrato, se il primo carattere delle ''stringhe'' (qualunque lunghezza esse abbiano) è una lettera dell'alfabeto; ma se dinnanzi alle lettere c'è una <SPAN style="text-decoration:underline">quantità di caratteri numerici {[[#Note|1]]} diversa</span> da una stringa rispetto ad un'altra, il comportamento della funzione di Gambas, per effettuare il riordino, cambia.
| |
− | Infatti, se per esempio facciamo compiere il riordino (<SPAN style="text-decoration:underline">ascendente</span>, come prima) di queste tre stringhe: "''55z''", "''111p''" e "''9a''", il riordino prenderà in considerazione il <SPAN style="text-decoration:underline">primo</span> carattere sulla base del protocollo ASCII. In tal caso avremo questo riordino:
| |
− | <FONT color=#B55555>
| |
− | <BR>111p
| |
− | <BR>55z
| |
− | <BR>9a</font>
| |
− | e <SPAN style="text-decoration:underline>non</span> il contrario, come ci aspetteremmo !
| |
− | | |
− | Per ovviare a questo inconveniente, uno stratagemma può essere quello di far aggiungere degli <SPAN style="text-decoration:underline">zero</span> dinanzi al primo carattere, in maniera tale che ciascuna stringa iniziale, alla quale saranno stati aggiunti quegli zero, abbia così lo <SPAN style="text-decoration:underline">stesso numero di caratteri</span> delle altre stringhe presenti nell'array. Prendendo le stringhe di prima, insomma dovremo per esempio avere:
| |
− | <BR>0111p
| |
− | <BR>0055z
| |
− | <BR>0009a
| |
− | | |
− | | |
− | Facendo riferimento al codice sopra mostrato, faremo queste variazioni:
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim j As Byte
| |
− | Dim s as string
| |
− |
| |
− | For j = 0 To 2
| |
− | s = String$(5 - Len(GridView1[j, 0].Text), "0") & GridView1[j, 0].Text
| |
− |
| |
− | <FONT color=#006400>' ''Carichiamo quelle stringhe così modificate nella variabile array:''</font>
| |
− | a.Add(s)
| |
− |
| |
− | Next
| |
− | | |
− | e procedendo quindi al riordino mediante il predetto metodo ''variabile_Array.<FONT color=#B55555>Sort</font>'', riusciremo ad ottenere il riordino di quelle particolari stringhe; ed avremo la nuova disposizione degli elementi all'interno dell'array come segue:
| |
− | <BR>0009a
| |
− | <BR>0055z
| |
− | <BR>0111p
| |
− | | |
− | Successivamente elimineremo gli zero che abbiamo ''strategicamente'' aggiunto:
| |
− | | |
− | For j = 0 To 2
| |
− | a[j] = Replace(a[j], "0", "")
| |
− | Next
| |
− | | |
− | e ripiazziamo, così, nella 1<SUP>a</sup> colonna quelle tre stringhe, ri-ordinate e ripulite dagli zero che avevamo aggiunto:
| |
− | | |
− | For j = 0 To 2
| |
− | GridView1[j, 0].Text = a[j]
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | cosìcché avremo alla fine il riordino delle stringhe iniziali, e raggiunto il nostro obiettivo:
| |
− | <FONT color=#B55555>
| |
− | <BR>9a
| |
− | <BR>55z
| |
− | <BR>111p</font>
| |
− | | |
− | =Note=
| |
− | [1] Attenzione ! Stiamo qui parlando di ''caratteri'' che rappresentano numeri, e non di valori di tipo numerico (Byte, Float, Integer, Long).
| |