Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Приветствую всех.
Как можно реализовать в browse при скролировании в списке, чтобы связанные данные не подгружались пока не остановишься?
Наподобие Lazy image load.
Может где было, не нашел
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
А не подгружались куда?
Можно убрать "Immediate" у листа. Тогда событие NewSelection будет срабатывать только при явном выборе записи, скроллирование при этом будет быстрым. Но лично мне не нравится такой путь. Я предпочитаю по возможности всё загнать в очередь, чтобы не было тормозов при прокрутке листа.
kreator писал(а): 04 Сентябрь 2017, 17:39
А не подгружались куда?
Все это на клиенте, сервер находится на хостинге. Например список товара и несколько связанных таблиц(списков), все это находится на сервере. Чтобы не гонять(загружать) впустую данные при выборе (скрол верх или скрол вниз - скролировании) записей, а только когда остановишься на нужной записи, например задержка 0.5-1 секунда и данные отобразились.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Игорь Столяров писал(а): 04 Сентябрь 2017, 18:11
Первое, что приходит в голову: разорвать эти связи и подгружать данные из связанных списков "вручную" при отсутствии активности по таймеру ...
связи разорвать не проблема, проблема в реализации, таймер впихивать в event самой таблицы или вешать на подгружаемые таблицы, да и таймер на окно не хотелось бы вешать поэтому и спрашиваю вашего совета.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ну попробуй как я советовал. Убери у листа "Immediate". Связанные таблицы будут обновляться только при явном выборе записи в основном броузе. Но, скорее всего, ничего хорошего не выйдет. Веб-морда, терминал и далее по списку.
Делал когда-то кэширование полей. Собственно, в Browse загружалась только основная таблица, остальные подкачивались сначала из очереди в памяти, а потом (в случае отсутствия) из базы, с помещением в очередь (методы brw1.next() и Brw1.previous()) . По крайней мере, просмотр пролистанных ранее записей вполне прилично смотрелся.