Основная проблема заключается в том, что события обновления и загрузки являются «серверными» событиями в архитектуре SD, поэтому у вас нет доступа к API-интерфейсам или ресурсам устройства, таким как индикатор прогресса.
У нас было такое же требование в iOS, и то, что мы делали, использовало событие GXRefresh.
Event 'gxrefresh'
Composite
//Your code. Example: ProgressIndicator.Hide()
EndComposite
EndEvent
Gxrefresh - это локальное событие, которое выполняется после обновления и загрузки. Является скрытым событием, которое помогло нам выполнить это. (Это не официальное мероприятие, и оно может быть принято в любой версии GeneXus) Так решение:
- Запуск индикатора хода на события ClientStart этой панели.
- Скрыть индикатор прогресса в событии 'gxrefresh' этой панели.
Примечание: помните, что для использования события gxrefresh вам нужно будет добавить скрытую кнопку с именем «gxrefresh». Вы можете скрыть эту кнопку, поскольку она вам не понадобится в пользовательском интерфейсе (мы указываем Visible = false на панели приложений).
Если это решение по какой-либо причине невозможно (например, событие gxrefresh устарело или вы разрабатываете для Android), я могу думать о втором WA, который не является элегантным вообще, но должен работать.
- Старт Индикатор Прогресс в Client Start Event панели
- Поместить скрытую переменную с типом управления SD хронометр.
- Установите таймер на 6 секунд
- Остановите индикатор прогресса на событии Tick SD-хронометра и остановите хронометр, чтобы событие Tick больше не выполнялось.
Это два варианта, о которых я могу думать. Возможно, есть более простой способ, но я не слышал об этом. Событие Grid.DidLoad было бы замечательно для этого сценария. Конечно, у нас будет это скоро или какое-то другое решение для этой проблемы.
Ссылка:
SD хронометр: http://wiki.genexus.com/commwiki/servlet/hwikibypageid?25058
SD Событие: http://wiki.genexus.com/commwiki/servlet/hwikibypageid?17042
стороны сервера Событие: http://wiki.genexus.com/commwiki/servlet/hwikibypageid?24234
Здравствуйте. Спасибо за ваши отзывы, это было очень поучительно. Итак, мой поиск «Поиск» начинается с инструкции «ProgressIndicator.ShowWithTitleAndDescription (« MyApp »,« Please wait ... »)», затем вызывается процедура. Однако кажется, что ProgressIndicator автоматически скрывается на линии endEvent, даже если я опускаю инструкцию «ProgressIndicator.Hide()». Поэтому, когда приходит следующий SDEvent (gxrefresh или chronometer.tick), индикатор прогресса уже скрыт. Есть ли что-нибудь еще, что я мог бы попробовать? – Jaime
Это верно, индикатор прогресса автоматически скрывается после окончания события. Вы выполняете обновление в своем поисковом мероприятии? – Franklin
Да, сразу после события поиска (для обновления данных в сетке). – Jaime