Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2004
josem josem is offline
Miembro
 
Registrado: mar 2004
Posts: 23
Poder: 0
josem Va por buen camino
Unhappy Pintar Celdillas especificas en una grilla

Hola Foro.
Nececito pintar celdillas especificas en una grilla a partir de una tabla de datos. Me refiero a gupos de celdas con distintos colores en distintas partes de la grilla.

Por Ej:
Un sistema para controlar reservas Hoteleras.

Depto. Estado
12345678901234567890123456789 <=Dias del mes
------------------------------------------------
101 OOORRRRRMMDDDDDDDRRR
102 RRRDDDDDDRRRRRMMMRRR
..
..
505

O= Ocupado
R= Reservado
M= Mantencion
D= Disponible

*En este pequno ejemplo. Por decir algo:
- El Depto. 101, en la grilla deberia tener pintada de Azul las celdillas
cullo valor en la tabla sea = 'O',
deberia tener pintada de Verde las celdillas cullo valor en la tabla sea =
'R', deberia tener pintada de Rojo las celdillas cullo valor en la tabla
sea = 'M', y de Amarillo las celdillas cullo valor en la tabla sea = 'D'.
Lo mismo para el departamento 102, y asi con los demas.

Alguien puede darme una mano con esto.???
Gracias.

Saludos
Jose Miguel Bakulic V.
Responder Con Cita
  #2  
Antiguo 17-07-2004
Migue Rguez Migue Rguez is offline
Miembro
 
Registrado: may 2003
Ubicación: Sanlúcar de Bda. (Cádiz)
Posts: 10
Poder: 0
Migue Rguez Va por buen camino
Buenas...

Una forma es la siguiente:

Lo primero... establece la propiedad "DefaultDrawing" del DGrid a True.

Y lo segundo... en el evento "OnDrawColumnCell" incluye un código como este:
If DBGrid1.DataSource.DataSet.FindField('REC').AsBoolean = True then
begin
DBGrid1.Canvas.Brush.Color := clGreen;
end
else
begin
DBGrid1.Canvas.Brush.Color := clRed;
end;
DBGrid1.Canvas.FillRect(Rect
Esto comprueba el valor del campo REC y dependiendo de si es True o False colorea de celda correspondiente al campo REC en Verde o en Rojo.

¿Te resultó así claro?


Saludos
Responder Con Cita
  #3  
Antiguo 19-07-2004
josem josem is offline
Miembro
 
Registrado: mar 2004
Posts: 23
Poder: 0
josem Va por buen camino
Talking

Hola Foro.,
Sin darme cuenta al presentar mi consulta, omiti un factor muy
importante. Y es que yo estoy actualmente trabajando con iconos en la
primera columna de la Grilla. Y el punto es que no logro pintar celdillas si
ocupo BitMap.O sea, no puedo pintar celdillas y al mismo tiempo dibujar
iconos. Saben por que pasa esto. Y como solucionarlo.?????.

La rutina que estoy ocupando para dibujar los BitMaps es esta:

procedure TFMantencionDepto.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
{
D = Disponible Limpia ==> Dibuja un Rombo Verde
O = Ocupado ==> Dibuja una maleta de viajero
N = No Disponible ==> Dibuja un Rombo Rojo
S = Disponible Sucia ==> Dibuja un Rombo Amarillo

with Sender as TDBGrid do
begin
if Column.FieldName <> '' then
DefaultDrawColumnCell(Rect, DataCol, Column, State)
else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'D' ) then
Canvas.StretchDraw( Rect, RVerde.Picture.Graphic )
else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'O' ) then
Canvas.StretchDraw( Rect, Maleta.Picture.Graphic )
else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'N' ) then
Canvas.StretchDraw( Rect, RRojo.Picture.Graphic )
else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'S' ) then
Canvas.StretchDraw( Rect, RAmar.Picture.Graphic )
else
Canvas.StretchDraw( Rect, RVerde.Picture.Graphic );
end;
end;

Gracias.
Saludos
Jose Miguel Bakulic V.
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


La franja horaria es GMT +2. Ahora son las 10:19:37.


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