Фокус-покус (как перевести фокус из одной всплывающей и модальной формы на другую?)

DenneD
Дата: 28.11.2006 14:01:13
Здравствуйте. Есть форма, при двойном щелчке на поле которой открывается другая одиночная форма, состоящая из одного поля. Обе формы всплывающие и модальные. Что бы ввести данные в эту открывающуюся форму, нужно сначала кликнуть на нее мышью. То есть фокус на нее при ее открытии не переводится никаким способом. Как можно исправить положение?
Karfaqen
Дата: 28.11.2006 14:11:18
Только что сделал. База mdb, msa2000. Две формы без источника по одному контролу типа acTextBox в каждой. Обе всплывающие, модальные. В первой на DblClick поля открытие второй формы:
Private Sub Поле0_DblClick(Cancel As Integer)
    DoCmd.OpenForm "AA2"
End Sub
Фокус встает на поле второй формы. Никаких проблем. Что-то вы недоговариваете.
mds_world
Дата: 28.11.2006 14:11:28
При щелчке на первой, вызывающей форме делайте ее невидимой. Отработав со второй формой, при ее удалении, или в другой подходящий момент, переводите первую форму в обычный для нее режим
Allll
Дата: 28.11.2006 14:15:02
Такая же фигня... :)

Фокус всегда сам устанавливается на новой форме.

Попробуйте так:
    DoCmd.OpenForm "Форма2"
    DoCmd.SelectObject acForm, "Форма2" ' выбрать форму
DenneD
Дата: 28.11.2006 14:15:40
Невидимой форму делать никак нельзя, потому что открываемая из нее форма занимает процентов 5 экрана и должна быть поверх первой.
DenneD
Дата: 28.11.2006 14:19:45
Не получается. Из этой же формы точно таким же образом открывается еще одна форма, но она содержит подчиненную табличную форму. И вот с ней никаких проблем нет - фокус сам устанавливается в нее при ее открытии.
Karfaqen
Дата: 28.11.2006 14:34:46
Может у вас код какой по событиям работает, меняя активность форм?
mds_world
Дата: 28.11.2006 14:47:49
Вот такой любопытный вопрос. А не может быть, что на второй форме, на которую нЕ переводится фокус, единственный контрол, который на ней есть в состоянии Нет Доступа (Enable = False) ?
DenneD
Дата: 28.11.2006 15:14:16
Нет, с этим все впорядке
все впорядке
Allll
Дата: 28.11.2006 15:47:13
А попробуйте посмотреть, где находится фокус после открытия второй формы.

В первой форме включите таймер и поставьте обработчк:
    Me.TimerInterval=2000   ' интервал 2 секунды
    DoCmd.OpenForm "Форма2"  ' запуск второй формы

Private Sub Form_Timer()
    MsgBox Screen.ActiveForm.Name & vbNewLine & Screen.ActiveControl.Name
End Sub

А потом поиском в модулях попробуйте найти строчки с этими формой и контролом. Может всё-таки программно передаёте куда-то фокус.