Элементы всплывающего меню ms-access: формат / функция или подпрограмма / параметры передачи - PullRequest
0 голосов
/ 06 марта 2012

В форме MS Access у меня есть рабочее всплывающее меню, но мне интересно узнать, как настроить его по-другому.

Определение всплывающего меню:

With CommandBars.Add("TreeNodeActions", msoBarPopup, False)
    With .Controls.Add(msoControlButton)
        .caption = "Copy"
        .OnAction = "=CopyNode()"
    End With
End With

Вопрос 1: зачем нужны знак равенства и пустой список параметров (без них все не работает)?Почему бы не просто .OnAction = "copyNode", как предлагается в других темах на этом форуме?

Вопрос 2 : я хочу запустить подпрограмму, но единственный способ сделать это - вызвать функциюэто вызывает подпрограмму - см. ниже.Как я могу вызвать подпрограмму напрямую?

Private Function CopyNode()
    Call CopyBid
End Function

Private Sub CopyBid()
    Dim nodx As node

    Set nodx = Me.TreeView1.Nodes(Me.nodeKeySelected.Value)
    Me.BidIdToBeCopied = nodx.Tag
End Sub

Вопрос 3 : всплывающее меню находится на элементе управления древовидной структуры;Я хочу передать выбранный узел подпрограмме, чтобы мне не нужно было хранить ключ узла в форме (щелчком мыши по дереву) и использовать его в подпрограмме выше.Я хотел бы иметь возможность иметь ниже.Как элементы меню, определенные в параметрах командного меню, могут передавать параметры?

Private Sub CopyBid(nodx As node)
    Me.BidIdToBeCopied = nodx.Tag
End Sub

1 Ответ

0 голосов
/ 07 марта 2012

Сделал некоторые дальнейшие исследования себя. Не окончательно, но я дошел до этого:
Q1 : документация не найдена, просто факт в том, что синтаксис в свойстве msA-access vba onAction такой. Все еще чувствует себя немного странно, что не может быть найдено никакого объяснения этому - я бы ожидал, что что-то вроде «знак равенства гарантирует, что последующая функция или процедура вызывается. Скобки в конце избыточны, но должны быть добавлены для параметров без параметров». функции "
Q2 : кажется, что это невозможно, поэтому повторное использование существующего подпункта невозможно, если только не изменить его на функцию. Странно, но, вероятно, снова факт жизни. Документация по этому вопросу также не найдена.
Q3 : передача параметров не так проста, как кажется - обязательные скобки предполагают, что это просто вопрос предоставления переменных в спецификации onAction для функций, имеющих параметры. Это не так просто, вероятно, потому что спецификация onAction - это строка, которая запускает поиск известного имени функции без учета параметров. Один из способов предоставления параметров, которые мне удалось найти (наконец, некоторую полезную информацию!), Может быть найден в вызове функции и передаче аргументов с помощью .onaction . Мне кажется, что это грязная работа, поэтому я все еще задаюсь вопросом, есть ли более аккуратные решения. И я еще не тестировал это "решение" ...

...