Ver Mensaje Individual
  #3  
Antiguo 15-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por chinchan Ver Mensaje
...¿Cómo puedo cambiar el color de fondo (background) de las celdas seleccionadas de un DrawGrid?...
Cita:
Empezado por ecfisa Ver Mensaje
...Te aclaro que al abandonar el foco del TStringGrid, retornará a su color original...
Bueno, creo que la pregunta no iba por la celda que tenga el foco sino por las celdas seleccionadas.

El ejemplo de ecfisa es muy bueno pero si cambiamos gdFocused por gdSelected conseguimos lo que quiere chinchan .
Por otro lado, yo prefiero usar Sender para referirme al objeto Grid correspondiente, así la misma función puede responder a eventos de distintos Grids... Son manías mías

Propongo esta variante:
Código:
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
  TStringGrid * Grid = dynamic_cast<TStringGrid*>(Sender);
  if (State.Contains(gdSelected) && Grid) {
    Grid->Canvas->Brush->Color = clRed;
    Grid->Canvas->FillRect(Rect);
    Grid->Canvas->Font->Color = clYellow;
    DrawText(Grid->Canvas->Handle, Grid->Cells[ACol][ARow].c_str(),
             Grid->Cells[ACol][ARow].Length(), &Rect,
             DT_NOCLIP | DT_SINGLELINE);
  }
}
Saludos.
Responder Con Cita