Al usar TCanvas perdi la selección !!!
hola amigos
Estoy usando un DBGrid y al realizar la consulta pues coloreo las filas pares para que resalten, sucede que las filas coloreadas al ser seleccionadas(en el momento en que se le da click encima) pierden la visualizacion (el valor que estan mostrando) y no se ponen del tipico color azul (como casi todo lo que se selecciona en windows). :confused::confused::confused: posteo el codigo que estoy usando para que me lo revisen y si existe alguna solucion estare muy agradecido Código:
|
Hola Impadron.
Probá de este modo: Código:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, |
La celda coloreada aun sigue sin cambair de color y las letras se muestran en blanco, con el clMoneyGreen no hay problema porque se ve bien pero con el StringToColor("0x00f7fbfd") que es un crema un tanto mas claro me hace falta que al estar seleccionado las letras de la fuente me salgan en negro o que se señale en Azul como es normalmente para que las letras del fondo al ser blancas se puedan distinguir.
saludos |
Lo que sucede es que estás utilizando un color constante para todos los estados de la celda. El estado de una celda (si está seleccionada o no) es indicado en el parámetro State de tipo TGridDrawState.
El color constante que estás utilizando es "0x00f7fbfd". Debes utilizar una condicional que pruebe el estado de la celda, y utilizar el color clHotlight cuando la celda esté seleccionada. Saludos, Chris |
y como accedo a los valores de State, lo que he hecho es esto
Código:
|
En C++ no sé cómo sería el código, no escribo en ese lenguage. Pero en Delphi tu código más o menos debería ser así:
|
Hola Impadrón.
No había probado con el color que pusiste por lo que no veía el problema. En realidad no perdes la selección. El texto, que en la selección esta en color blanco, se confunde con el color '0x002899d2' ya que es muy similar. Yo lo resolví así: Código:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, |
Hola.
Te agrego un ejemplo más completo, en el cuál seleccionás los colores de fondo y fuente en ambos casos (par/impar): Código:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, |
Gracias amigos ecfisa y Chris
Estaba probando el codigo que Chris habia escrito en Pascal y pues no puedo convertirlo a C++, ahora voy a probar con tu solucion ecfisa de todas formas si alguien puede convertir el codigo del amigo Chris seria excelente. Saludos |
Cita:
Saludos, Chris |
Cita:
La conversión del código de Chris es: Código:
if(ADOQuery1->RecNo % 2) |
Gracias ecfisa por la traducción! :)
Solo que se te ha escapado la negación en la segunda condicional. Código:
if(ADOQuery1->RecNo % 2) Chris |
Cita:
Entiendo lo que comentas, pero aparte de la selección, creo que de todas maneras las celdas tienen que tener colores diferentes cuando son pares o impares. Ahora voy a probar evaluando la condición del estado. Un saludo. Edito: Tenés toda la razón Chris :), gracias por la observación, ya incluí el "!" en la condición del código del mensaje superior |
Gracias amigos por su ayuda !!!
|
Cita:
Saludos, Chris |
he unido los dos codigos, jejeje y al hacerlo me di cuenta de que la negación debe ir dentro del parentesis (me dio error cuando lo corri !!!) :D:D:D
Cita:
|
Hola Chris.
Probé con tu sugerencia y funciona perfectamente.;) Cita:
Saludos. |
Al final quedo de esta manera, espero que le sea de utilidad al proximo que presente la misma dificultad
Código:
Saludos y Gracias |
La franja horaria es GMT +2. Ahora son las 13:16:04. |
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