Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запустить программу из подформы сочетанием клавиш
 
 автор: Olegza   (19.03.2009 в 09:23)   личное сообщение
 
 

Подскажите плз как сделать.
Есть форма - в ней некоторое количество полей, кнопка "Печать" и подформа в табличном виде.
Нельзя ли как-то запускать программку, которая сейчас запускается нажатием на кнопку "Печать" непосредственно из подформы (сочетанием клавиш?).
Сейчас все поля на форме заполняются с клавиатуры, переход в подформу тоже клавиатурой и приходится затем отлавливать на столе мышь и топтать на кнопку ей, что не очень удобно. Нельзя ли как-то с клавиатуры и запуск программы тоже? (Или, как вариант, сочетанием клавиш - фокус на кнопку "Печать"???)

  Ответить  
 
 автор: Кабан   (19.03.2009 в 09:39)   личное сообщение
 
 

ежели в надписи на кнопке(или на другом элементе формы)
перед какимто символом поставить &
то этот символ станет на кнопке с подчеркиванием
что означает, что вы можете перейти на эту кнопку по "горячим следам" ,
нажав комбинацию клавиш Alt+<Тот самый подчеркнутый символ>
и следите за раскладкой

ну или более сложный путь - назначить комбинации клавиш в макросе Autokeys (кажись так)

  Ответить  
 
 автор: OlegZa   (19.03.2009 в 16:08)   личное сообщение
 
 

Спасибо. Буду пробовать!

  Ответить  
 
 автор: OlegZa   (19.03.2009 в 17:46)   личное сообщение
 
 

А нельзя никак поконкретнее что-то где-то почитать насчёт макросов AutoKeys?
А то Alt+"клавиша" из подчиненной формы никак работать не хочет. Из главной - пожалуйста, а из подчинённой - нишиша.
Я уже попробовал в подчиненной форме другую кнопочку смастырить в режиме конструктора. Но, - то ли потому, что в работе она в режиме таблицы, то ли ещё почему - и это тоже не сработало...

  Ответить  
 
 автор: OlegZa   (21.03.2009 в 10:28)   личное сообщение
 
 

Доброго всем времени суток!
С Макросами AutoKeys разобрался сам. Макрос сочетанию клавиш назначил и всё даже заработало.
Попутно возник ещё вопрос. При нажатии комбинации клавиш я хочу проверить - загружена и активна ли та форма в которой, собственно, мне и надо запустить программку (мне кажется, что так будет правильно). Проблема в том, что на строчке в коде

If IsLoaded("Имя формы") = True Then 
...
выдаёт ошибку : Compile error Sub or Function not defined (Я так понимаю: "Процедура или функция не определена").
Подскажите плз., почему "не определена"? Может быть надо какую-то библиотеку где-то подключить??? Или я что-то неправильно пишу в коде?

  Ответить  
 
 автор: snipe   (22.03.2009 в 03:58)   личное сообщение
 
 

Доброго времени суток.....
вот выдрал из своей базки кусок кода - попробуй может поможет.....
(сам код тупо переписал из какой то книги)

Private Sub Кнопка533_Click()

Dim IsFormOpen As Boolean
Dim objAccess As AccessObject, dbObject As Object
Set dbObject = Application.CurrentProject
For Each objAccess In dbObject.AllForms
If objAccess.IsLoaded = True And objAccess.Name = "Основная1" Then
IsFormOpen = True
Exit For
Else
IsFormOpen = False
End If
Next objAccess

If IsFormOpen = True Then
DoCmd.Close acForm, "сроки"
Else
DoCmd.OpenForm "Стартовая форма", acNormal, "", "", , acNormal
DoCmd.Close acForm, "сроки"
End If

End Sub




суть всего этого хода в следующем - пользователь может попасть с форму "сроки" двумя путями из "стартовой формы" или из "основной1", но что бы попасть в форму "основная1" пользователю нужно ввести пароль. если пользователь попал в форму "сроки" через "стартовую форму" то форма "основная1" не открыта а если через форму "основная1" - то соответственно форма открыта (она не закрывается в момент запуска формы "сроки") Теперь если пользователь захочет выйти из формы "сроки"- то он попадет в форму "основная1" без ввода пароля, либо (если "основная 1" закрыта) в "стартовую форму" для ввода пароля. Ну а что бы это реализовать весь это бред нужно было просто проверить открыта форма "основная 1" или нет

  Ответить  
 
 автор: OlegZa   (22.03.2009 в 08:15)   личное сообщение
 
 

snipe, спасибо за отклик.
Попобовал ваш код - по-честному не очень понравилось, что запускается цикл For... Next (усложняет - замедляет).
Вышел из положения таким вот образом (код нарыл здесь же):

If Application.CurrentObjectType = acForm And Application.CurrentObjectName = "Имя проверяемой формы " Then

Не совсем устраивает то, что по-факту проверяется не открыта ли форма, а только активна ли она (если форма не открыта, а просто выделена в окне БД - то

Application.CurrentObjectName = "Имя пров. формы"
- всё-равно будет True (в Вашем, кстати, примере - та же история)), но, в общем и целом работает. В режиме пользователя же окно БД не открыто
В любом случае - за отклик - спасибо.

  Ответить  
 
 автор: час   (22.03.2009 в 09:57)   личное сообщение
 
 

Вот ещё вопрос-ответ
====================================
Вопрос: Как проверить открыта ли форма

Совет:


Function fIsLoaded(ByVal strFormName As String) As Boolean
'функция возращает True, если форма загружена или False - если нет
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> 0 Then
If Forms(strFormName).CurrentView <> 0 Then fIsLoaded = True
End If
End Function



'Для MSA2000 и выше:


Function IsFormLoaded(strNameFRM As String) As Boolean
IsFormLoaded = CurrentProject.AllForms(strNameFRM).IsLoaded
End Function

  Ответить  
 
 автор: OlegZa   (23.03.2009 в 07:47)   личное сообщение
 
 

Час. Спасибо - не дали пропасть.
Ваш код (второй, т.к. MSA2000) прописал отдельным модулем.
При попытке обращения к нему выдаёт ошибку: Compile error: Expected variable or procedure, not module. (По-моему разумению - он от меня ждёт переменную или процедуру, а вовсе не модуль...).
Поясните плз. Мне что, не надо было в процедуры функцию эту писать? Тогда куда? Или я чего-то понял не так?
Заранее спасибо.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList