Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как заставить форму при получении фокуса отдавать его предыдущему объекту? / 8 сообщений из 8, страница 1 из 1
15.06.2004, 21:48
    #32562577
alex_pf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
Как заставить форму при получении фокуса отдавать его предыдущему объекту, кто бы это ни был (табл, отчет, окно базы данных, что угодно)?
Одно решение у меня есть, но то, что оно основывается на SendKeys "^{F6}", стабильности работы не добавляет. Замену ищу именно "^{F6}". Все константы DoCmd.RunCommand перерыл, не нашел.

Вот пример кода. Фактически это форма, заменяющая рабочий стол MDI. Форма bkgrnd_2 имеет размеры 0х0 и фактически не видна, хотя по свойствам визибл. Открываю, чтоб фоновой форме было, кому фокус отдавать, когда ничего юзер не открыл и она не зациклилась.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Option Compare Database
Option Explicit
Dim unVis As Boolean

Private Sub Form_GotFocus()
Debug.Print "Form_GotFocus"
    DoCmd.restore
    Me.TimerInterval =  1 
End Sub

Private Sub Form_LostFocus()
    Debug.Print "lostfocus"
    Me.TimerInterval =  0 
End Sub

Private Sub Form_Open(Cancel As Integer)
Debug.Print "Form_Open"
    DoCmd.OpenForm "bkgrnd_2"
End Sub

Private Sub Form_Timer()
On Error GoTo ex_
    
Debug.Print "Form_Timer"
    
    If unVis Then
        Debug.Print "f6"
        SendKeys "^{F6}"
    Else
        unVis = True
    End If
ex_:
    Exit Sub
End Sub
...
Рейтинг: 0 / 0
15.06.2004, 21:49
    #32562579
alex_pf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
MS Access '97
...
Рейтинг: 0 / 0
15.06.2004, 21:59
    #32562585
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
По логике - никак форма же не знает, кто ее создал.

Нужно передать в форму - ее родителя (это не сложно, но накладывает некоторые ограничения). Или сделать все из самого родителя (объекта открывающего форму)
...
Рейтинг: 0 / 0
15.06.2004, 22:09
    #32562592
alex_pf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
С знанием предыдущего объекта проблем нет - фишка как раз в том чтоб было по фигу, кто это. Нужно просто аналог ^{F6}, но без SendKeys, потому как ента функция любит намлок вырубать и вообще гадость непредсказуемая. ^{F6} - фишка стандартная, но непонятно чья - аксессная или апишная, не знаю с чего начать искать.
...
Рейтинг: 0 / 0
15.06.2004, 22:11
    #32562593
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
Может я не понял, но по моему

The following example selects the form Customers in the Database window:

DoCmd.SelectObject acForm, "Customers", True
...
Рейтинг: 0 / 0
15.06.2004, 22:16
    #32562601
alex_pf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
vam911Нужно передать в форму - ее родителя (это не сложно, но накладывает некоторые ограничения). Или сделать все из самого родителя (объекта открывающего форму)

форму эту я ставлю в автозагрузку, а потом не закрываю и, потому не открываю. Просто нужно сделать, чтоб ей нельзя было передать фокус.

vam911Может я не понял, но по моему

The following example selects the form Customers in the Database window:

DoCmd.SelectObject acForm, "Customers", True

Когда я, как юзер нажимаю пальцами на ^f6, я не задумываюсь, какая форма была предыдущая, и как она называлась, цель в том чтоб фоновая форма тоже об этом не задумывалась, а то придется вставлять в готфокус каждой формы регистрацию.
...
Рейтинг: 0 / 0
15.06.2004, 22:25
    #32562609
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
Понял. Были те же проблемы. Но много лет назад. Ршение не помню. Но точно знаю, что оно есть. ИЩИ!
...
Рейтинг: 0 / 0
15.06.2004, 22:45
    #32562630
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить форму при получении фокуса отдавать его предыдущему объекту?
Можно, чтобы каждая форма при потере фокуса заносила свое имя в глобальную переменную. И тогда эта переменная всегда будет знать, какая форма была предыдущей.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как заставить форму при получении фокуса отдавать его предыдущему объекту? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]