![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como poner color a filas de un DBGrid
Hola amigos !!!
Hago la siguiente consulta desde mi programa en C++ Builder a Postgres en SQL : "select * from mprimas where stock_actual < stock_minimo"; Estos resultados se muestran en un DBGrid donde figuran 4 columnas: Nombre, Stock_Actual, Stock_Minimo y Stock_Critico Lo que quiero hacer es, donde el stock_actual es inferior al stock_critico, pintar las filas de un color cualquiera asi resaltan del resto que no tienen color. Espero que se entienda. Saludos. |
#2
|
||||
|
||||
Al final de esta página tienes varios enlaces sobre ese tema, también puedes hacer una búsqueda en clubdelphi, se ha tratado infinidad de veces ese asunto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Si, ya busque por todos lados, pero ninguno está expresado para C++ Builder.
Ya lo logré hacer en un StringGrid, pero no puedo todavia en un DBGrid. Lo que más me dificulta es poder comparar 2 filas del DBGrid, como puse en el ejemplo anterior. Si alguien puede pasarme alguno de estos ejemplos en C++ se lo agradecería muchisimo. Saludos. |
#4
|
||||
|
||||
Pon el código que lo veamos.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Hola ToritoCapo.
Probá este código: Código:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { if(DBGrid1->DataSource->DataSet->FieldByName("STOCK_ACTUAL")->Value < DBGrid1->DataSource->DataSet->FieldByName("STOCK_CRITICO")->Value) { DBGrid1->Canvas->Brush->Color = clRed; DBGrid1->Canvas->Font->Color = clWhite; DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State); }; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 06-04-2011 a las 00:06:09. |
#6
|
|||
|
|||
Esto seria muy parecido a lo que necesito hacer, pero en C++
Se están comparando dos columnas como yo necesito. Saludos.
Última edición por Casimiro Notevi fecha: 06-04-2011 a las 00:24:12. |
#7
|
||||
|
||||
Añade la línea indicado por ecfisa, te la he copiado:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
|||
|
|||
ecfisa, funcionó bien el código que me pasate !!!
Lo que no mencioné, es que los datos están en String y no en enteros, ahora tendría que ver la manera de compararlos, pero con los valores convertidos a numéricos. Una ayudita más y no los molesto por un rato jeje. Después pongo el código que funcionó bién para que sirva para otros. Saludos. |
#9
|
||||
|
||||
Rectifico, mira la contestación completa de ecfisa, ahí tienes la solución.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
|||
|
|||
Bueno, acá pongo el código final, funciona perfecto para mi caso.
Código:
if(StrToFloat(DBGrid->DataSource->DataSet->FieldByName("stock_actual")->Value) < StrToFloat(DBGrid->DataSource->DataSet->FieldByName("stock_critico")->Value)) DBGrid->Canvas->Brush->Color = 0xFFAAFF; //Pinta el fondo de las filas DBGrid->Canvas->FillRect(Rect); DBGrid->Canvas->Font->Color = clBlack; //Color del texto DBGrid->DefaultDrawColumnCell(Rect, DataCol, Column, State); Quiero agradecer a ecfisa y a Casimiro Notevi, por la excelente ayuda que me brindaron, y la insistencia por resolver el tema. Saludos !!!!! |
#11
|
||||
|
||||
Hola ToritoCapo.
Me alegra mucho que hayas podido darle solución. Pero creo importante aclararte un punto. No es necesaria la función StrToFloat cuando usas la propiedad Value ya que esta es de tipo Variant y C++ se encarga de evaluar su tipo y hacer las conversiones pertinentes. Es decir que el código que te puse funciona correctamente sin StrToFloat, que es lo que te dijo Casimiro en su último post. ![]() Esta es una asignación totalmente válida: Código:
double x= DataSet->FieldByName("stock_actual")->Value; Código:
double y= DataSet->FieldByName("stock_actual")->AsFloat; ![]() Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
|||
|
|||
Buenas, recupero este hilo porque he encontrado parte de lo que quiero hacer con mi programa. Ahora me gustaría controlar el color con un TEdit, es decir, yo tengo una lista de catálogos con los días que restan para terminar la promoción, entonces si yo escribo 5, que me coloree en rojo los días restantes menor o igual que el número que he puesto en el TEdit. Realmente lo que no sé es coger los valores de una función para pasarla a otra (DBGrid: OnDrawColumnCell -> TEdit: OnChange).
Un saludo. |
#13
|
||||
|
||||
Por favor, borlandpablo, si participas en el tema iniciado por otro forero, debe ser para ayudarle a solucionar su problema, pero no para que expongas el problema que tienes tú. Gracias por tu comprensión
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como poner color a una palabra buscada | Alexander | Conexión con bases de datos | 7 | 12-09-2006 02:22:43 |
Cambiar color filas DBGrid | Iskariote0087 | Varios | 5 | 23-01-2006 15:57:01 |
Color DBGrid según grupo de filas | Cabanyaler | OOP | 11 | 28-11-2005 08:22:32 |
Listview vsReport : Como pintar parejas de filas de un solo color | wvidela | Varios | 2 | 17-05-2005 21:47:57 |
Filas Diferente Color En Un Dbgrid | jsc | Varios | 2 | 27-04-2004 17:32:44 |
![]() |
|