Страница 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.
С этим проблем нет. Но вопрос был совсем другой: "после его формирования" (см. первое сообщение).