![]() |
![]() |
| 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
|
||||
|
||||
|
Hola,
Pues a como lo entiendo para hacer lo que buscas deberías leer el campo en cuestión, y compararlo con el anterior leído. En caso de ser diferente, se altera el color y se pinta con ese. En otro caso sigue pintando por el defecto. Inicialmente se lee el primer registro y se decide el color inicial y se guarda en una variable auxiliar el valor del campo de este registro. Se pinta el primer registro con el color inicial. En lo sucesivo se va comparando el valor del campo con el de la variable auxiliar y en caso de ser diferente se guarda en variable auxiliar este valor, se altera el color. Para lograr la alteración entre dos colores yo tendría algo como esto: type ColorDoble = array[boolean] of TColor; De ese modo tendría los dos colores, por ejemplo:
Y de modo que cuando se cumpla:
Provocar un cambio en el color elegido por pintar, Algo como:
La idea no es ofrecer el código exacto. No tengo Delphi a mano, pero al menos orientar un poco las cosas. Saludos, |
|
#2
|
||||
|
||||
|
Sí, la idea es esa, Delphius, aunque no termina de quedar bien.
Pienso que el problema puede venir por lo siguiente, pongo un ejemplo: empezamos pintando en blanco primer registro (asiento, suelen ser varios registros por asientos) nuevo registro... pintamos en negro nuevo registro... pintamos en blanco Se acabó... se posiciona al principio del dbgrid... y en memoria tenemos el último color, el blanco. Si ahora movemos el cursor... pintará de negro. O sea, estamos en el primer registro que era blanco y ahora lo pinta de negro, se están intercambiando los colores. Esto no ocurre cuando el número de asientos es par, acabamos en negro y se posiciona al principio, si movemos el cursor... pintará de blanco, que es el inicial, por lo tanto saldrá bien. El mismo problema sucede (no sé por qué) cuando hay asientos con un sólo registro, no será nunca habitual porque en contabiildad será siempre como mínimo 2 registros (apuntes) por asiento. En fin, puede que todo sea ya que estoy cansado de esto y mejor lo dejo para mañana con las ideas más claras ![]() Aunque seguiré un rato más ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
|
¿Te refieres a que eso se descuadra cuando nos desplazamos por los registros, alterando el cursor?
¿No consideraste trabajar con otras dbgrids más especializadas? Quizá en una de esas hay alguna que te facilite la cosa. Yo también estoy en cero amigo. Saludos, |
|
#4
|
||||
|
||||
|
Sí, los hay, pero cuando me encargaron este proyecto, lo primero que pregunté fue: ¿qué importe tiene presupuestado este proyecto?, y mis jefes se miraron las caras y contestaron: "cero", "nada".
Así que todo lo hago "a mano", lo más algunos componentes libres que los adapto a mis requerimientos. Luego me meten prisa diciendo que estoy tardando demasiado.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
La otra posibilidad que se ocurre es disponer de alguna estructura que almacene la distribución de colores basándose en la posición de los registros.
Por ejemplo: 1 - Blanco 3 - Rojo 10 - Blanco 11 - Rojo ... De ese modo diríamos que los dos primeros registros van de blanco, desde el 3ro al 9no va de rojo, el 10mo blanco... y así podríamos armar una lista almacenando un "ítem" cada vez que se detecte un cambio. Lo que se haría es que al lanzar la consulta, llevar un procedimiento que se encargue de analizar el conjunto de datos y genera esta estructura. Ya con esta estructura de datos se podría pintar los registros sin problemas. Se evaluaría en base al RecNo y de allí determinar el color que le corresponde. No se si se me entiende. Cada vez que se desplazace sobre el DBGrid o se repintase se examinaría esta estructura y se pintaría con el color correspondiente ya que tenemos toda la referencia. Saludos, |
|
#6
|
||||
|
||||
|
Sí, te entiendo, aunque tener que llegar a estos extremos para hacer algo así es como se dice normalmente: matar moscas a cañonazos
![]() En fin, ya sí me voy a dormir, que son casi las 6am y mañana (dentro de un rato) veré cómo lo hago. Gracias!!!
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
No acabo de entender del todo el problema.
Entiendo perfectamente que puedas ordenar por fecha, pero no entiendo que sea sólo por ese campo. Bien dices que lo normal es que un asiento tenga dos apuntes mínimos, partida y contrapartida. Por lo tanto, bajo mi punto de vista, deberemos ordenar por fecha y asiento, ya que si no ( insisto que es una opinión mía ), la información no tiene sentido ( o lo pierde). Por lo tanto, si ordenas por FECHA y ASIENTO, las soluciones más simples que se han manejado creo que serían válidas. Corrigeme si me equivoco, ya que me interesa saber tu opinión. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#8
|
||||
|
||||
|
Creo que el problema viene que, cuando pintamos la primera columna y preguntamos si el dato cambia, cambiamos el color (correcto); pero no podemos cambiar la variable que controla dicho cambio, porque entonces, el resto de las columnas volverían a cambiar.
He probado con esto y me ha funcionado:
Prueba a ver si te vale Un saludo Última edición por ElKurgan fecha: 05-01-2011 a las 09:54:37. |
|
#9
|
||||
|
||||
|
ATHLETIC DE BILBAO 1 - BARCELONA 0
El ATHLETIC a octavos de final en la copa !! ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
![]() |
| 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 |
|