Vericalband и выравниваение
Здравствуйте!
Необходимо сделать отчет следующей формы:
<N ячеек >|<мемо 1>|<мемо2>|<M ячеек>
где "N ячеек" и "M ячеек" поля переменной ширины, то есть туда выводятся данные из подчиненного датасета, разворачиваясь по горизинтали. Положил вертикальный бенд, положил на его пересечение с бендом горизонтальным мемо и настроил его на поле. Таким образом сделал поле "N ячеек". Ширину его рассчитываю в скрипте и соответсвенно смещаю мемо1 и мемо2. То есть получается что поле "N ячеек" растет слева на право. Та же задача стоит и для поля "M ячеек". Только расти оно должно с права на лево. Но вот как это сделать ума не приложу. Мне виделось что должно быть некое свойство что "выравнивание", но оно почему то работает не так, как я предполагаю. Выставляю у мемо которое должно формировать "M ячеек" align = baRight, но все равно выводимые данные приклеиваются к левому краю.
Необходимо сделать отчет следующей формы:
<N ячеек >|<мемо 1>|<мемо2>|<M ячеек>
где "N ячеек" и "M ячеек" поля переменной ширины, то есть туда выводятся данные из подчиненного датасета, разворачиваясь по горизинтали. Положил вертикальный бенд, положил на его пересечение с бендом горизонтальным мемо и настроил его на поле. Таким образом сделал поле "N ячеек". Ширину его рассчитываю в скрипте и соответсвенно смещаю мемо1 и мемо2. То есть получается что поле "N ячеек" растет слева на право. Та же задача стоит и для поля "M ячеек". Только расти оно должно с права на лево. Но вот как это сделать ума не приложу. Мне виделось что должно быть некое свойство что "выравнивание", но оно почему то работает не так, как я предполагаю. Выставляю у мемо которое должно формировать "M ячеек" align = baRight, но все равно выводимые данные приклеиваются к левому краю.
Комментарии
Перед вызовом создаю то, что нужно:
Где float и float2 - соответственно ширина и левая граница. Ширина постоянна, левая граница постоянно увеличивается на ширину.
Ширину можно взять из другого MemoView или высчитать (надо при этом умножать на fr01cm (если ширина в мм) или на fr1cm (если ширина в см) )
Nightmareterrible, к сожалению в дельфу у меня вставить код лишний нельзя. Отчет делается на универсальном генераторе отчетов, для которого входным файлом является fr3 а выходным уже готовый сформированный отчет. Так что какой то код в дельфе который обслуживает конкрентный отчет не доступен.
Я сделал немного по другому:
В запросе, который получет данные бэнда, в котором должна быть развертка по горизонтали, вычислил ко-во необходимых ячеек в этой развертке.
В скрипте сделал цикл по всем записям и получал максимально необходимое число ячеек слева и справа. Потом создавал там же TfrxMemo на это максимальное кол-во и размещал их в отведеном для них месте (рассчет координат размещения сделал нарисовав 2 вертикальные линии на каждую половину отчета и использовал их координаты - это для того что бы потом пользователь мог сам подкорректировать размеры ячеек в отчете).
Потом на BeforePrint бэнда смотрел, сколько, в конкретной отображаемой записи, необходимо полей слева и справа и соответственное кол-во мемо оставлял видимым, остальные праятал (Visible := false), задавал значения видимым, и задавал им размеры, что бы они были вписаны в необходимый размер. Все.
Если есть вопросы или хочется посмотреть код, мне не жалко, я поделюсь.