Colorear StringGrid al hacer click
Hola gente, tengo un stringgrid que lo cargo con información en tiempo de ejecución. Lo que necesito hacer es que ni bien se termine de cargar los datos, todas las filas tengan un único color y que al clickear en una fila se pinte de color (por ejemplo verde) toda la fila, y al volverla a clickear vuelva al color original. Esto lo necesito para identificar cuales filas he seleccionado para un posterior tratamiento.
Otra forma que me serviría es poniendo un checkbox dentro del stringgrid, pero he leído en el foro y no me ha salido. Aguardo cualquier sugerencia. Gracias!!!:D |
OPCIÓN 1:
Crear una columna oculta en el StriungGrid (Columm Width = 0) de forma que almacene 0 o 1; El valor de esa columna es el que te sirve para pintar diferente. Hace la función del Checkbox que quieres añadir. Cada vez que pulsas en una fila cambias el valor de esa columna. El pintado de un color u otro irá en relación a ese valor. OPCIÓN 2: Yo utilizaría una estructura anexa (por ejemplo un TList o TStrinsList -mejor este ordenado-) para guardar las filas que tienes seleccionadas. (1) Al pulsar un Click, buscas si la fila está en la lista: 1a) Si está, borras ese indice de la lista 1b) Si no está, añades ese índice a la lista 2) Repintar el Grid En el pintado del grid, lo que tienes que hacer es pintar de diferente color los índices de la lista. |
Graacias por la respuesta
Hola Neftalí, gracias por la pronta y efectiva respuesta. Ya lo he podido hacer. Ahora lo que necesito es poder mostrar un numero fijo de filas, es decir, suponte que tengo 30 filas cargadas, yo quisiera ir mostrando de 10 en 10 en el stringgrid, eso es factible???
Muchas gracias nuevamente. Saludos!:D |
Cita:
¿Qué significa ir mostrando de 10 en 10? ¿Cómo cambias a las siguientes? |
Hola rruffino, una función que salte a las siguientes X filas creo que no hay, tendrías que hacerte una mas o menos así:
Saluditos |
Explico un poco mejor
Amigo Neftali, gracias por responder.
Te trato de explicar un poco mejor. Yo cargo el stringgrid con lo que saco de una consulta de una tabla. Lo que quiero saber si se puede hacer es que el stringrid vaya mostrando de a 10 filas para evitar usar el scrollbar. De esta forma, si yo en la consulta obtuve 30 registros que pase al stringgrid, mostraria los primeros 10 en el stringgrid, luego de alguna forma deberia decirle al stringgrid que muestre del 11 al 20 y luego del 21 al 30. Espero me hayas entendido. Gracias!! |
Ok, ahora lo he entendido.
Sí puedes hacerlo, básicamente se trata de cargar los que quieras. Imagino que al ser un TStringGrid y los datos que provienen de una tabla debes hacer la carga manualmente con un:
En este caso basta con que realices un FOR y cargues sólo los 10 primeros registros que te devuelve la consulta. Mantienes el DataSet (Query) abierto, y para cargar los siguientes, vuelves a utilizar un FOR desde el registro en el que te habías quedado. Como alternativa puedes volcar el resultado sobre un TclientDataset, cerrar la consulta, y consumir los datos desde ahí, pero en todo aso, esto puedes hacerlo si es necesario en un segundo paso, cuando ya funcione lo primero. |
La franja horaria es GMT +2. Ahora son las 21:34:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi