Как я могу динамически изменить текстовые поля записей в моем отчете на максимум для каждой записи? - PullRequest
0 голосов
/ 30 января 2019

У меня есть отчет с двумя полями (txtQuestion & txtLookingFor), который заполняется с помощью запроса.Иногда txtQuestion намного длиннее, чем txtLookingFor (или наоборот), и я хочу, чтобы напечатанный отчет отображался равномерно, уменьшив высоту двух равных по длине и длиннее двух - для каждой записи в этом отчете.

У меня есть некоторый VBA, который запускается даже «Detail OnFormat», который должен извлечь значения «высоты» каждого из текстовых полей, найти максимум и установить оба значения высоты на это значение.Я не могу получить (прочитать) значения высоты (из каждой записи).Но я могу вручную установить значения высоты (для каждой записи) на какое-либо произвольное значение через VBA, если я захочу.

Я перепробовал все варианты «Может расти» и «Может сжиматься».Мои текстовые поля увеличиваются в размерах (для каждой записи), но я не могу понять, что это за значение, для использования в моем коде VBA.

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    maxheight = 100
    If (Me.txtQuestion.Height > maxheight) Then 
         maxheight = Me.txtQuestion.Height
    End If
    If (Me.txtLookingFor.Height > maxheight) Then 
         maxheight = Me.txtLookingFor.Height
    End If
    Me.txtQuestion.Height = maxheight
    Me.txtLookingFor.Height = maxheight
    Me.txtNotes.Height = maxheight
End Sub

1 Ответ

0 голосов
/ 31 января 2019

Вот некоторый код, который я нашел в tek-tips, который дает общее представление о том, как заставить текстовые поля выглядеть одинаково, рисуя вокруг них прямоугольники.Сами элементы управления не могут быть изменены.

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
    Dim intMaxHeight As Integer
    Dim ctl As Control
    'Find highest control in Detail section that has a tag property of "Border"
    For Each ctl In Me.Section(0).Controls
        If ctl.Tag = "Border" Then
            If ctl.Height > intMaxHeight Then
                intMaxHeight = ctl.Height
            End If
        End If
    Next
    'Draw a box around each control in Detail that has a tag property of "Border"
    For Each ctl In Me.Section(0).Controls
        If ctl.Tag = "Border" Then
            Me.Line (ctl.Left, ctl.Top) - Step(ctl.Width, intMaxHeight), vbBlack, B
        End If
    Next
End Sub

Ссылка: https://www.tek -tips.com / viewthread.cfm? Qid = 1676341

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...