Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
Друзья, помогите пожалуйста с контекстным меню.
Получаю сообщение "Введенное выражение содержит функцию с неверным числом аргументов."
Уже что только не перепробовал (. НЕ пойму как победить...

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
23 сен 18, 14:14    [21683087]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6269
Архимедофф,
21681357
23 сен 18, 16:43    [21683169]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
sdku,
У вас функции в примере простые. У меня по сложней будет, в этом то для меня и загвоздка.
Caption посмотрите у меня в примере. Т.е. в зависимости от того на какой строке стою в раздельной форме, то и формируется. И OnAction в результате разный.
23 сен 18, 20:56    [21683348]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
Архимедофф,

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

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


Архимедофф
Form_FormaLog.SendData IPNE, script
Кто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.
23 сен 18, 21:35    [21683375]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 553
' с кавычками помойму что-то перекручено, и "=" нужно убрать 
 ' т.е.
        .OnAction = "toExecute(""" & IPNE & """,""" & UBL_Cell & """)" 
 

есть ещё такой способ
.tag= IPNE & "|" & UBL_Cell 
 .OnAction = "toExecute" 

Public Function toExecute()
dim mass$()
mass=split(CommandBars.ActionControl.Tag,"|")
...
 Form_FormaLog.SendData mass(0), mass(1)
23 сен 18, 22:00    [21683388]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Predeclared
Member

Откуда: And God I know I'm one
Сообщений: 908
Правильнее всего пользовать подписку.

В данном случае с OnAction, можно просто заюзать Parametr и/или Tag кнопки.
23 сен 18, 22:01    [21683389]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Predeclared
Member

Откуда: And God I know I'm one
Сообщений: 908
alecko обогнал на кнопке. :)
23 сен 18, 22:02    [21683390]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1793
Панург
Кто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.

А чё не так?
Вам не нравятся классы, или вы не умеете их готовить
24 сен 18, 05:09    [21683487]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
ROI
Панург
Кто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.

А чё не так?
Вам не нравятся классы, или вы не умеете их готовить
Олег Игоревич, это твой дежурный вопрос? Я так понимаю, ты достиг высот в этом деле? Если да, то не задавай таких вопросов.
24 сен 18, 08:16    [21683508]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1793
Панург
Олег Игоревич, это твой дежурный вопрос? Я так понимаю, ты достиг высот в этом деле? Если да, то не задавай таких вопросов.

А почему вам можно задавать эти вопросы?
А если серьёзно, то ничего такого в таком обращении нет,
и конечно надо четко иметь представление.(я думаю оно имеется)
Не пугайте людей понапрасну.
С уважением не знаю вашего имени отчества
24 сен 18, 08:59    [21683526]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
alecko, спасибо. Без "=" не работает.
Про второй вариант даже не знал :) Приму на вооружение.

'   вот так работает
        .OnAction = "=toExecute(""" & IPNE & """,""" & UBL_Cell & """)" 
24 сен 18, 10:01    [21683583]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
А для того, чтобы это меню работало на разных формах, это как раз через классы делается??
Прошу прощения за глупый вопрос, но я не программист. :)
24 сен 18, 10:06    [21683587]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 553
Архимедофф, согласен (щас проверил), с заданием параметров нужен "=" т.е. или "toExecute" или "=toExecute()" -вторым элементом не пользовался никогда - все через .tag да иногда .parameter
Чтобы работало на разных формах создайте меню в модуле, да вызывайте откуда нужно; менять caption, tag можно "на лету".
24 сен 18, 10:56    [21683639]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
alecko,
Я меню это привязал только к одному полю на форме. Но оно выскакивает, если и на других полях нажать правую кнопку, но уже после нажатия на используемое поле. Как убрать это? Предполагаю, что что-то надо повесить на потерю фокуса, чтобы вернулось стандартное меню, например.
24 сен 18, 11:31    [21683695]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
Архимедофф
А для того, чтобы это меню работало на разных формах, это как раз через классы делается??
В данном случае инкапсуляция не нужна, ИМХО.

Зачем вообще нужно передавать параметры в функцию в данном случае? Функция написана в модуле формы где и происходит работа контекстного меню. Ну так и получайте значения в самой функции, а не процедуре события TEST_MouseDown. Таким образом ненужно будет дёргать коллекцию CommandBars удаляя, добавляя меню.
24 сен 18, 11:36    [21683705]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
Архимедофф
Я меню это привязал только к одному полю на форме. Но оно выскакивает, если и на других полях нажать правую кнопку, но уже после нажатия на используемое поле. Как убрать это? Предполагаю, что что-то надо повесить на потерю фокуса, чтобы вернулось стандартное меню, например.
Задавай именно этому полю ShortcutMenuBar, а не форме.
24 сен 18, 11:39    [21683711]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 553
Архимедофф, sdku в 21683169 уже представил классный пример - посмотрите его ещё раз, незамутненым шелухой а-ля eval() взглядом.
24 сен 18, 13:07    [21683864]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
alecko,
ДА, видел. Надо время на разобраться, красивое решение.
Панург. Если на базе моего примера, то так пробовал. Не работает. Так же и на других полях выскакивает это меню. Что-то делаю не так... :(
'Было 
With Me
    .ShortcutMenu = True
    .ShortcutMenuBar = PopUpName
End With
'Стало
With Screen.ActiveForm.МоёПоле
    .ShortcutMenu = True
    .ShortcutMenuBar = PopUpName
End With
24 сен 18, 14:55    [21684133]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
Архимедофф
Если на базе моего примера
Приме то где?
24 сен 18, 16:01    [21684264]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
Панург,

А вверху темы ))
24 сен 18, 16:33    [21684334]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4384
Архимедофф
А вверху темы ))
А, ну да...
24 сен 18, 17:43    [21684432]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Ламер Ламерович
Member

Откуда: от верблюда
Сообщений: 993
ROI
Панург
Кто так учил обращаться к формам? Следует обращаться к экземпляру формы в коллекции открытых форм, а не к классу формы.

А чё не так?
Вам не нравятся классы, или вы не умеете их готовить

Согласен с Панургом. Не следует так обращаться к формам.
Как отловить в какой строке и почему ошибка
25 сен 18, 08:06    [21684915]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1793
Ламер Ламерович
ROI
пропущено...

А чё не так?
Вам не нравятся классы, или вы не умеете их готовить

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

Вы сами прочитали про что там (разобрались?)
Так что ваша ссылка ни о чем. ("не читал но осуждаю")
25 сен 18, 09:36    [21684997]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Ламер Ламерович
Member

Откуда: от верблюда
Сообщений: 993
ROI
Ламер Ламерович
пропущено...

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

Вы сами прочитали про что там (разобрались?)

Про то, что обращения Form_ИмяФормы лучше избегать, но вы можете использовать, что хотите )
25 сен 18, 13:18    [21685361]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6269
Архимедофф,
зачем все усложнять?
см.Form3

К сообщению приложен файл (контекстМенюПодменю — копия.rar - 24Kb) cкачать
25 сен 18, 13:38    [21685403]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Ламер Ламерович
Member

Откуда: от верблюда
Сообщений: 993
ROI
Ламер Ламерович
пропущено...

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

Вы сами прочитали про что там (разобрались?)
Так что ваша ссылка ни о чем. ("не читал но осуждаю")


еще одна ссылка "ни о чем"
Свое событие формы
25 сен 18, 13:46    [21685417]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
sdku,

Может я не понятно пишу. Попробую еще раз :)
Вот скрин с тремя полями. Надо чтобы имена в контекстном меню формировались динамически. К ним привяжутся функции на исполнение.Например, стоим на первой записи (aaa) в поле1. Нажимаем правую кнопку и получаем: Выполнить aaa, Изменить aaa
Если стоим на второй записи(bbb) в поле1 и нажимаем правую кнопку и получаем: выполнить bbb, Изменить bbb и т.п.
Если уходим с поля, то возвращаемся забываем это меню и возвращаемся к стандартному.

К сообщению приложен файл. Размер - 12Kb
25 сен 18, 20:50    [21685960]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
И ваш файлик с добавленной таблицей и формой в аттаче.

К сообщению приложен файл (контекстМенюПодменю — копия.zip - 47Kb) cкачать
25 сен 18, 20:53    [21685965]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Predeclared
Member

Откуда: And God I know I'm one
Сообщений: 908
/Про офисную библиотеку не забываем

К сообщению приложен файл (2A3.zip - 14Kb) cкачать
25 сен 18, 21:49    [21686002]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6269
Архимедофф
sdku,
Может я не понятно пишу. Попробую еще раз :)
Вот скрин с тремя полями. Надо чтобы имена в контекстном меню формировались динамически. К ним привяжутся функции на исполнение.Например, стоим на первой записи (aaa) в поле1. Нажимаем правую кнопку и получаем: Выполнить aaa, Изменить aaa
Если стоим на второй записи(bbb) в поле1 и нажимаем правую кнопку и получаем: выполнить bbb, Изменить bbb и т.п.
Если уходим с поля, то возвращаемся забываем это меню и возвращаемся к стандартному.

пример делать не буду-на "пальцах" как-то так:
-при получении фокуса полем1 создаем контекстное меню в котором cbb.caption=me.поле1.text и присваиваем его этому полю. В меню cbb.OnAction="функцияИспользующаяЗначениеАктивногоЭлемента"
-при потере фокуса или переходе на другую запись "убиваем" это меню
Стесняюсь спросить:а почему без меню нельзя изменить это поле, а по двойному щелчку выполнить действие?
Или преодолеть выдуманные самим собой сложности-наш метод
25 сен 18, 23:26    [21686054]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
sdku, Predeclared , спасибо огромное. Немного разобрался и запилил что хотел благодаря вашим примерам.
Только мусор как подчисть не мойму.

К сообщению приложен файл. Размер - 5Kb
26 сен 18, 21:24    [21687404]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6269
Архимедофф,
Вы уж определитесь о чем речь-на скрине полеСоСписком, а в топике речь шла о контекстном меню. А это,таки,не одно и то же
26 сен 18, 23:44    [21687555]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Predeclared
Member

Откуда: And God I know I'm one
Сообщений: 908
Commandbars("имя").Delete
в Immediate window VBE
27 сен 18, 00:35    [21687598]     Ответить | Цитировать Сообщить модератору
 Re: OnAction замучил. Как победить?  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 618
А мне вот это непонятно...
=toExecute(""'" & IPNE & "','" & UBL_Cell & "'"")"

почему не
=toExecute(IPNE,UBL_Cell)
?
2 окт 18, 07:41    [21692133]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft Access Ответить