Страница 1 из 1
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 10 Март 2022, 13:26
kreator
ABC. Есть форма на броузах (не на дропах и дропкомбо). Надо при её открытии позиционировать эти броузы на определённую запись. Как? Вроде есть свойство StartAtCurrent для этого. Но что-то не получается, делаю по хелпу. Что можно сделать?
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 10 Март 2022, 14:05
ingasoftplus
чтобы это работало - надо сначала инициализоровать (взять) запись, а уж потом применять это свойство.
типа этого (где-то в Init процедуры ):
Код: Выделить всё
! Check for "Browse Priming" variable ...
if GLO:PrimeBrowse <> ''
clear(APR:Record)
APR:Name = GLO:PrimeBrowse
set(APR:ByName,APR:ByName)
next(ACCPROF)
if errorcode()
clear(APR:Record)
.
BRW1.StartAtCurrent = true
.
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 10 Март 2022, 15:22
kreator
Я типа такого и делаю (как раз в Init броуза до "Parent Call"):
Код: Выделить всё
if wm.Request=ChangeRecord or wm.Request=ViewRecord
ASP0:ID_SPR = DEF:VID
Access:A0SPRAV.Fetch(ASP0:PrimaryKey)
self.StartAtCurrent = True
end
Чего-то не хватает, видимо. Может быть не в том месте?
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 10 Март 2022, 15:35
ingasoftplus
в INIT окна. после инициализации бровзов.
т.е. у меня явно BRW1.StartAtCurrent = true
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 11 Март 2022, 9:08
Игорь Столяров
Господа ! Всё очень правильно - но только в Ваших примерах должен быть включен режим SelectRecord.
А вообще, тема подробно разбиралась вот здесь:
viewtopic.php?f=1&t=3606
И вот здесь:
viewtopic.php?t=2525
Дежавю ?
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 11 Март 2022, 16:07
kreator
Возможно. Только устойчивого решения нет. Всё великолепно работает, если это окно с одним броузом, да ещё и в режиме SelectRecord.
Игорь Столяров писал(а): ↑11 Март 2022, 9:08
только в Ваших примерах должен быть включен режим SelectRecord.
Я как раз и уцепился за этот StartAtCurrent, потому что вроде как это свойство для этого. Если посмотреть метод BrowseClass.SetSort:
Код: Выделить всё
IF (SELF.Selecting OR SELF.StartAtCurrent) AND ~SELF.Loaded
, то это как раз замена SelectRecord.
И, да, у меня форма с множеством броузов.
ingasoftplus писал(а): ↑10 Март 2022, 15:35
в INIT окна. после инициализации бровзов.
т.е. у меня явно BRW1.StartAtCurrent = true
И, да, это не работает тоже. Увы.
Скорее всего причина в том, что у меня несколько броузов по одной таблице. Надо искать другие варианты.
Позиционирование записи при загрузке Browse и StartAtCurrent
Добавлено: 11 Март 2022, 16:33
Игорь Столяров
kreator писал(а): ↑11 Март 2022, 16:07
если это окно с одним броузом, да ещё и в режиме SelectRecord
Да. Именно так. Мы открываем список и сразу подсвечиваем ранее выбранное значение (запись).
И здесь никто не может сказать, что есть какие-то проблемы с логикой работы приложения ...
kreator писал(а): ↑11 Март 2022, 16:07
что у меня несколько броузов по одной таблице
Технологически - это не проблема, ведь каждого BROWSE свой буфер VIEW.
Сложнее с событиями, точнее даже с последовательностью их обработки ...
Я бы рекомендовал попробовать сделать как в первой ссылке - попробуйте добавить
скрытую кнопку по нажатию которой выполняется задуманное Вами позицирование записей.
Если это в принципе работает - "нажимайте" эту кнопку по событию после открытия окна и всё.