Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вернуть фокус из подчиненной формы предыдущему элементу главной формы? / 7 сообщений из 7, страница 1 из 1
18.03.2004, 18:49
    #32448054
dkny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
Здравствуйте. Столкнулся с такой проблемой:

Есть главная форма, в ней есть подчиненная в табличном виде. Т.к. в подчиненной форме много записей, то последние записи уходят за пределы окна и для их просмотра приходится пользоваться скроллом (а в особых случаях и Ctrl+End). Так вот, чтобы этого избежать я сделал передачу фокуса подчиненной форме и переход в ней на последнюю запись:

Код: plaintext
1.
2.
Me.Форма_заказы.SetFocus
DoCmd.GoToRecord acActiveDataObject, , acLast


Но очень не хочется оставлять фокус на этой подчиненной форме, т.к. ее задача только показать их (кстати, если есть более разумный способ показать конец таблицы, то подскажите).

Для редактирования записей и последующего просмотра нужен фокус на главной форме. Метод Me.Parent.SetFocus почему-то не срабатывает, а других я не знаю :)

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

Так вот, как мне изменить поле "Учетный номер", увидеть низ подчиненной формы и снова иметь фокус в поле "Учетный номер"?

Буду рад, если покажете на пальцах


P.S. А как сделать условное форматирование в табличной форме, но выделять не ячейку, а сразу строку по определенному условию? Это нужно, чтобы сразу видеть какие заказы оплачены, а какие нет. Стандартное средство условного форматирования "кнопочками" Access этого не позволяет (что странно).
...
Рейтинг: 0 / 0
18.03.2004, 20:57
    #32448194
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
dim c as control
set c=me.activecontrol
Me.Форма_заказы.SetFocus
DoCmd.GoToRecord acActiveDataObject, , acLast
c.SetFocus
...
Рейтинг: 0 / 0
19.03.2004, 09:22
    #32448458
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
так не прокатит?

Me.Форма_заказы.form.recordset.movelast
...
Рейтинг: 0 / 0
19.03.2004, 09:59
    #32448538
dkny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
Отчет о применении советов:

1. Метод Саныча выглядит более универсальным (идея понятна), но к желаемому результату не приводит. Почему?

Подробнее о том как я его проверял:

В код текущей записи главной формы вставляю это ноу-хау. Запускаю форму. Перехожу в поле примечание, нажимаю Ctrl+F и ищу с любой частью поля, скажем, "груз" (таких записей 42 штуки). Поиск выполняется до первой записи, показывает ее, но курсор (или фокус, кстати, это одно и то же? а то мало ли) остается на последней записи подчиненной формы (там список всех заказов). После этого мне приходится вручную возвращаться в поле "Примечание" главной формы и нажимать "Далее" и так 42 раза :)

2. Метод Алексея работает! :) Т.е. в подчиненной форме показывается нужный низ выборки и при этом фокус остается на текущем контроле. Единственное, что меня смущает, это то, что где-то в процессе поиска чего-уже-не-помню-что (ну, правда не помню :), ЛП или ХТ строго _не_ рекомендовали использовать для этого Recordset.

Может быть, кто-то объяснить разницу GoToRecord и Recordset.MoveLast? А заодно не подкинет идейку почему способ №1 не сработал?

P.S. Забыл сказать что у меня Access 2003.
...
Рейтинг: 0 / 0
19.03.2004, 10:06
    #32448561
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
после операций с рекордсетом нужно над флажками рисовать прозрачный контрол и на его клик делать

me.recordset("данныефлажка") = not me.recordset("данныефлажка")

иначе "придется сходить на микрософт"
...
Рейтинг: 0 / 0
19.03.2004, 10:10
    #32448571
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
Код: plaintext
1.
2.
3.
4.
set c=me.activecontrol 
Me.Форма_заказы.form.SetFocus
Me.Форма_заказы.form.Controls( 1 ).SetFocus 
DoCmd.GoToRecord acActiveDataObject, , acLast 
c.SetFocus 
...
Рейтинг: 0 / 0
19.03.2004, 16:17
    #32449658
dkny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вернуть фокус из подчиненной формы предыдущему элементу главной формы?
Спасибо! Хоть я и не понял ничегошеньки про флажки и его контролы, и вообще, "чё творится то?!".

А второй (последний) вариант вызывает просто ужасное количество ошибок, в результате чего, я от него отказался. Сначала не понравилось, что при открытии формы фокус переходит на control "список". Потом ошибка выскочила при работе с полем со списком, ругнулся на то, что невозможен переход к указанной записи (выделение стояло на: Me.Bookmark = rs.Bookmark). И, наконец, записи в форме перестали листаться скроллом. Короче, полный бедлам

That's all folks...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вернуть фокус из подчиненной формы предыдущему элементу главной формы? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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