>>750
どうしたしまして。

あの 今日 おきて そのコードを見て はっ!! と気がつきました。
スクロールすると、同期しません(>_<)
左上の位置が変更されたら、位置を変えるコードを追加します
下記を加えてください。

procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
var
i : integer;
R : TRect;
begin
// 行は0に固定しているので 好きに変更してください。
if (Sender is TStringGrid) then
for i := 0 to TStringGrid(Sender).ColCount-1 do
if (TStringGrid(Sender).Objects[i, 0] <> nil)
and (TStringGrid(Sender).Objects[i, 0] is TWinControl) then
begin
R := TStringGrid(Sender).CellRect(i,0);
TWinControl(TStringGrid(Sender).Objects[i, 0])
.SetBounds(R.Left,R.Top ,R.Right - R.Left, R.Bottom - R.Top);
end;
end;