Comunidad Gambas-es

Versión completa: Es posible cambiar el color de la fila seleccionada en un GridView
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Hola

Cuando uno hace un click en una celda, la fila donde esta esta celda se ilumina con un color. ¿Es posible cambiar el color de la selección o es algo que va emparejado con el sistema operativo?

Gracias.
(04-05-2021, 18:47)gambafeliz escribió: [ -> ]¿Es posible cambiar el color de la selección o es algo que va emparejado con el sistema operativo?

Que yo sepa no se puede. El color esta relacionado con el tema del escritorio no con el sistema operativo.
Saludos.
No se si te puede dar ayuda esta pagina del wiki italiano:

   https://www.gambas-it.org/wiki/index.php...e_iniziale
Hola vuott, observo por el código que lo que hacen es simplemente eliminar la selección natural por una reescrita desde la parte de usuario-programador. Si me sirve, gracias. Aunque no estoy del todo contente. Supone hacer un módulo, clase para todo mi código, no se, lo pienso.

Gracias, tincho. No se si es muy osado por mi parte pero existe alguna posibilidad que me recomiendes o me recomendéis alguna forma de cambiar este color con algún programa o parte del sistema que edite esto en el escritorio "GNOME 3.30.2", por supuesto sin compromiso, te lo dejo en tu mano si quieres. Por supuesto voy a mirar yo también para ver si encuentro algo, pero os lo pido por que yo comparado con ustedes llevo en Linux nada.

Mil gracias a los dos.
Pruebe este código en una aplicación gráfica.
GAMBAS
  1. hGridview As GridView
  2.  
  3. Public Sub Form_Open()
  4.  
  5.   Dim iRow, iCol As Integer
  6.  
  7.   With Me
  8.     .H = 675
  9.     .W = 575
  10.     .Arrangement = Arrange.Vertical
  11.     .Padding = 5
  12.  
  13.   With hGridview = New GridView(Me) As "hGridview"
  14.     .Expand = True
  15.     .Columns.Count = 10
  16.     .Rows.Count = 30
  17.  
  18.   For iCol = 0 To hGridview.Columns.Max
  19.     For iRow = 0 To hGridview.Rows.Max
  20.       hGridview[iRow, iCol].Text = "Hola"
  21.     Next
  22.   Next
  23.  
  24.  
  25. Public Sub hGridview_Click()
  26.  
  27.   Dim iRow, iCol As Integer
  28.  
  29.   For iCol = 0 To hGridview.Columns.Max
  30.     For iRow = 0 To hGridview.Rows.Max
  31.       hGridview[iRow, iCol].Background = Color.Default
  32.       hGridview[iRow, iCol].Foreground = Color.Default
  33.       hGridview[iRow, iCol].Font.Bold = False
  34.     Next
  35.   Next
  36.  
  37.   For iCol = 0 To hGridview.Columns.Max
  38.     hGridview[Last.Row, iCol].Background = Color.Red          ''***
  39.     hGridview[Last.Row, iCol].Foreground = Color.Yellow       ''***
  40.     hGridview[Last.Row, iCol].Font.Bold = True
  41.   Next
  42.  


Prueba ésto.
Se Puede cambiar también el tamaño y color de la fuente, que el alto de la fila se ajuste al texto, etc. Pero con eso te haces una idea.

Saludos
Me puede valer, aunque tengo que seguir pensando como hacerlo más simple. Es que sino tengo que implementarlo en todos los Grid, aunque ya se que se puede globalizar con un módulo, por ejemplo.

Muchísimas gracias de verdad. Aunque se me ha metido en la cocorota que tengo que buscar algo mas mágico, por favor, esto no es cosa tuya ya sabes que es más que suficiente lo que me has sugerido, soy yo que soy muy cabezón.
Cita:Es que sino tengo que implementarlo en todos los Grid
No necesariamente. Crea un control que herede de gridview y que lo haga automáticamente. Sólo tienes que usar ese control en lugar de los GridView.
Mis disculpas Shordi. Tienes razón, lo he estado meditando todo, y sí, es suficiente tal como me dices. Voy a implementar lo que me cuentas, gracias. Otra cosa para quien le interese, mirad este hilo de cogier, en su foro hay cosas muy muy interesante.

https://forum.gambas.one/viewtopic.php?t=562
(14-05-2021, 18:19)gambafeliz escribió: [ -> ]Me puede valer, aunque tengo que seguir pensando como hacerlo más simple. Es que sino tengo que implementarlo en todos los Grid, aunque ya se que se puede globalizar con un módulo, por ejemplo.

Muchísimas gracias de verdad. Aunque se me ha metido en la cocorota que tengo que buscar algo mas mágico, por favor, esto no es cosa tuya ya sabes que es más que suficiente lo que me has sugerido, soy yo que soy muy cabezón.

De todas formas, y sólo por el placer de volver a menear los dedos oxidados, te adjunto un ejemplo de cómo queda un control propio que te hace el trabajo de forma transparente.Sólo tienes que añadir la clase "MiGrid" al proyecto y voilá.

Ha sido divertido.

Saludos

El código es muy simple:


GAMBAS
  1. ' Gambas class file
  2.  
  3.  
  4.  
  5. Public Const _Properties As String = "*"
  6. Public Const _Group As String = "View"
  7. Public Const _Similar As String = "GridView"
  8. Public Const _drawWith As String = "GridView"
  9.  
  10. Private $oldColumn As Integer
  11.  
  12.  Public Sub _new()
  13.  
  14.      $obs = New Observer(Me) As "grid"
  15.  
  16.  
  17. Public Sub grid_Change()
  18.     
  19.     Me[$oldrow, $oldColumn].Background = Color.TextBackground
  20.     Me[$oldrow, $oldColumn].Foreground = Color.Foreground
  21.     Me[Me.row, Me.column].Background = Color.SelectedBackground
  22.     Me[Me.row, Me.column].Foreground = Color.SelectedForeground
  23.     $oldcolumn = Me.Column
  24.     $oldrow = Me.Row
  25.  


Se pueden hacer multitud de cosas con éste sistema. Si te interesa puedo subir alguna clase como ésta que hace más cosas y, por tanto, es más compleja.

¿Alguien me puede explicar cómo poner código en colorines? El botón ese de la gamba cocida no me funciona, al parecer.
Huh Huh
Páginas: 1 2