Tendrás que escribir el evento OnDrawCell para hacer lo que quieres.
Un ejemplo de como hacerlo:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// Esto rellena con cadenas de distinta longitud
for(int n=0; n<5; n++){
StringGrid1->Cells[0][n] = "Hola " + IntToStr(n*n*n*n*n);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
TStringGrid *grid = dynamic_cast<TStringGrid*>(Sender);
HDC dc = grid->Canvas->Handle;
char *Cadena = grid->Cells[ACol][ARow].c_str();
if(State.Contains(gdFixed)){
grid->Canvas->Brush->Color = StringGrid1->FixedColor;
grid->Canvas->FillRect(Rect);
}
grid->Canvas->Brush->Style = bsClear;
DrawText(dc, Cadena, strlen(Cadena), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
}
//---------------------------------------------------------------------------
Saludos.