Как определить значение .Left элемента управления? - PullRequest
1 голос
/ 10 февраля 2020

Я создаю свой первый пользовательский интерфейс в VBA для Microsoft Access.

Я пытаюсь, чтобы переменная .Left отображалась в раскрывающемся списке (библиотека?).

Единственное, что появляется, - это LeftPadding, который, я уверен, это не то, что мне нужно. Почему я не могу объявить левую позицию прямоугольников?

image

Есть ли другой тип переменной, который я должен использовать для объявления позиции прямоугольников?

Моя последующая проблема, если я делаю это правильно, касается вложенного оператора If. Я пытаюсь вычислить, превышает ли позиция вновь видимого прямоугольника + его размеры положение слева уже видимого прямоугольника, и если да, расположите его в другом месте.

Dim ctl As Control
For Each ctl In [Forms]![frmBuilder]
    If Left(ctl.Name, 3) = "box" And Box1.Visible = True Then
        If ctl.Visible = True Then
            NextCaseNum = Int(Right(ctl.Name, (Len(ctl.Name)) - 3) + 1)
            NextCasePosition = (ctl.lef + ctl.Width) + 1440 / 60
            NextCaseName = "box" & NextCaseNum
        Else
            CurCaseLeft = ctl.Left
            CurCaseWidth = ctl.Width
            CurCaseHeight = ctl.Height
            With ctl
                .Top = UprightBottom - HInch
                .Left = NextCasePosition
                .Width = WInch
                .Height = HInch
                .Visible = True
            End With
            If CurCaseLeft + CurCaseWidth > Upright2.Left Then
                With Beam1
                    .Top = (((5.5 + 6) * 60) + Box1.Top) / 1440
                    .Left = Upright1.Left
                    .Height = (5.5 * 60) / 1440
                    .Width = ((4 * 60) / 1440) + Upright2.Left - Upright1.Left
                    .Visible = True
                End With
            End If

Я думаю, что проблема заключается в CurCaseLeft и CurCaseWidth, потому что я не знаю, как определить их в функции из-за того, что ctl.Left текущего блока не отображается.

Нужно ли разделять вложенный оператор If в другой функции и вызывать его? функция из текущей функции?

1 Ответ

0 голосов
/ 10 февраля 2020

Попытайтесь быть более явным:

Dim ctl As Control
Dim rct As Rectangle

For Each ctl In [Forms]![frmBuilder]
    If Left(ctl.Name, 3) = "box" And Box1.Visible = True Then
        If ctl.Visible = True Then
            Set rct = ctl
            NextCaseNum = Int(Right(rct.Name, (Len(rct.Name)) - 3) + 1)
            NextCasePosition = (rct.Left + rct.Width) + 1440 / 60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...