Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2013
rodrinig rodrinig is offline
Miembro
 
Registrado: dic 2007
Posts: 28
Poder: 0
rodrinig Va por buen camino
Pintar DBGrid dependiendo del Valor de un Registro

Hola Foro, que tal, tengo un duda de un mal funcionamiento en el DBGrid, (no por el comp, sino por mi programación). Tengo un cds con un campo que tiene un valor y dependiendo de ese valor pongo el color de la fila. En el sig codigo que hice me hace esto , como me muestra en la imagen adjunto. Este es el codigo:

Ojo esto tiene un timer que va actualizando a cada rato el cds .

Código Delphi [-]
  with Sender as TDBGrid do
  begin
    case cdsDes['OR_TIPO'] of
      1: begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;
      2: begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;
      3: begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;
      5: begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;
      6: begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;
    else
         begin
           Canvas.Brush.Color := tCOLOR(SELF.cdsDesTIO_COLOR.AsString);
           DefaultDrawColumnCell(Rect, DataCol, Column, State);
         end;

Miren que busque pero no puedo hacerlo funcionar.
Muchas gracias por su atencion

Saludos
Rodrigo Iñiguez
Imágenes Adjuntas
Tipo de Archivo: jpg ImagenMal.jpg (34,7 KB, 9 visitas)
Responder Con Cita
  #2  
Antiguo 16-10-2013
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 rodrinig.

Crea una nueva aplicación, poné un TClientDataSet, un TDataSource, un TTimer un TDBGrid y en tiempo de diseño hace lo siguiente:
  • Doble click sobre el TClientDataSet
  • Click botón derecho -> Click sobre "New Field..."
  • Name: OR_TIPO, Type: Integer
  • Click sobre botón OK.

Luego proba este ejemplo:
Código Delphi [-]
...
implementation

const
  MAX = 200;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Timer1.Enabled := False;
  Randomize;
  with ClientDataSet1 do
  begin
    CreateDataSet;
    Open;
    for i:= 1 to MAX do
    begin
      Append;
      FieldByName('OR_TIPO').AsInteger := Random(5)+1;
      Post;
    end;
    First;
  end;
  Timer1.Interval := 3000;
  Timer1.Enabled  := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: Integer;
begin
  Timer1.Enabled := False;
  with ClientDataSet1 do
  begin
    DisableControls;
    try
      First;
      for i:= 1 to MAX do
      begin
        Edit;
        FieldByName('OR_TIPO').AsInteger := Random(5)+1;
        Next;
      end;
      First;
    finally
      EnableControls;
    end;
  end;
  Timer1.Enabled := True;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  C : TColor;
begin
  with Sender as TDBGrid do
  begin
    case ClientDataSet1.FieldByName('OR_TIPO').AsInteger of
      1: C:= clLime;
      2: C:= clYellow;
      3: C:= clMoneyGreen;
      4: C:= clRed;
      5: C:= clAqua;
    end;
    Canvas.Brush.Color := C;
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
...

Saludos

Edito: Aunque es obvio, me olvidé de mencionar que asocies el DBgrid al DataSource y este al ClientDataSet para poder visualizar el resultado.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 16-10-2013 a las 22:16:36. Razón: Aclaración
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
en un tchart como poner los marks dependiendo su valor jazmin Gráficos 0 12-11-2009 15:07:30
Seleccionar un campo dependiendo de su valor Alexis De la Cr MySQL 2 13-11-2008 20:58:44
Imprimir dependiendo de valor Edit molina669 Impresión 7 30-07-2007 16:34:09
Suma/resta de un campo dependiendo del valor de otro huanque SQL 2 11-09-2004 20:23:47
¿Como cambiar el color de letra dependiendo del valor de una BD? Raisen Impresión 2 26-07-2004 14:03:04


La franja horaria es GMT +2. Ahora son las 08:09: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