Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2012
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Ocultar valores de celda en dbgrid

Hola gente, tengo un dbgrid que apunta a una tabla que tiene un campo tipo y un campo importe. En la grilla tengo que poner dos campos para hacer referencia al mismo campo importe. El tema es que dependiendo del valor del campo tipo, al valor de importe debo mostrarlo en una u otra columna. He buscado por los hilos y he encontrado algo similar, pero no es lo que busco, lo que busco es por ejemplo: la grilla tiene las dos columnas importe, si el valor del campo tipo es igual a X entonces el importe lo muestro en la primer columna que muestra importes y la otra queda nulo o vacio, si no es x, la primer columna queda vacia o nula y la segunda muestra el importe.
Espero haber sido mas o menos claro. Desde ya gracias!
Responder Con Cita
  #2  
Antiguo 21-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rrufino.

Simplificando el concepto, un TDBGrid es la representación visual de los datos de una tabla. Esta representación se organiza en filas y columnas, donde cada columna representa a un campo y una fila a un registro.
Entonces el problema se presenta claramente, por que para realizar lo que deseas, estaríamos necesitando un campo que no existe físicamente en la tabla...

Las alternativas que se me ocurren son darle a la celda diferentes colores dependiendo del valor del campo o, si deseas usar dos columnas y el propósito es solo a fines de presentación, usar un TStringGrid.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 21-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

como te comenta ecfisa podrías cambiar el color de la fuente al del fondo del DBGrid para que no se vea el valor del campo y parezca que está vacio, aunque si tienes configurado el DbGrid para que se vea la fila seleccionada o la celda, se verá con el fondo azul y la letra blanca automáticamente por lo que se verá el valor, puedes poner una imagen tapando la celda haciendo la comprobación en el OnDrawnOnColumnCell, o algo así, del DbGrid, el tema de poner una imagen se ha tratado varias veces en el foro, así que, puedes echar un vistazo.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #4  
Antiguo 21-11-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.467
Poder: 21
newtron Va camino a la fama
Hola.

Igual digo una tontería pero ¿no es posible poner dos columnas del DbGrid con el mismo campo (importe) y poner visible o no el contenido según le interese?

Saludos
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 21-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola amigo newtron

Tiempo ya sin verte, se te extrañaba...

Y no. No estas diciendo ninguna tontería, no se me había ocurrido esa posibilidad...

Siendo 2 y 3 las columnas a ocultar segun el valor del campo importe (50 por ejemplo), ¿ Vos te referís a algo parecido a esto ?
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with Sender as TDBGrid do
  begin
    if(DataSource.DataSet.FieldByName('Importe').AsFloat <= 50) and (DataCol = 3) then
      DBGrid1.Canvas.FillRect(Rect);
    if (DataSource.DataSet.FieldByName('Importe').AsFloat > 50) and (DataCol = 2) then
      DBGrid1.Canvas.FillRect(Rect);
  end
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 21-11-2012 a las 21:13:05.
Responder Con Cita
  #6  
Antiguo 22-11-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.467
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola amigo newtron

Tiempo ya sin verte, se te extrañaba...

Y no. No estas diciendo ninguna tontería, no se me había ocurrido esa posibilidad...

Siendo 2 y 3 las columnas a ocultar segun el valor del campo importe (50 por ejemplo), ¿ Vos te referís a algo parecido a esto ?
Igualmente amigo ecfisa, en estas fechas ando especialmente liado ultimando proyectos que se tienen que poner en marcha a principios de año.

Efectivamente, a eso me refería, imagino que ya el compañero rruffino tiene opciones para elegir la que más le guste.

Saludos.
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 22-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
No se que motor de BBDD usas pero también podrías poner una única columna que saldría don el valor adecuado ya desde la consulta SQL, de esta forma:

Código SQL [-]
  • SELECT
  • Articulo,
  • CASE
  • WHEN Tipo = 1
  • THEN Importe1
  • ELSE Importe2
  • END AS Importe
  • FROM Facturas;

  • Saludos.
    __________________
    Confórmate con lo que tienes pero anhela lo que te falta.
    Responder Con Cita
      #8  
    Antiguo 22-11-2012
    Avatar de ecfisa
    ecfisa ecfisa is offline
    Moderador
     
    Registrado: dic 2005
    Ubicación: Tres Arroyos, Argentina
    Posts: 10.508
    Poder: 36
    ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
    Cita:
    Empezado por ElDioni Ver Mensaje
    No se que motor de BBDD usas pero también podrías poner una única columna que saldría don el valor adecuado ya desde la consulta SQL, de esta forma:

    Código SQL [-]
  • SELECT
  • Articulo,
  • CASE
  • WHEN Tipo = 1
  • THEN Importe1
  • ELSE Importe2
  • END AS Importe
  • FROM Facturas;

  • Saludos.
    Esa también es buena idea

    Y como las buenas ideas despabilan a los dormidos (lease yo), caigo en la cuenta que de ese modo también se podrían lograr las dos columnas:
    Código SQL [-]
    SELECT FECHA,
           CONCEPTO,
           ETC,
           COALESCE((CASE WHEN INGRESO <= :VALOR THEN ENTRADA END),'') AS COL1,
           COALESCE((CASE WHEN INGRESO  > :VALOR THEN ENTRADA END),'') AS COL2
    FROM TABLA

    Saludos.
    __________________
    Daniel Didriksen

    Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
    Responder Con Cita
    Respuesta



    Normas de Publicación
    no Puedes crear nuevos temas
    no Puedes responder a temas
    no Puedes adjuntar archivos
    no Puedes editar tus mensajes

    El código vB está habilitado
    Las caritas están habilitado
    Código [IMG] está habilitado
    Código HTML está deshabilitado
    Saltar a Foro

    Temas Similares
    Tema Autor Foro Respuestas Último mensaje
    Contenido de una celda de un DBGRid patxim SQL 8 24-05-2012 08:18:38
    Ocultar celda en stringgrid trex2000 Varios 4 05-03-2009 09:32:51
    Ocultar un campo y sus registros en un dbgrid ingabraham Varios 6 19-01-2009 20:17:33
    valor de una celda de un dbgrid alopete Varios 4 17-10-2007 17:32:46
    Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 20:53:28


    La franja horaria es GMT +2. Ahora son las 14:33:02.


    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
    Copyright 1996-2007 Club Delphi