Прошу прощения, что долго не отвечал... Форум почему-то не пометил эту ветку как активную...
1) По поводу трепа. Повторить смог только один раз, больше у меня почему-то не появляется. Причина вроде бы в том, что в этом куске кода
f.DrawRect(c.l, c.t - v.topBand*bandH, c.r, c.b - v.topBand*bandH, 0, Ports.red) идет работа со слишком большими координатами (ведь в ББ все измеряется в универсальных единицах, 1 мм = 36000 уе), идет переполнение, в результате - прямоугольник с неверными вершинами, срабатывает предусловие в DrawRect. Во-первых, надо оптимизировать - делать DrawRect и InstallFrame только для тех блоков, которые реально в текущем кадре, во-вторых, можно ввести для вертикальной позиции дополнительную переменную - номер "страницы", а top пусть меряется от "страницы", чтоб избежать переполнения в длинных графиках.
2) По поводу печати - перед печатью отображение копируется, а у нас оно копироваться не умеет - я не стал реализовывать, чтоб не отвлекать на это внимание. Надо описать процедуру (v: Plot) CopyFromSimpleView (см. документацию Views), которая будет копировать нужные поля отображения (создавая полные копии блоков в том числе, а не просто присваивая указатели). Чтоб сохранять, надо реализовать Internalize/Externalize (см. Stores).
3) Для изменения размеров - расширьте обработку TrackMsg в HandleCtrlMsg, чтоб при щелчке на границе блока происходило "протягивание" границы - готовый код же уже перед глазами - "протягивание" прямоугольника для нового блока. CursorMsg - для изменения формы курсора на границе. Для перетаскивания - обработать в HandleCtrlMsg сообщение Controllers.DropMessage - среда при дропе сообщит и бросаемое отображение, и позицию. Для бросаемого отображения создаем блок и т.д.
Вообще говоря, можно пойти иным путем и писать отображение - расширение Containers.View, как это сделано для FormViews. Там для сложных контейнеров уже кое-что реализовано в готовом виде. Однако для вашего случая это будет даже сложнее.