Es que no tiene nada que ver tu código con el ejemplo que he puesto.
En mi ejemplo estás
asignando un stringgrid a otro stringgrid.
En tu código estás intentando asignar celdas, mediante un bucle.
En tu caso no hay que usar assign.
Será más o menos así:
Código:
for (i=1;i<=columnamayor;i++)
stringgrid3->cells[i][0]=stringgrid1->cells[i][0];