|
|
|
| Имеется форма со списком записей и несколькими кнопками:Удалить, Редактировать, Новая и т.п.
В макросе AutoKeys на клавишу F4 посажен макрос такого вида:
КЭлементуУправления - КнопИзмен
КомандыКлавиатуры -"{Enter}"
Когда форма открыта, все работает нормально.
Когда форма закрыта, в окне выдается сообщение:"Команда КЭлементуУправления" в данное время недоступна".
Помогите, пожалуйста, сделать так, чтобы сообщение не появлялось.
1)Разрешить нажатие F4 только при активной форме ;
2)В том же макросе проверить, есть ли такой элемент управления;
3)В случае данной ошибки исполнения не предпринимать никаких действий.
Пока не представляю, как именно проделать что-то из этого списка. | |
|
| |
|
|
|
| а можен не имитировать нажатие кнопки, а просто вызвать ту функцию которая под кнопкой "КнопИзмен" | |
|
| |
|
|
|
| КнопИзмен, в зависимости от содержания записи, открывает для этой записи одну из 3 форм. В каждой из них редактируются данные одной этой записи.
Для открытия форм используется выражение типа "id=Me![id]"
Т.е. при закрытой форме функция все равно будет выдавать ошибку. | |
|
| |
|
|
|
| а проверить открыта форма или нет...
CurrentProject.AllForms("форма").isloaded
т.е. идея проста
вынести код в модуль в отдельную функцию
в ней проверять загруженность формы
использовать вместо me
screen.activeform
вызвать эту фунцкию и из кнопки и из макроса | |
|
| |
|
|
|
| Спасибо за идею.
На клавишу F4 посадить не макрос, а функцию.
В ней проверить if Application.CurrentObjectType= acForm And Application.CurrentObjectName= "Отгрузка" then
нужные действия.
Можно даже мою имитацию- перейти к объекту и нажать Enter | |
|
| |
|
|
|
| ну можно и так, если вам нужно что бы эта форма обязательно была активной...
можно туда же приделать select case для разных форм и вызывать одной клавишей разные функции для разных форм.
if Application.CurrentObjectType= acForm then
select case Application.CurrentObjectName
case "Форма1"
call func1
case "отгрузка"
call func2
case else
end select
end if
|
| |
|
| |
|
|
|
| Собственно, клавиша нужна мне для работы с активной формой. Набивка данных должна быть достаточно быстрой, без переключения внимания между клавиатурой и мышью.
Планируется еще две формы подобной структуры, с теми же клавишами. Только открывать они должны другие формы и совершать другие действия.
Можно и общей функцией для всех. А можно функцию с одним именем создавать внутри каждой формы. А вне форм держать другую, состоящую из заголовка и конца и не совершающую никаких действий (ну, на худой конец,выводящую окошко с сообщением).
Спасибо. Не дали пропасть. | |
|
| |