Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Colorear los registros del DBGrid con un parámetro (https://www.clubdelphi.com/foros/showthread.php?t=81579)

borlandpablo 27-11-2012 10:04:58

Colorear los registros del DBGrid con un parámetro
 
Buenas, quiero colorear los registros de un DBGrid pasándole un número de un TEdit y que al pulsar TButton lo coloree automáticamente. El parámetro dependerá es de si el número de días es menor que el que se le pasa por el TEdit es menor o igual que cada uno de los registros.

Os paso lo que tengo hecho con un día específico.
Código:

void __fastcall TXVista::DBGrid3DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
  if(DBGrid3->DataSource->DataSet->FieldByName("DiasRestante")->Value <= 5)
  {
      DBGrid3->Canvas->Brush->Color = clRed;   
      DBGrid3->Canvas->FillRect(Rect);
      DBGrid3->Canvas->Font->Color = clBlack;   
      DBGrid3->DefaultDrawColumnCell(Rect, DataCol, Column, State);
  }
}

Lo que he pensado es poner las variables (Rect, DataCol, Column, State) como globales, o en el evento OnClickButton() meter las variables de la función DBGrid3DrarColumnCell().

Un saludo

ecfisa 27-11-2012 10:41:37

Cita:

Empezado por borlandpablo (Mensaje 450630)
Buenas, quiero colorear los registros de un DBGrid pasándole un número de un TEdit y que al pulsar TButton lo coloree automáticamente. El parámetro dependerá es de si el número de días es menor que el que se le pasa por el TEdit

Hola Pablo.
Código:

void __fastcall TForm1::DBGrid3DrawColumnCell(TObject *Sender,
  const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{
  int v;

  if(TryStrToInt(Edit1->Text, v))
    if(DBGrid3->DataSource->DataSet->FieldByName("DiasRestante")->Value <= v) {
      DBGrid3->Canvas->Brush->Color = clRed;
      DBGrid3->DefaultDrawColumnCell(Rect,DataCol,Column,State);
    }
}

void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
  DBGrid3->Invalidate();
}

Cita:

Lo que he pensado es poner las variables (Rect, DataCol, Column, State) como globales...
:eek: Mejor no, a menos que desees forzar una excepción no es buena idea.

Saludos.:)

borlandpablo 27-11-2012 13:15:24

Muchas gracias ecfisa, que máquina!

Lo he puesto mejor en el OnClick del botón en vez del OnExit.

Saludos.


La franja horaria es GMT +2. Ahora son las 18:34:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi