Hola Alexander, si se puede hacer las dos cosas, pero no es tan simple.
El tema es que el StringGrid no tiene una propiedad directa para hacerlo. Asi que podes programarlo o buscar un compoenete que hay por ahi que ya alguien le agrego esas propiedades.
Si queres programarlo aca te doy un ejemplo (puede haber error en el código porque lo estoy acomodando de un programa que hice en CBuilder)
Código Delphi
[-]
procedure TForm1.GrillaDrawCell(Sender: TObject, ACol: integer,
ARow: integer, Rect: TRect, State: TGridDrawState)
begin
Grilla.Canvas.Brush.Style := bsSolid;
case ACol of
1: Grilla.Canvas.Brush.Color := clBlue;
2: Grilla.Canvas.Brush.Color := clRed;
end;
Grilla.Canvas.FillRect(Rect);
end;
en este ejemplo se pintan las columans de acuerdo al numero que sean.
Para que se ejecute este método
GrillaDrawCell tenes que escribir algo sobre cada celda.
Para la alineación no me acuerdo acuedo y no lo tengo a mano, pero con esto podes empesar.
Suerte