Individuare la cella della GridView nella quale si è cliccato

Da Gambas-it.org - Wikipedia.

Per individuare la cella di una GridView (così come anche di una TableView) sulla quale si è cliccato con il puntatore del mouse, vi sono almeno tre modalità.

1a modalità

La prima modalità prevede l'individuazione ad incrocio del numero d'indice della colonna e quello della riga.
Per fare ciò, si utilizzano rispettivamente le Proprietà:

GridView1.Column As Integer

e

GridView1.Row As Integer

che verranno poste nella routine dell'Evento "_Click()" della Classe GridView, sollevato nel caso in cui l'utente clicca all'interno di una cella.

Esempio pratico:

Public Sub Form_Open()

 With GridView1  
   .Columns.count = 3  
   .Rows.Count = 3  
 End With

End


Public Sub GridView1_Click()

 GridView1[GridView1.Row, GridView1.Column].Background = Color.Red

End


2a modalità

Le seconda modalità prevede l'uso della Proprietà ".Current" della Classe GridView.
In realtà con questa modalità si potranno raccogliere alcuni valori posseduti dalla cella individuata, ma non le sue coordinate.

Nell'esempio che segue, vengono raccolti non solo gli indici della colonna e della riga che definiscono la cella cliccata, ma anche il testo in essa contenuto attraverso la Proprietà ".Current.Text".

Public Sub Form_Open()

 With GridView1  
   .Columns.count = 3  
   .Rows.Count = 3  
 End With  
 
 GridView1[0, 0].Text = "zero e zero"
 GridView1.Columns[0].Width = -1      ' [nota 1]
 GridView1[0, 1].Text = "zero e uno"
 GridView1[0, 2].Text = "zero e due"
 GridView1[1, 0].Text = "uno e zero"
 GridView1[1, 1].Text = "uno e uno"
 GridView1.Columns[1].Width = -1
 GridView1[1, 2].Text = "uno e due"
 GridView1[2, 0].Text = "due e zero" 
 GridView1[2, 1].Text = "due e uno" 
 GridView1[2, 2].Text = "due e due"  
 
End


Public Sub GridView1_Click()  

 Print "Testo raccolto: "; GridView1.Current.Text  

End


3a modalità

La terza modalità prevede l'acquisizione degli indici della riga e della colonna puntati rispettivamente da una posizione verticale ed orizzontale definita dal cursore del mouse che ha scatenato l'evento clic.

Public Sub GridView1_MouseUp()

 Dim r, c As Integer
 
 r = GridView1.RowAt(Mouse.Y)
 c = GridView1.ColumnAt(Mouse.X)

 Print r, c

End


Note

[1] Vedere questa pagina: Adattare automaticamente l'altezza e la larghezza di una cella di una GridView al testo contenuto