![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
mmm... comparto la opinión de casimiro, las soluciones presentadas son como cañonazos.
Por mi parte creo que este problema necesita nada más que una especie de switch, o alternador. Una simple variable booleana que controle el color utilizado.
BoolSwitch y UltimoValor son variables privadas del formulario. Creo que con este código se pudiera solucionar el problema. Sino pues creo que de él se puede partir. Saludos, Chris Última edición por Chris fecha: 05-01-2011 a las 19:40:16. |
|
#2
|
||||
|
||||
|
Estoy siguiendo este hilo con interés. En algún momento voy a verme en la tesitura de implantar algo similar. Y creo que el principal problema no es "pintar" las filas cuando se "cargan" los datos. Eso, con los sistemas de switch que se van comentando es fácil. Yo creo que el principal problema es la navegación, el hacer click en cualquier sitio. Creo que si en el registro de la tabla no hay una información que nos indique si hay que pintar esa celda de un color o de otro, los valores del "switch" no van a ser válidos. Mi opinión en que "debe haber una información en el registro que indique de color hay que pintar esa celda".
Saludos,
__________________
http://www.gestionportable.com |
|
#3
|
||||
|
||||
|
Cita:
Así que creo que la única opción es la del campo que indique el color o algo así. Pero todavía se aceptan más propuestas... habrá premio al que obtenga el resultado correcto ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Pues yo no veo otra salida amigo. Ya sea que se lleve una estructura fuera o en el mismo dbgrid con un campo calculado y el uso de técnicas "flags booleanas" es necesario contar con un artilugio para llevar ese conteo y poder determinar con que color pintar cada registro.
Saludos, |
|
#5
|
||||
|
||||
|
Mejorando código....
Es un gasto de memoria, es cierto. Pero la solución en el código es una simplificación de la solución primera propuesta por delphius. Aún no funciona? Dinos que esto ya lo tomamos como reto EDITO: Aclaro que GrupoImpar es una variable global privada Última edición por Chris fecha: 06-01-2011 a las 23:33:58. |
|
#6
|
||||
|
||||
|
Hola de nuevo.
No quiero ser pesado, pero ya lo comenté en un post anterior. Se hace un procedimiento almacenado y se llama al mismo poniendo la where que se quiera, ya que puede ser invocado como una tabla o query. esta where puede ser montada 'al vuelo'. Llamadas
Espero que sea de utilidad. Saludos Aupa Casi, no desfallezcas ahora !!
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#7
|
||||
|
||||
|
Cita:
Prueba y evalúa las opciones. Si tienes problemas nos avisas y le caemos a madrazos a tu jefe y/o cliente por ese requerimiento ![]() Si te funciona, ya sabes... me envías un jamón (la pata entera, por supuesto) por correo ![]() Saludos, |
|
#8
|
||||
|
||||
|
Cita:
Creo que se está llegando a la conclusión de que esa parte es la que no funciona en este sistema, no se puede comparar con el valor del "último valor" porque puede ser cualquier registro, por ejemplo cuando ha llegado al último registro y ahora se posiciona en el primero, los colores pueden ser iguales, o no, depende de si el número de "asientos" es par o impar. O sea, pintarlo, lo pinta perfecto, tanto ese método como todos los demás que se han sugerido, pero en cuanto empiezas a moverte por el grid arriba y abajo, con teclas o con el ratón, yendo al primero o al último con ctrl-inicio y ctrl-fin, página arriba y abajo, etc. siempre acaba descontrolando los colores por lo dicho anteriormente, el "anterior" no tiene por qué ser el que está "antes" en el dbgrid. Entonces las únicas soluciones posibles son las que sacan el color del propio registro, independientemente de lo que tengan los otros registros anteriores o posteriores. Ya sea mediante procedimiento almacenado, tabla en memoria, etc. Bueno, esto que comento es lo que me parece según lo visto, puedo estar totalmente equivocado y ahora alguno expone un código que consigue el resultado esperado.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#9
|
||||
|
||||
|
Cita:
|
|
#10
|
||||
|
||||
|
Cita:
Por otra parte, la opción de un campo calculado que determina el coor con el que debe pintarse, pues me suena extraña. El valor de un campo calculado, normalmente, debe determinarse en términos de otros valores en el mismo registro, y si podemos usar valores en el mismo registro para saber de qué color hay que pintar, entonces no necesitamos el campo calculado sino simplemente hacer el cálculo en el evento DrawColumnCell. // Saludos |
|
#11
|
||||
|
||||
|
Entonces, ¿qué sugieres?
![]() Que llevo tres días con esta tontería y no termina de ir bien, algo tan "simple" :S
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#12
|
||||
|
||||
|
No se que dirán ustedes pero creo que acabamos de encontrar el nuevo reto delphi
![]() Yo digo que el gran maestros de maestros de centésimo dan Román nos ilustre Yo no tener más neuronas. ![]() Saludos, |
|
#13
|
||||
|
||||
|
Ja, ja. Yo no dije que tuviera la solución, simplemente comenté mi renuencia a creer en las ya existentes
![]() Yo opino que el switch no funciona porque el pintado de celdas no necesariamente es secuencial. Sin embargo, esta técnica del switch podría usarse desde la consulta sql. Por ejemplo, en MySQL puedo hacer algo parecido a esto:
La columna "colorear" alterna entre 1 y 0 según cambia el valor del campo asiento, de manera que la condición en el evento DrawColumnCell se reduce a:
Supongo que en Firebird también existen las variables de usuario así que podría hacerse algo similar. // Saludos |
|
#14
|
||||
|
||||
|
Cita:
![]() ![]() Casimiro, una pregunta, porque necesitas hacerlo de esta forma? Saludos ![]()
__________________
Aleca |
|
#15
|
||||
|
||||
|
Quizá es muy simple mi respuesta pero yo diría que para poder distinguir fácilmente los grupos
![]() // Saludos |
|
#16
|
||||
|
||||
|
Pues sí, para separar los distintos asientos:
![]() Dibujar es fácil, funciona perfecto con todos los ejemplos que han puesto todos los compañeros, el problema viene cuando te mueves por el grid arriba y abajo, llegas al final y al principio, etc. El ejemplo de Román no he podido probarlo porque desconozco el tema de las variables de usuario en firebird, estoy buscando información al respecto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#17
|
||||
|
||||
|
Cita:
Por las dudas... ![]() Saludos ![]()
__________________
Aleca |
|
#18
|
||||
|
||||
|
El procedimiento almacenado para Firebird sería algo como este (probado en una tabla de prueba que tengo):
Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Alternar dos colores en las lineas de un DBGrid. | jealousy | OOP | 4 | 07-05-2014 15:45:23 |
| colores en un dbgrid | frf_84 | Gráficos | 2 | 07-12-2004 12:14:57 |
| dbgrid con colores | Giniromero | Conexión con bases de datos | 7 | 08-07-2004 16:26:29 |
| dbgrid en colores | sebas | Conexión con bases de datos | 2 | 09-07-2003 09:16:14 |
| Colores en una DBGrid | REDCOM | Varios | 2 | 26-05-2003 20:42:58 |
|