Lo que quieres hacer, es relativamente sencillo. Se basa en a partir del ancho de la celda activa y el ancho del texto a escribir, indicar al control donde tiene que empezar a escribir.Por ejemplo, el codigo anterior justifica a la derecha el texto a escribir. (El formulario se llama FormPrincipal, y el StringGrid se llama Tabla). El evento que debes usar es el DrawCell del control.
void __fastcall TFormPrincipal::TablaDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
// Variable de trabajo.
TStringGrid *Grid = dynamic_cast<TStringGrid*>(Sender);
//Escribimos el texto a la derecha de la celda
Grid->Canvas->TextRect(Rect, (Rect.Left + (Rect.Width() - Canvas->TextWidth(Tabla->Cells[ACol][ARow]))-5), (Rect.Top + 2), Grid->Cells[ACol][ARow]);
}
}
Para centrar el texto... tienes que restar al ancho de la celda, el ancho del texto y dividirlo entre 2.
Espero que te sirva.