Как спозиционировать Browse на определённую запись?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как спозиционировать Browse на определённую запись?

Сообщение kreator »

C10, ABC. На окне стандартный броуз с методом загрузки "File". Нужно после его формирования спозиционировать курсор на определённую запись (я её знаю). Когда, в каком методе это сделать?
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как спозиционировать Browse на определённую запись?

Сообщение Yufil »

Для установки на запись в Browse - ResetFromFile() или ResetFromBuffer() - по вкусу
Спозиционировался на нужную запись в основном файле - и вызываешь метод.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как спозиционировать Browse на определённую запись?

Сообщение kreator »

А в какой момент (где) вызвать, допустим, ResetFromBuffer()? Или в этом методе спозиционировать на нужную запись в файле? Я, вообще, что имел в виду. Открывается окно с броузом, я знаю на какую запись поставить курсор. Нужно туда поставить. Если я спозиционирую на запись в файле в методе ResetQueue? Как при Select'е, да?
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Как спозиционировать Browse на определённую запись?

Сообщение Дед Пахом »

Логично предположить, что где-то в конце WindowManager.Init()
С уважением, ДП
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Как спозиционировать Browse на определённую запись?

Сообщение 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()
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Как спозиционировать Browse на определённую запись?

Сообщение Игорь Столяров »

kreator писал(а): Открывается окно с броузом, я знаю на какую запись поставить курсор
Пример, что понять как это работает.
Сделай в окне кнопку и повесь на нее код:

Код: Выделить всё

  Clear(File.Record)
  File.ID = MyRecordID
  If ~Access:File.Fetch(File.ByID) then BRW1.ResetFromBuffer().
По ее нажатию - должен получится переход на запись с MyRecordID.
Далее, либо вызывай этот код в нужном месте, либо посылай Post(Event:Accepted,?MySelect) на нажатие этой кнопки ...
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как спозиционировать Browse на определённую запись?

Сообщение kreator »

ResetFromBuffer() работает. Только пока в голову не возьму - отработали методы ResetQueue, ApplyFilter и т.д., очередь сформирована, при вызове ResetFromBuffer снова запускается ResetQueue ... Получается, что я должен либо искусственно вызвать ResetFromBuffer, либо опять же искусственно сделать get по сформированной очереди (метод загрузки "File" у меня). Рассчитывал на более красивый способ.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Как спозиционировать Browse на определённую запись?

Сообщение Игорь Столяров »

kreator писал(а): при вызове ResetFromBuffer снова запускается ResetQueue ...
Конечно можно залезть внутря метода, разобраться как он переводит засветку списка и исключить все ненужное.
Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как спозиционировать Browse на определённую запись?

Сообщение kreator »

Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ... ;)
Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Как спозиционировать Browse на определённую запись?

Сообщение gopstop2007 »

еще вариант, как стать на нужную позицию, перед открытием окна и init() с browse (BRW1)

Код: Выделить всё

BRW1.StartAtCurrent = True
myfile01:prod_id = MyValue
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Как спозиционировать Browse на определённую запись?

Сообщение Игорь Столяров »

gopstop2007 писал(а): 20 Ноябрь 2018, 16:03еще вариант, как стать на нужную позицию
Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как спозиционировать Browse на определённую запись?

Сообщение Yufil »

kreator писал(а): 24 Февраль 2016, 12:45
Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ... ;)
Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.
Если Browse имеет тип "File" - можно просто пробежаться по очереди, найти подходящую запись
или найти запись по ключу. Наша цель - определить Pointer(Queue), а потом ставим запись в листбоксе.

Код: Выделить всё

 
 ! Курсор на место 
 ?List{Prop:Selected}  = Pointer( Queue ) 
 ! Подкачать связанные 
 ThisWindow.Update() 
 
Как-то так...
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Как спозиционировать Browse на определённую запись?

Сообщение gopstop2007 »

Игорь Столяров писал(а): 20 Ноябрь 2018, 17:00
gopstop2007 писал(а): 20 Ноябрь 2018, 16:03еще вариант, как стать на нужную позицию
Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
а результат, не тот же? :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Как спозиционировать Browse на определённую запись?

Сообщение Игорь Столяров »

gopstop2007 писал(а): 20 Ноябрь 2018, 23:04а результат, не тот же?
Результат получается, т.к. в данном случае это тот же самый механизм, что и при открытии BROWSE в режиме SelectRecord.
С этим проблем нет. Но вопрос был совсем другой: "после его формирования" (см. первое сообщение).
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить