2011-07-29 5 views
3

Можно ли динамически изменять размер области отчета в MS Access?Динамически изменять размер отчета. Детальная область

У меня есть отчет, а область Detail содержит 2 строки, я бы хотел, чтобы один из них был «опциональным» - когда нет данных, которые он не должен отображать, а область Detail будет только высотой, ряд данных.

У меня есть код, как это:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 
    Dim reduceHeight As Integer 
    reduceHeight = Me.Label83.Height 


    If IsNull(Me.data_1) Then 
     Me.data_1.Visible = False 
     Me.Label83.Visible = False 
    Else 
     Me.data_1.Visible = True 
     Me.Label83.Visible = True 
    End If 

    If IsNull(Me.data_1) 
     Detail.Height = Detail.Height - reduceHeight 
    End If 

End Sub 

И это работает, насколько makign поле метки и текст условно видимый, но я не могу получить область Detail сжиматься, когда нижняя линия скрыта. I сделал: CanShrink Недвижимость для Деталь до True, но это не сжимается.

ответ

4

Set CanShrink для управления тоже (например, Textboxes):

enter image description here enter image description here

+0

Я думал, что я уже сделал это, но я, кажется, пропустил пару. Похоже, он работает сейчас! – FrustratedWithFormsDesigner

+0

Это работает, если вы не используете ярлыки (или не должны иметь ярлыков и полей текстового поля). Если у вас есть метки, вы можете: 1) изменить метки на текстовые поля, установить видимые значения false в свойствах текстового поля и установить их свойства canShrink в true ИЛИ 2) См. Ответ Клона. – thecoolmacdude

4

Привет: Я понимаю, что у вас есть ярлыки. Поскольку метки не могут сокращаться, вам нужно написать код.

Динамометрическая игра с формами - сложная задача. Когда вы изменяете высоту или ширину раздела, все элементы управления должны находиться внутри новой области, иначе у вас будут проблемы. Когда вы перемещаете элемент управления, он должен находиться внутри области раздела, иначе у вас будут проблемы. Кроме того, вы должны отключить Autoshrink для раздела.

Теперь, это пример. Вы должны изменить его, чтобы соответствовать вашим требованиям. Здесь идет код вида:

Option Compare Database 
Option Explicit 

Private twipsPerLine As Integer  ' The height of a line in your report 
Private detailHeight As Integer  ' The height of your detail section 
Private vPos As Integer    ' The vertical position of the control 
           'following the one you want to hide 

Private Sub Report_Open(Cancel As Integer) 
    ' Set the values 
    vPos = data_2.Top 
    twipsPerLine = data_2.Top - data_1.Top 
    detailHeight = Me.Detail.Height 
End Sub 

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 

    If (IsNull(Me.data_1.Value)) Then 
     ' First, you hide the controls 
     Me.data_1.Visible = False 
     Me.data_1_label.Visible = False 
     ' Then, you set the position of the rest of the controls (up) 
     data_2_label.Move data_2_label.Left, vPos - twipsPerLine 
     data_2.Move data_2.Left, vPos - twipsPerLine 
     ' Finally, you shrink the detail section height 
     Me.Detail.Height = detailHeight - twipsPerLine 
    Else 
     ' First, you show the controls 
     Me.data_1.Visible = True 
     Me.data_1_label.Visible = True 
     ' Then, you reset the section height 
     Me.Detail.Height = detailHeight 
     ' Finally, you reset the position of the rest of the controls 
     data_2_label.Move data_2_label.Left, vPos 
     data_2.Move data_2.Left, vPos 
    End If 

End Sub 

Это приближение дает вам полный контроль над докладом и работает, даже если у вас есть этикетки, изображения или что на нем.

enter image description here

+0

Другой вариант - изменить ярлыки на текстовые поля, установить видимые значения false в свойствах текстового поля и установить для их свойств canShrink значение true. – thecoolmacdude

Смежные вопросы