Как спозиционировать Browse на определённую запись?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Как спозиционировать Browse на определённую запись?
C10, ABC. На окне стандартный броуз с методом загрузки "File". Нужно после его формирования спозиционировать курсор на определённую запись (я её знаю). Когда, в каком методе это сделать?
We are hard at work… for you.
Как спозиционировать Browse на определённую запись?
Для установки на запись в Browse - ResetFromFile() или ResetFromBuffer() - по вкусу
Спозиционировался на нужную запись в основном файле - и вызываешь метод.
Спозиционировался на нужную запись в основном файле - и вызываешь метод.
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Как спозиционировать Browse на определённую запись?
А в какой момент (где) вызвать, допустим, ResetFromBuffer()? Или в этом методе спозиционировать на нужную запись в файле? Я, вообще, что имел в виду. Открывается окно с броузом, я знаю на какую запись поставить курсор. Нужно туда поставить. Если я спозиционирую на запись в файле в методе ResetQueue? Как при Select'е, да?
We are hard at work… for you.
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Как спозиционировать Browse на определённую запись?
Логично предположить, что где-то в конце WindowManager.Init()
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Как спозиционировать Browse на определённую запись?
не удачный вариант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 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Как спозиционировать Browse на определённую запись?
Пример, что понять как это работает.
Сделай в окне кнопку и повесь на нее код:
Код: Выделить всё
Clear(File.Record)
File.ID = MyRecordID
If ~Access:File.Fetch(File.ByID) then BRW1.ResetFromBuffer().
Далее, либо вызывай этот код в нужном месте, либо посылай Post(Event:Accepted,?MySelect) на нажатие этой кнопки ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Как спозиционировать Browse на определённую запись?
ResetFromBuffer() работает. Только пока в голову не возьму - отработали методы ResetQueue, ApplyFilter и т.д., очередь сформирована, при вызове ResetFromBuffer снова запускается ResetQueue ... Получается, что я должен либо искусственно вызвать ResetFromBuffer, либо опять же искусственно сделать get по сформированной очереди (метод загрузки "File" у меня). Рассчитывал на более красивый способ.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Как спозиционировать Browse на определённую запись?
Конечно можно залезть внутря метода, разобраться как он переводит засветку списка и исключить все ненужное.
Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Как спозиционировать Browse на определённую запись?
Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Как спозиционировать Browse на определённую запись?
еще вариант, как стать на нужную позицию, перед открытием окна и init() с browse (BRW1)
Код: Выделить всё
BRW1.StartAtCurrent = True
myfile01:prod_id = MyValue
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Как спозиционировать Browse на определённую запись?
Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
За теми кто отстал - не возвращаться. (С) Кодекс
Как спозиционировать Browse на определённую запись?
Если Browse имеет тип "File" - можно просто пробежаться по очереди, найти подходящую записьkreator писал(а): ↑24 Февраль 2016, 12:45Ну я посмотрел. Толку чуть. Всё завязано-перевязано. Действительно смысла нет нарушать установленный порядок вещей. Хотя, я ожидал, что, если я просто сделаю Fetch в таблицу, то ResetQueue на автомате отработает. Ан нет, всё сложнее.Игорь Столяров писал(а):Но это только, если есть непреодолимое желание заниматься оптимизацией этой операции ...
или найти запись по ключу. Наша цель - определить Pointer(Queue), а потом ставим запись в листбоксе.
Код: Выделить всё
! Курсор на место
?List{Prop:Selected} = Pointer( Queue )
! Подкачать связанные
ThisWindow.Update()
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Как спозиционировать Browse на определённую запись?
а результат, не тот же?Игорь Столяров писал(а): ↑20 Ноябрь 2018, 17:00Наверное, здесь следует упомянуть, что "myfile01:prod_id" - это поле сортировки VIEW, а не файла …
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Как спозиционировать Browse на определённую запись?
Результат получается, т.к. в данном случае это тот же самый механизм, что и при открытии BROWSE в режиме SelectRecord.
С этим проблем нет. Но вопрос был совсем другой: "после его формирования" (см. первое сообщение).
За теми кто отстал - не возвращаться. (С) Кодекс