возьмите TVertScrollBox, положите в него TLayout (align=top)
храните строки в TStringList, вычисляйте высоту TLayout при добавлении строк.
на событие TLayout.OnPaint рисуйте нужный диапазон строк (Canvas.FillText) опираясь на позицию Viewport скроллбокса.
все будет летать.