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
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.