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 due 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.

Nel semplice 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()  

 With GridView1
   Print "   Riga n. "; .Row
   Print "Colonna n. "; .Column

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

End


2a modalità

Le seconda 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