Inicio > Ejemplos, VCL > Dibujar porcentaje en una celda de un Grid

Dibujar porcentaje en una celda de un Grid

Share Button

En este ejemplo se muestra cómo dibujar manualmente una barra de porcentaje en una celda de un DBGrid. Presuponemos que en la celda en la que vamos a dibujar la barra se está mostrando un valor entre 0 y 100 que pertenece a un porcentaje. Este ejemplo muestra cómo se hace para un componente TDBGrid estándard; No es muy difícil adaptarlo para utilizarlo en un TStringGrid o similar.

Dibujar porcentaje en Grid

Download Descargar ejemplo

(Actualizacion 17/05/2021) He actualizado el ejemplo para mostrar cómo se utiliza el mismo evento para realizar esta acción sobre varias columnas.

Download Descargar ejemplo con 2 columnas

Vota este post
Categories: Ejemplos, VCL Tags: , , ,
  1. Juanlu
    martes, 30 de junio de 2009 a las 09:57 | #1

    Me da error al intentar compilar. En la línea:

    StrValue := STR_EMPTY;

    ¿A que puede ser debido?

  2. Neftalí
    martes, 30 de junio de 2009 a las 11:51 | #2

    @Juanlu
    Hola Juanlu.
    Tal vez se me paso, STR_EMPTY es una constante que suelo utilizar para la cadena vacía. O defines la constante:

    const
    STR_EMPTY = ”;

    O directamente cambias esa referencia por: ”

    Un saludo.

  3. Neftalí
    martes, 30 de junio de 2009 a las 11:56 | #3

    @Juanlu
    Hola.
    Acabo de ver que la constante y algunas más, están definidas en la unit UDrawcell. ¿No las habrás borrado sin querer?

    Un saludo.

  4. Ali Reyes
    miércoles, 13 de junio de 2018 a las 19:53 | #4

    Amigo buenas, gracias por el ejemplo, aqui esoy varios años despues de publicado, tengo una consulta que me llena un DBGRID, copio el ejemplo completo pero aun asi no me funciona.

    if not (Column.FieldName = ‘avancetarea’) then begin
    Exit;

    en esta linea coloco el nombre de la columna que quiero convertir en la barra de progreso pero no me lo toma, cuando depuro y veo que “Fieldname” me esta tomando, me toma el primero de mi DBGRID “consectarea” podrias ayudarme por favor =(

  5. jueves, 14 de junio de 2018 a las 11:02 | #5

    @Ali Reyes

    Hola Ali.
    Es normal que si depuras, primero te llegue la primera columna del DGBRID a ese punto. Te llegarás TODAS las columnas.
    Ese código (si te fijas tiene un NOT delante), lo que hace es evitar que te pinte la barra de progreso en el resto de columnas que no son la que quieres pintar.

    De ahí que si no es la columna que quieres, ejecute un Exit.

    Si colocas un punto de ruptura en la línea siguiente al Exit, debería pararse cuando llegue la columna que deseas.

    Un saludo.

  6. Pedro-Juan
    domingo, 16 de mayo de 2021 a las 12:42 | #6

    Hola Neftali.
    En varias ocasiones me he servido de tu código y aprovecho para agradecerte tu dedicación.
    En este caso, lo que quiero es poner dos porcentajes, dos campos que contienen esos porcentajes, en un mismo dbgrid.
    Lo he probado de varias maneras pero no consigo (o no sé) hacerlo.
    Si me pudieras dar una pista, te lo agradecería mucho.
    Muchas gracias y un saludo.

  7. lunes, 17 de mayo de 2021 a las 09:43 | #7

    @Pedro-Juan
    Hola Pedro.
    He actualizado el ejemplo para poder hacer lo mismo con 2 columnas. Se puede aprovechar el mismo ejemplo anterior, pero añadiendo la misma columna.

    Un saludo.

  8. Pedro-Juan
    lunes, 17 de mayo de 2021 a las 09:58 | #8

    @Germán Estévez

    Hola Neftali.
    Justo lo que quería. ¡Y tan sencillo!
    Muchas gracias y un saludo.

  1. Sin trackbacks aún.