Страница 1 из 1
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 11:44
kreator
C10, ABC. На окне стандартный броуз с методом загрузки "File". Нужно после его формирования спозиционировать курсор на определённую запись (я её знаю). Когда, в каком методе это сделать?
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 13:43
Yufil
Для установки на запись в Browse - ResetFromFile() или ResetFromBuffer() - по вкусу
Спозиционировался на нужную запись в основном файле - и вызываешь метод.
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 16:23
kreator
А в какой момент (где) вызвать, допустим, ResetFromBuffer()? Или в этом методе спозиционировать на нужную запись в файле? Я, вообще, что имел в виду. Открывается окно с броузом, я знаю на какую запись поставить курсор. Нужно туда поставить. Если я спозиционирую на запись в файле в методе ResetQueue? Как при Select'е, да?
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 16:46
Дед Пахом
Логично предположить, что где-то в конце WindowManager.Init()
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 17:17
gopstop2007
kreator писал(а): допустим, ResetFromBuffer()?
не удачный вариант
Не совсем ясно какой результат вам необходим, но может это поможет, стать на запись + файл
Код: Выделить всё
WAR:NWARES = EXP:NWARES
Get(Wares,WAR:NWARESKEY)
BRW1.Q.WAR:WARES = WAR:WARES ! в данном случае становимся по ключу который используется в
Get(Queue:Browse,BRW1.Q.WAR:WARES) ! Queue:Browse (по наименованию) иначе не станет на нужную запись
BRW1.ResetFromBuffer()
BRW1.TakeNewSelection()
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Февраль 2016, 19:55
Игорь Столяров
kreator писал(а): Открывается окно с броузом, я знаю на какую запись поставить курсор
Пример, что понять как это работает.
Сделай в окне кнопку и повесь на нее код:
Код: Выделить всё
Clear(File.Record)
File.ID = MyRecordID
If ~Access:File.Fetch(File.ByID) then BRW1.ResetFromBuffer().
По ее нажатию - должен получится переход на запись с MyRecordID.
Далее, либо вызывай этот код в нужном месте, либо посылай Post(Event:Accepted,?MySelect) на нажатие этой кнопки ...
Как спозиционировать Browse на определённую запись?
Добавлено: 24 Февраль 2016, 12:26
kreator
ResetFromBuffer() работает. Только пока в голову не возьму - отработали методы ResetQueue, ApplyFilter и т.д., очередь сформирована, при вызове ResetFromBuffer снова запускается ResetQueue ... Получается, что я должен либо искусственно вызвать ResetFromBuffer, либо опять же искусственно сделать get по сформированной очереди (метод загрузки "File" у меня). Рассчитывал на более красивый способ.
Как спозиционировать Browse на определённую запись?
Добавлено: 24 Февраль 2016, 12:32
Игорь Столяров
kreator писал(а): при вызове ResetFromBuffer снова запускается ResetQueue ...
Конечно можно залезть внутря метода, разобраться как он переводит засветку списка и исключить все ненужное.
Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
Как спозиционировать Browse на определённую запись?
Добавлено: 24 Февраль 2016, 12:45
kreator
Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Ноябрь 2018, 16:03
gopstop2007
еще вариант, как стать на нужную позицию, перед открытием окна и init() с browse (BRW1)
Код: Выделить всё
BRW1.StartAtCurrent = True
myfile01:prod_id = MyValue
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Ноябрь 2018, 17:00
Игорь Столяров
gopstop2007 писал(а): ↑20 Ноябрь 2018, 16:03еще вариант, как стать на нужную позицию
Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Ноябрь 2018, 22:00
Yufil
kreator писал(а): ↑24 Февраль 2016, 12:45
Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.
Если Browse имеет тип "File" - можно просто пробежаться по очереди, найти подходящую запись
или найти запись по ключу. Наша цель - определить Pointer(Queue), а потом ставим запись в листбоксе.
Код: Выделить всё
! Курсор на место
?List{Prop:Selected} = Pointer( Queue )
! Подкачать связанные
ThisWindow.Update()
Как-то так...
Как спозиционировать Browse на определённую запись?
Добавлено: 20 Ноябрь 2018, 23:04
gopstop2007
Игорь Столяров писал(а): ↑20 Ноябрь 2018, 17:00
gopstop2007 писал(а): ↑20 Ноябрь 2018, 16:03еще вариант, как стать на нужную позицию
Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
а результат, не тот же?
Как спозиционировать Browse на определённую запись?
Добавлено: 21 Ноябрь 2018, 9:07
Игорь Столяров
gopstop2007 писал(а): ↑20 Ноябрь 2018, 23:04а результат, не тот же?
Результат получается, т.к. в данном случае это тот же самый механизм, что и при открытии BROWSE в режиме SelectRecord.
С этим проблем нет. Но вопрос был совсем другой: "после его формирования" (см. первое сообщение).