09. Программа построения табличных отчетов от Microsoft составлена так, что при изменении данных (1 строка, 2 строки) они могут не отображаться, т.к. в конструкторе эта высота уазывается жестко. Этот метод позволяет Вам обойти недостаток модуля отчетов от Microsoft и строить таблицы разной высоты.
Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
Dim h As Single
h = funGetHeight(Me.Section(acDetail)) 'Опредеяем высоту строки
funDrawBox Me, h, 1 'Оформляем секцию с толщиной линий = 1
End Sub
'===============================================================
' Расчет высоты строки в секции в зависимости от форматирования
' поля отчета, например, TextBox
'
Private Function funGetHeight(sec As Section) As Single
Dim c As Control
funGetHeight = 0 'назначаем высоту ячейки
For Each c In sec.Controls 'Просматриваем все поля отчета
If funGetHeight c.Height Then _
funGetHeight = c.Height 'Возвращаем максимальную высоту
Next c 'Следующее поле
End Function
'===============================================================
' Перед началом печати рисуем для каждого поля прямоугольник
'
Private Sub funDrawBox(rpt As Report, h As Single, w As Integer)
Dim c As Control
rpt.DrawWidth = w 'Толщина линии
'Красный цвет прямоугольника
rpt.ForeColor = RGB(255, 0, 0) 'RED, GREEN, BLUE
'Просматриваем все поля отчета
For Each c In rpt.Section(acDetail).Controls
rpt.Line (c.Left, c.Top)-(c.Left + c.width, h), , B 'Прямоугольник
Next c
End Sub