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

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

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

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

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

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

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

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


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

Откуда: Башкирия
Сообщений: 453
' с кавычками помойму что-то перекручено, и "=" нужно убрать 
 ' т.е.
        .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
Сообщений: 847
Правильнее всего пользовать подписку.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда:
Сообщений: 382
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

К сообщению приложен файл (контекстМенюПодменю — копия.rar - 24Kb) cкачать
25 сен 18, 13:38    [21685403]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить