Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
Имеется кнопка на форме помимо кнопки имеется листбокс и комбобокс.Нужно чтобы при нажатии на кнопку открывалась форма но критерий ее содержимого зависил от того,какое значение выбрано (листбокс или комбобокса). Пробовал воспользоваться методом Active.Control.Name на разных возможных событиях кнопки-всегда получается что Active.Control.Name это имя кнопки.Какой может быть выход?
10 окт 19, 18:03    [21991605]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
drafty,
1.А почему все это не "прикрутить" к событию листбокса или комбобокса?
2.Хотелось бы видеть Ваш код
10 окт 19, 18:14    [21991615]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
вдогонку: в момент нажатия кнопки Active.Control.Name=Имя кнопки
10 окт 19, 18:16    [21991616]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
__Michelle
Member

Откуда:
Сообщений: 3112
PreviousControl.

К тому же, не Active.Control, а ActiveControl.
10 окт 19, 18:26    [21991622]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
vmag
Member

Откуда: MP
Сообщений: 3283
drafty
Какой может быть выход?


выхода минимум два
1. кнопка не нужна, при выборе значения в листбоксе или комбобоксе сразу вызывать нужную форму.
2. сделать переменную, присвоить ей ноль, при выборе в листбоксе присваивать ей 1, при выборе в комбо присваивать ей 2. Соответственно в кнопке анализируем переменную: если 0 вообще ничего не выбрано, 1- в последний раз тыкались в листбокс, 2 - последний выбор из комбо
10 окт 19, 19:04    [21991645]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
__Michelle
PreviousControl.

К тому же, не Active.Control, а ActiveControl.

Попробую, завтра отпишусь
10 окт 19, 19:05    [21991648]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
vmag
Member

Откуда: MP
Сообщений: 3283
второй способ более подходит, мало ли сколько еще там элементов управления и сколько раз по ним тыкали
10 окт 19, 19:06    [21991649]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
__Michelle
PreviousControl.

К тому же, не Active.Control, а ActiveControl.
Не доглядел-вопрос "очень сложный" поэтому смотрел не внимательно
10 окт 19, 19:06    [21991650]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
sdku
drafty,
1.А почему все это не "прикрутить" к событию листбокса или комбобокса?
2.Хотелось бы видеть Ваш код

По техническим причинам пока не могу опубликовать код
10 окт 19, 19:51    [21991683]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
sdku
__Michelle
PreviousControl.

К тому же, не Active.Control, а ActiveControl.
Не доглядел-вопрос "очень сложный" поэтому смотрел не внимательно


...это опечатка,в редакторе vba написано как надо, иначе компилятор бы ругался,это уж мне известно
10 окт 19, 19:54    [21991685]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
drafty
По техническим причинам пока не могу опубликовать код
Ну раз не можете...Вот обработка события "нажатие кнопки".При этом из списка с мультивыбором,в зависимости от выбора,формируется строка WHERE для запроса [gruMyDate],используемая при его открытии:
Private Sub cmbGru_Click()
Dim i, mydate
For Each i In Me.list.ItemsSelected
    mydate = mydate & "," & Format(Me.Список4.ItemData(i), "\#mm\/dd\/yy\#")
Next
If mydate = Empty Then
    CurrentDb.QueryDefs("gruMyDate").SQL = "SELECT * FROM таблица1"
        Else
    CurrentDb.QueryDefs("gruMyDate").SQL = "SELECT * FROM таблица1 WHERE дата IN(" & Mid(mydate, 2) & ")"
End If
DoCmd.OpenQuery "gruMyDate"
End Sub
для поляСоСписком как-то так:
DoCmd.ApplyFilter , "дата=" & Format(Me.cmd, "\#mm\/dd\/yy\#")   
'если поле имеет тип дата\время
DoCmd.ApplyFilter , "поле=" & Me.cmd 'если число
DoCmd.ApplyFilter , "поле='" & Me.cmd & "'" 'если текст.Аналогично и в cmbGru_Click() при определении mydate
11 окт 19, 00:57    [21991771]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
Вдогонку: строку
mydate = mydate & "," & Format(Me.Список4.ItemData(i), "\#mm\/dd\/yy\#")
следует читать
mydate = mydate & "," & Format(Me.list.ItemData(i), "\#mm\/dd\/yy\#")
список4 и list-имеется ввиду один и тот же элемент-список
11 окт 19, 01:11    [21991773]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
__Michelle
PreviousControl.

К тому же, не Active.Control, а ActiveControl.

Да, действительно,лучшее решение для этого случая это Screen.PreviousControl.Name
Благодарю за помощь 👍👍👍
11 окт 19, 08:02    [21991791]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
drafty,
а если перед нажатием кнопки ткнули(случайно) не в тот элемент имя которого Вы хотите получить
vmag
....мало ли сколько еще там элементов управления и сколько раз(и по каким) по ним тыкали
11 окт 19, 13:13    [21992088]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
vmag
drafty
Какой может быть выход?


2. сделать переменную, присвоить ей ноль, при выборе в листбоксе присваивать ей 1, при выборе в комбо присваивать ей 2. Соответственно в кнопке анализируем переменную: если 0 вообще ничего не выбрано, 1- в последний раз тыкались в листбокс, 2 - последний выбор из комбо

Неплохой вариант (возьму на вооружение),но я сторонник того,что если есть уже готовое свойство или метод-лучше пользоваться им(для пополнения багажа 'знаний'),чем идти обходными путями
11 окт 19, 16:39    [21992373]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
drafty
Member

Откуда: Москва
Сообщений: 448
sdku
drafty,
а если перед нажатием кнопки ткнули(случайно) не в тот элемент имя которого Вы хотите получить
vmag
....мало ли сколько еще там элементов управления и сколько раз(и по каким) по ним тыкали

...на этот случай мною предусмотрена ветка с выдачей юзеру msgbox,,а потом Exit Sub (иначе выскакивает ошибка) 😉😉😉
11 окт 19, 16:42    [21992382]     Ответить | Цитировать Сообщить модератору
 Re: Определить какой элемент БЫЛ в фокусе на момент нажатия кнопки  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6281
sdku
drafty,
1.А почему все это не "прикрутить" к событию листбокса или комбобокса?
Это не потребует никаких MSGBOX и будет максимально просто
(не надо изобретать велосипед и создавать сложности там,где их нет)
11 окт 19, 19:16    [21992510]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить