![]() |
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. |
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.
|
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. |
Pon el código que lo veamos.
|
Hola ToritoCapo.
Probá este código: Código:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, |
Esto seria muy parecido a lo que necesito hacer, pero en C++
Se están comparando dos columnas como yo necesito. Saludos.
|
Añade la línea indicado por ecfisa, te la he copiado:
|
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. |
Rectifico, mira la contestación completa de ecfisa, ahí tienes la solución.
|
Bueno, acá pongo el código final, funciona perfecto para mi caso.
Código:
if(StrToFloat(DBGrid->DataSource->DataSet->FieldByName("stock_actual")->Value) < Quiero agradecer a ecfisa y a Casimiro Notevi, por la excelente ayuda que me brindaron, y la insistencia por resolver el tema. Saludos !!!!! |
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. |
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. |
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 franja horaria es GMT +2. Ahora son las 08:48:11. |
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