Problema con DbGrid.
Hola amigos del club delphi, tengo un problema para colorear la fila de una grilla según el contenido de un campo especifico en la tabla, osea, en la tabla tengo un campo llamado estatus dentro del cual guardo los siguientes registros (Pendiente y Finalizado), lo que he tratado de hacer es que cuando ese campo en la grilla este como “Finalizado” la fila adquiera un color azul y cuando presente “Pendiente” se muestra en color rojo. Traté de realizarlo de las siguientes maneras y no he logrado nada. No quiere funcionar.
if table1estatus := 'finalizado' then begin DBGrid1.canvas.brush.color :=clBlue; end else DBGrid1.canvas.brush.color :=clRed; DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State) End; End; La otra forma: if table1estatus := 'finalizado' then begin DBGrid1.canvas.brush.color :=clBlue; end else if table1estatus := 'pendiente' then begin DBGrid1.canvas.brush.color :=clRed; DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State) End; End; Esta línea me da error y no me permite ejecutar el programa, solo se ejecuta cuando la comento y una vez ejecutado el código no funciona( DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State), acaso será que no funciona con campos tipos carácter o me falta algo? :confused: Le agradecería mucho su ayuda, gracias de antemano. |
y en que evento estas ejecutandolo???
porq no encierras el codigo entre etiquetas delphi para poder leerlo bien |
Tenías el DefaultDrawColumnCell dentro del segundo bloque de la condición. Debe ser ejecutado en ambos casos por lo que hay que sacarlo fuera. |
Asunto
Pués lo he hecho y nada.
Me gustaría saber si es que este bloque (DBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State) no permite la ejecución debido a que estoy trabando con campos tipos String.
La otra forma:
|
No tiene nada que ver que sea tipo String o cualquier otro tipo.
De nuevo insisto en que tu código tiene que ser de la siguiente manera para que te funciona correctamente : Al menos, en el código que expones, sobra un End; y después no sé si tu mismo te aclaras donde debe de ir el begin y el end de cada bloque. He modificado tu código dejando el begin y end para cada bloque. Pero de hecho dichos begin y end sobran en el caso particular propuesto, por lo que podría quedar así : tal y como expuse anteriormente. Además en la línea del DBGrid1.DefaultDrawColumnCell te falta terminarla con ';'. La otra forma que pones, también le sobra un end; y tampoco está terminada con ';' la fila del DefaultDrawColumnCell. Fíjate bien en los bloques Begin End. Ahí es donde tienes el error. No en si es de tipo String u otro tipo. |
Hola.
Cuando compilas, ¿no te da ningún error?. Más que nada lo digo por esto: Código Delphi [-]if table1estatus := 'finalizado' then Un saludo. |
Anda ! :eek: Vaya, ni siquiera me había fijado en lo que comenta Luis M. que es totalmente cierto.
|
Asunto
Muchas gracias amigo Gluglu, bueno en cuanto a lo que comentas amigo Luis del " := " funciona perfecto, ahí no era donde por lo visto estaba el problema sino más bien en la última línea de código y que gracias a la aclaración realizada por el Sr. Gluglu pude resolver.
Gracias a ambos por su valioso tiempo.:p |
La franja horaria es GMT +2. Ahora son las 12:53:21. |
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