![]() |
Hacer que una columna de un DbGrid aparezca distinta según valor
Hola a tod@s.
Necesito que en un DbGrid, si una columna de ese DbGrid, contiene el valor 0.00, entonces que no aparezca este valor sólo que se quede en blanco esa columna, no muestre nada. Coloco el DefualtDrawing a False, e intento manejar el evento OnDrawColumCell consigo algunas cosas pero no lo que me propongo. Desde ya muchas gracias, y feliz verano. Que calor esta haciendo este año. :) :cool: :) |
Hola Aprendiendo, aquí tambien hace un fuerte calor. Aunque no veo del todo clara tu pregunta te paso un ejemplo que puede ser que te ayude, supon que tenemos un dbgrid con un campo en la columna nº 10 que se llama 'surtida' y es booleano, yo quiero que aquellos valores del campo que sean verdaderos se pinten de aqua y solo se lean los que son falsos, entonces hago lo siguiente:
Código:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; Espero te ayude el ejemplo y vete a la costa para que refresques del calor. Saludos |
En el evento gettext del campo puedes decidir que valor mostrar. Saludos |
Mi problema es que no sé en que posición estará la columna, sólo sé el nombre de la columna, pero no su posición. Y esa posicion en el dbgrid puede variar a gusto del usuario.
¿como averigo esa posición en ese momento? Saludos. |
Con la propuesta anterior es indiferente la posición.
|
Muchas gracias Casimiro Notevi, al final lo he solucionado de esta forma:
De esta forma esté donde esté la columna lo hace perfecto. Gracias. |
Por cierto se me olvidaba, una cuestión más, en el DbGrid anterior lo que hago es colorear una celda, pero en vez de eso, podría poner en la celda un Gráfico sencillo, como un semaforo o un circulo rojo, verde, amarillo, el color que sea. Es decir dependiendo del dato que lea de la tabla, indico un gráfico en dicha celda. Algo parecido al punto verde que aparece en este foro al lado del nombre del usuario.
Gracias..... |
También vale.
|
|
Cita:
Muchas Gracias ecfisa. Muy util la información. |
Hola, si lo que quieres es poner solo un semáforo píntalo igual que lo estabas haciendo, con el canvas.brush y el font.color, cambiándolo a cllime y clred, según lo que necesites.
Así no tienes que cargar una imagen e irá más rápido. Saludos. |
Cita:
Gracias por la aportación. |
La franja horaria es GMT +2. Ahora son las 06:59:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi