Differenze tra le versioni di "Cambiare il colore di fondo di una riga cliccata in una GridView e far tornare quello di un'altra al colore iniziale"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso è quello in cui in una ''GridView'' ogni qual volta si clicca all'interno di una sua riga, questa si colora, ed un'altra riga, precedentemente colorata, torna ad assu...")
 
Riga 20: Riga 20:
 
   
 
   
 
   
 
   
  '''Public''' Sub GridView1_MouseDown()
+
  '''Public''' Sub GridView1_Click()
 
    
 
    
 
   Dim j, k As Byte   
 
   Dim j, k As Byte   

Versione delle 15:35, 4 mag 2021

Il caso è quello in cui in una GridView ogni qual volta si clicca all'interno di una sua riga, questa si colora, ed un'altra riga, precedentemente colorata, torna ad assumere il colore predefinito.

Si potrà adottare il seguente codice:

Public Sub Form_Open()

 Dim b As Byte
 
 
  With GridView1  
    .Columns.Count = 4  
    .Rows.Count = 4
  End With  

' All'inizio la prima riga in alto assume il colore giallo:
  For b = 0 To GridView1.Columns.Max
    GridView1[0, b].Background = &FFFF00
  Next
  
End


Public Sub GridView1_Click()
  
 Dim j, k As Byte  
 

' Viene attribuito il colore predefinito a tutte le righe:
  With GridView1
    For k = 0 To .rows.Max
      For j = 0 To .Columns.Max
        GridView1[k, j].Background = Color.Default
      Next
    Next
  End With
 
' Viene quindi attribuito il colore giallo alla riga cliccata:
  For j = 0 To GridView1.Columns.Max
    GridView1[GridView1.Row, j].Background = &FFFF00
  Next
 
End


Uso dei tasti Giù e Su della tastiera

Se si intendono utilizzare i tasti Giù e Su della tastiera, anziché il mouse, un possibile codice è il seguente:

Public Sub Form_Open()    
 
Dim b As Byte    
      
 With GridView1      
   .Columns.Count = 4      
   .Rows.Count = 4    
 End With      
      
' All'inizio la prima riga in alto assume il colore giallo:
 For b = 0 To GridView1.Columns.Max    
   GridView1[0, b].Background = &FFFF00    
 Next    
     
 GridView1.Row = 0  
    
End    
      
      
Public Sub GridView1_KeyPress()  
    
Dim j, k As Byte      
    

 With GridView1    
   For k = 0 To .rows.Max    
     For j = 0 To .Columns.Max    
       GridView1[k, j].Background = Color.Default    
     Next    
   Next    
 End With    
 
 Select Case Key.Code  
   Case Key.Down   
     If GridView1.Row + 1 < GridView1.Rows.Count Then   
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row + 1, j].Background = &FFFF00  
       Next  
     Else  
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row, j].Background = &FFFF00  
       Next  
     Endif  
         
   Case Key.Up  
     If GridView1.Row - 1 > -1 Then   
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row - 1, j].Background = &FFFF00  
       Next  
     Else  
       For j = 0 To GridView1.Columns.Max    
         GridView1[GridView1.Row, j].Background = &FFFF00  
       Next  
     Endif  
 End Select  
       
End

I codici dei due paragrafi precedenti possono essere anche semplicemente congiunti per ottenere l'effetto sia con il mouse che con i tasti.