Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2003
sebas78 sebas78 is offline
Registrado
 
Registrado: ago 2003
Posts: 4
Poder: 0
sebas78 Va por buen camino
Pintar un dbGRid

Hola:

quisiera saber como hacer para pintar una celda en especial de un dbgrid segun el color que el usr elige del control de colores
en este momento estoy usando el ste codigo pero no pasa nada

procedure TFPuma0058.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
inherited;
DBItems.Canvas.Brush.color := clred;
DBItems.Canvas.FillRect(rect);
DBItems.defaultdrawdatacell(Rect,Field,State);
end;

eb este caso no uso el componennte de color lo hice asi para probar y no me pinta ninguna celda de rojo. quisiera saber si tengo que poner alguna propiedad del TdbGRid o algo asi.
Gracias!!!!!!!!!!!!!!!!!!
Responder Con Cita
  #2  
Antiguo 21-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira este ejemplo que no tengo tiempo para más, a ver si te sirve:

Código:
procedure TfrFactAlbaranes.RejaDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin

     If Column.FieldName='Marcado' then
     Begin

     Reja.Canvas.Brush.Color :=ClAqua;
     Reja.Canvas.Font.Color:=ClRed;
     Reja.Canvas.Font.Style:=([fsBold]);
     Reja.DefaultDrawColumnCell(Rect,Datacol,Column,State);    
     end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 21-11-2003
sebas78 sebas78 is offline
Registrado
 
Registrado: ago 2003
Posts: 4
Poder: 0
sebas78 Va por buen camino
Si te agradesco mucho, el problema es que yo quiero pintar una celda y no toda la columna ademas quiero pintar la celda con el color que tengo almacenado como un integer en la misma celda


Muchas gracias!!!!!!!!!
Responder Con Cita
  #4  
Antiguo 26-11-2003
Xavierator Xavierator is offline
Miembro
 
Registrado: nov 2003
Posts: 31
Poder: 0
Xavierator Va por buen camino
Para que pinte lo que tu quieras, tienes la propiedad DefaultDrawing, que debe estar a false, ya que si esta a true, pinta con el modo por defecto del componente y no te hace ni caso.

Saludos, Xavierator.
Responder Con Cita
  #5  
Antiguo 26-11-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
sebas78 comentó:

Código:
procedure TFPuma0058.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  inherited;
  DBItems.Canvas.Brush.color := clred;
  DBItems.Canvas.FillRect(rect);
  DBItems.defaultdrawdatacell(Rect,Field,State);
end;
Puedo estar mal, y me baso en que el editor regularmente mantiene bien la correspondencia de nombres entre objetos/eventos creados para este objeto, aunque no es una regla, pero me parece que estas asignando el color a un objeto diferente del que maneja el evejto.

Para evitar esta posibilidad, y si tenes el evento asociado a varias rejillas, creo que podes valerte del Sender, no?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 22-07-2006
[jesusomarsanche] jesusomarsanche is offline
Miembro Premium
 
Registrado: may 2006
Posts: 11
Poder: 0
jesusomarsanche Va por buen camino
ami me funciono de la siguiente forma

utilice el codigo expuesto anteriormente pero lo cambie a los eventos del grid
getcolorcelda
getcolortexto

y reviso que la columna de la celda sea la que quiero cambiar el color utilizando acol para la posicion de la columna

Código:
procedure Tfrmvalidar.grdpreprogGetColorCelda(Sender: TObject;
  Column: TColumn; ARow, ACol: Integer; AState: TGridDrawState;
  ABrush: TBrush; AFont: TFont);
begin
   if preprog.FieldByName('error').AsInteger = 1 then  begin
      if grdpreprog.Fields[acol].DisplayName = 'COMPONENTE' then begin
        grdpreprog.Canvas.Brush.Color :=claqua;
      end;
   end;
end;
procedure Tfrmvalidar.grdpreprogGetTextoCelda(Sender: TObject;
  Column: TColumn; ARow, ACol: Integer; var Texto: String);
begin
   if preprog.FieldByName('error').AsInteger = 1 then  begin
     if grdpreprog.Fields[acol].DisplayName = 'COMPONENTE' then begin
       grdpreprog.Canvas.Font.Color := clRed;
       grdpreprog.Canvas.Font.Style := [fsBold];
     end;
   end;
end;
espero te sea de utilidad
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 00:46:13.


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