Cita:
Empezado por chinchan
...¿Cómo puedo cambiar el color de fondo (background) de las celdas seleccionadas de un DrawGrid?...
|
Cita:
Empezado por ecfisa
...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.