powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OnAction замучил. Как победить?
34 сообщений из 34, показаны все 2 страниц
OnAction замучил. Как победить?
    #39706546
Друзья, помогите пожалуйста с контекстным меню.
Получаю сообщение "Введенное выражение содержит функцию с неверным числом аргументов."
Уже что только не перепробовал (. НЕ пойму как победить...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Private Sub TEST_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim IPNE$, script$, BLK_Cell$, q$
IPNE = "10.10.10.10"
UBL_Cell = BLK_UNBLKCell(Me.bcfid, Me.bscid, "UBL")	' тут функция вернет текстовое значение

'q = toExecute(IPNE, UBL_Cell)  '<- вот эту функцию хочу выполнить в OnAction
On Error Resume Next
'Debug.Print "PopUpName: " & PopUpName
CommandBars(PopUpName).Delete
Err.Clear

On Error GoTo Err_
With Me
    PopUpName = .Name & .hWnd
    PopUpName = "test"
End With
On Error Resume Next
With CommandBars.Add(PopUpName, 5, , True)
    With .Controls.Add(1, , , , True)
        .Caption = "UBL_Cell " & Me.btsName & "(BCF=" & Me.bcfid & " ,BSC=" & bscid & ")"
        '.OnAction = "=toExecute(""" & IPNE & "," & UBL_Cell & """)" ' не получается выполнить
        .OnAction = "=toExecute(""'" & IPNE & "','" & UBL_Cell & "'"")"    ' не получается выполнить
     End With

End With

With Me
    .ShortcutMenu = True
    .ShortcutMenuBar = PopUpName
End With

Exit_TEST_MouseDown:
    Exit Sub

Err_:
    MsgBox Err.description & "(&#206;&#248;&#232;&#225;&#234;&#224; - " & Err.Number & ")", , "&#206;&#248;&#232;&#225;&#234;&#224;"
    Resume Exit_TEST_MouseDown
End Sub

Public Function toExecute(IPNE As String, script As String)

If Screen.ActiveForm.SendToServer = True Then
    DoCmd.Beep
    If MsgBox("&#194;&#251; &#228;&#229;&#233;&#241;&#242;&#226;&#232;&#242;&#229;&#235;&#252;&#237;&#238; &#245;&#238;&#242;&#232;&#242;&#229; &#239;&#238;&#241;&#235;&#224;&#242;&#252; &#234;&#238;&#236;&#224;&#237;&#228;&#251; &#237;&#224; BSC?", vbYesNo, "&#207;&#238;&#228;&#242;&#226;&#229;&#240;&#230;&#228;&#229;&#237;&#232;&#229;") = vbYes Then
        Form_FormaLog.SendData IPNE, script
    End If
Else
    MsgBox script, , "&#207;&#238;&#236;&#229;&#249;&#229;&#237;&#238; &#226; &#225;&#243;&#244;&#229;&#240; &#238;&#225;&#236;&#229;&#237;&#224;!"
    Text2Clipboard (script)
End If

End Function
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706570
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф,
21681357
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706665
sdku,
У вас функции в примере простые. У меня по сложней будет, в этом то для меня и загвоздка.
Caption посмотрите у меня в примере. Т.е. в зависимости от того на какой строке стою в раздельной форме, то и формируется. И OnAction в результате разный.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706681
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф,

Нормальные герои всегда идут в обход. ©

Версия надеюсь от 2007 или старше?
Используй для передачи параметров TempVars .


Архимедофф
Код: vbnet
1.
Form_FormaLog.SendData IPNE, script

Кто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706686
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
' с кавычками помойму что-то перекручено, и "=" нужно убрать 
 ' т.е.
        .OnAction = "toExecute(""" & IPNE & """,""" & UBL_Cell & """)" 
 


есть ещё такой способ
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
.tag= IPNE & "|" & UBL_Cell 
 .OnAction = "toExecute" 

Public Function toExecute()
dim mass$()
mass=split(CommandBars.ActionControl.Tag,"|")
...
 Form_FormaLog.SendData mass(0), mass(1)
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706687
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильнее всего пользовать подписку.

В данном случае с OnAction, можно просто заюзать Parametr и/или Tag кнопки.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706688
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko обогнал на кнопке. :)
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706749
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургКто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.
А чё не так?
Вам не нравятся классы, или вы не умеете их готовить
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706761
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIПанургКто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.
А чё не так?
Вам не нравятся классы, или вы не умеете их готовитьОлег Игоревич, это твой дежурный вопрос? Я так понимаю, ты достиг высот в этом деле? Если да, то не задавай таких вопросов.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706773
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургОлег Игоревич, это твой дежурный вопрос? Я так понимаю, ты достиг высот в этом деле? Если да, то не задавай таких вопросов.
А почему вам можно задавать эти вопросы?
А если серьёзно, то ничего такого в таком обращении нет,
и конечно надо четко иметь представление.(я думаю оно имеется)
Не пугайте людей понапрасну.
С уважением не знаю вашего имени отчества
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706800
alecko, спасибо. Без "=" не работает.
Про второй вариант даже не знал :) Приму на вооружение.

Код: vbnet
1.
2.
'   вот так работает
        .OnAction = "=toExecute(""" & IPNE & """,""" & UBL_Cell & """)" 
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706801
А для того, чтобы это меню работало на разных формах, это как раз через классы делается??
Прошу прощения за глупый вопрос, но я не программист. :)
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706826
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф, согласен (щас проверил), с заданием параметров нужен "=" т.е. или "toExecute" или "=toExecute()" -вторым элементом не пользовался никогда - все через .tag да иногда .parameter
Чтобы работало на разных формах создайте меню в модуле, да вызывайте откуда нужно; менять caption, tag можно "на лету".
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706860
alecko,
Я меню это привязал только к одному полю на форме. Но оно выскакивает, если и на других полях нажать правую кнопку, но уже после нажатия на используемое поле. Как убрать это? Предполагаю, что что-то надо повесить на потерю фокуса, чтобы вернулось стандартное меню, например.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706864
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АрхимедоффА для того, чтобы это меню работало на разных формах, это как раз через классы делается??В данном случае инкапсуляция не нужна, ИМХО.

Зачем вообще нужно передавать параметры в функцию в данном случае? Функция написана в модуле формы где и происходит работа контекстного меню. Ну так и получайте значения в самой функции, а не процедуре события TEST_MouseDown . Таким образом ненужно будет дёргать коллекцию CommandBars удаляя, добавляя меню.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706866
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АрхимедоффЯ меню это привязал только к одному полю на форме. Но оно выскакивает, если и на других полях нажать правую кнопку, но уже после нажатия на используемое поле. Как убрать это? Предполагаю, что что-то надо повесить на потерю фокуса, чтобы вернулось стандартное меню, например.Задавай именно этому полю ShortcutMenuBar , а не форме.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39706943
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф, sdku в 21683169 уже представил классный пример - посмотрите его ещё раз, незамутненым шелухой а-ля eval() взглядом.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707085
alecko,
ДА, видел. Надо время на разобраться, красивое решение.
Панург. Если на базе моего примера, то так пробовал. Не работает. Так же и на других полях выскакивает это меню. Что-то делаю не так... :(
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'Было 
With Me
    .ShortcutMenu = True
    .ShortcutMenuBar = PopUpName
End With
'Стало
With Screen.ActiveForm.МоёПоле
    .ShortcutMenu = True
    .ShortcutMenuBar = PopUpName
End With
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707156
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АрхимедоффЕсли на базе моего примераПриме то где?
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707186
Панург,

А вверху темы ))
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707223
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АрхимедоффА вверху темы )) А, ну да...
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707401
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIПанургКто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.
А чё не так?
Вам не нравятся классы, или вы не умеете их готовить
Согласен с Панургом. Не следует так обращаться к формам.
Как отловить в какой строке и почему ошибка
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707460
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ламер ЛамеровичROIпропущено...

А чё не так?
Вам не нравятся классы, или вы не умеете их готовить
Согласен с Панургом. Не следует так обращаться к формам.
Как отловить в какой строке и почему ошибка
Вы сами прочитали про что там (разобрались?)
Так что ваша ссылка ни о чем. ("не читал но осуждаю")
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707642
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIЛамер Ламеровичпропущено...

Согласен с Панургом. Не следует так обращаться к формам.
Как отловить в какой строке и почему ошибка
Вы сами прочитали про что там (разобрались?)

Про то, что обращения Form_ИмяФормы лучше избегать, но вы можете использовать, что хотите )
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707668
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф,
зачем все усложнять?
см.Form3
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707677
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIЛамер Ламеровичпропущено...

Согласен с Панургом. Не следует так обращаться к формам.
Как отловить в какой строке и почему ошибка
Вы сами прочитали про что там (разобрались?)
Так что ваша ссылка ни о чем. ("не читал но осуждаю")

еще одна ссылка "ни о чем"
Свое событие формы
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707988
sdku,

Может я не понятно пишу. Попробую еще раз :)
Вот скрин с тремя полями. Надо чтобы имена в контекстном меню формировались динамически. К ним привяжутся функции на исполнение.Например, стоим на первой записи (aaa) в поле1. Нажимаем правую кнопку и получаем: Выполнить aaa , Изменить aaa
Если стоим на второй записи(bbb) в поле1 и нажимаем правую кнопку и получаем: выполнить bbb , Изменить bbb и т.п.
Если уходим с поля, то возвращаемся забываем это меню и возвращаемся к стандартному.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39707992
И ваш файлик с добавленной таблицей и формой в аттаче.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39708013
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/Про офисную библиотеку не забываем
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39708041
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедоффsdku,
Может я не понятно пишу. Попробую еще раз :)
Вот скрин с тремя полями. Надо чтобы имена в контекстном меню формировались динамически. К ним привяжутся функции на исполнение.Например, стоим на первой записи (aaa) в поле1. Нажимаем правую кнопку и получаем: Выполнить aaa , Изменить aaa
Если стоим на второй записи(bbb) в поле1 и нажимаем правую кнопку и получаем: выполнить bbb , Изменить bbb и т.п.
Если уходим с поля, то возвращаемся забываем это меню и возвращаемся к стандартному.
пример делать не буду-на "пальцах" как-то так:
-при получении фокуса полем1 создаем контекстное меню в котором cbb.caption=me.поле1.text и присваиваем его этому полю. В меню cbb.OnAction="функцияИспользующаяЗначениеАктивногоЭлемента"
-при потере фокуса или переходе на другую запись "убиваем" это меню
Стесняюсь спросить:а почему без меню нельзя изменить это поле, а по двойному щелчку выполнить действие?
Или преодолеть выдуманные самим собой сложности-наш метод
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39708812
sdku, Predeclared , спасибо огромное. Немного разобрался и запилил что хотел благодаря вашим примерам.
Только мусор как подчисть не мойму.
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39708898
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф,
Вы уж определитесь о чем речь-на скрине полеСоСписком, а в топике речь шла о контекстном меню. А это,таки,не одно и то же
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39708926
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Commandbars("имя").Delete
в Immediate window VBE
...
Рейтинг: 0 / 0
OnAction замучил. Как победить?
    #39711407
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне вот это непонятно...
Код: vbnet
1.
=toExecute(""'" & IPNE & "','" & UBL_Cell & "'"")"


почему не
Код: vbnet
1.
=toExecute(IPNE,UBL_Cell)

?
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OnAction замучил. Как победить?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]