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.
 
Riga 5: Riga 5:
 
   
 
   
 
   Dim b As Byte
 
   Dim b As Byte
 
+
   
    
+
   With GridView1   
  With GridView1   
+
    .Columns.Count = 4   
    .Columns.Count = 4   
+
    .Rows.Count = 4
    .Rows.Count = 4
+
  End With   
  End With   
 
 
   
 
   
 
  <FONT color=gray>' ''All'inizio la prima riga in alto assume il colore giallo:''</font>
 
  <FONT color=gray>' ''All'inizio la prima riga in alto assume il colore giallo:''</font>
  For b = 0 To GridView1.Columns.Max
+
  For b = 0 To GridView1.Columns.Max
    GridView1[0, b].Background = &FFFF00
+
    GridView1[0, b].Background = &FFFF00
  Next
+
  Next
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 22: Riga 21:
 
  '''Public''' Sub GridView1_Click()
 
  '''Public''' Sub GridView1_Click()
 
    
 
    
   Dim j, k As Byte
+
   Dim j, k As Byte
 
 
 
   
 
   
 
  <FONT color=gray>' ''Viene attribuito il colore predefinito a tutte le righe:''</font>
 
  <FONT color=gray>' ''Viene attribuito il colore predefinito a tutte le righe:''</font>
  With GridView1
+
  With GridView1
    For k = 0 To .rows.Max
+
    For k = 0 To .rows.Max
      For j = 0 To .Columns.Max
+
      For j = 0 To .Columns.Max
        GridView1[k, j].Background = Color.Default
+
        GridView1[k, j].Background = Color.Default
      Next
+
      Next
    Next
+
    Next
  End With
+
  End With
 
    
 
    
 
  <FONT color=gray>' ''Viene quindi attribuito il colore giallo alla riga cliccata:''</font>
 
  <FONT color=gray>' ''Viene quindi attribuito il colore giallo alla riga cliccata:''</font>
  For j = 0 To GridView1.Columns.Max
+
  For j = 0 To GridView1.Columns.Max
    GridView1[GridView1.Row, j].Background = &FFFF00
+
    GridView1[GridView1.Row, j].Background = &FFFF00
  Next
+
  Next
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  
Riga 47: Riga 44:
 
  '''Public''' Sub Form_Open()     
 
  '''Public''' Sub Form_Open()     
 
    
 
    
Dim b As Byte     
+
  Dim b As Byte     
 
        
 
        
 
   With GridView1       
 
   With GridView1       
Riga 66: Riga 63:
 
  '''Public''' Sub GridView1_KeyPress()   
 
  '''Public''' Sub GridView1_KeyPress()   
 
      
 
      
Dim j, k As Byte       
+
  Dim j, k As Byte       
 
      
 
      
 
 
   With GridView1     
 
   With GridView1     
 
     For k = 0 To .rows.Max     
 
     For k = 0 To .rows.Max     

Versione attuale delle 16:47, 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.