Ver Mensaje Individual
  #2  
Antiguo 16-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cool

El stringgrid no permite la selección de columnas... únicamente de celdas o de filas.

De hecho el color de una celda puede darse solo en tiempo de ejecución... (al menos con el TStringGrid), y no antes de crearse. De esta forma, si te interesa cambiar el color de una columna, has de tener un mecanismo que te permita discriminar si la pintaras de un color o de otro, programar un evento OnDrawCell apropiado y llamar al método Repaint del StringGrid.

El evento quedaria algo como:

Código Delphi [-]
Procedure TForm1.Grid1DrawCell(Sender: TObject; ACol, ARow: 
  Longint; Rect: TRect; State: TGridDrawState);

Begin
  with Sender as TDrawGrid do
  begin
    if (aCol = 3) and (FSeleccionada) then  
    Begin
      // solamente tomaremos acción cuando sea la columna 3
      // FSeleccionada es un miembro privado booleano de la clase que 
      // indica si la celda de la la columna debe pintarse de un color o de otro
      Canvas.Brush.Color := clBlue;
      Canvas.Font.Color := clWhite;
    end
    else Begin
      Canvas.Brush.Color := clBackGround;
      Canvas.Font.Color := clBlack;
    end;
    Canvas.FillRect(Rect);
    Canvas.TextRect(Rect, 0, 0, (Sender as TStringGrid).Cells[ACol, ARow]);
    if gdFocused in State then
      Canvas.DrawFocusRect(Rect);
    end;
  end;
end;

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