• 0
Ivan B.

Выполнение операции после скрытия меню

Вопросы

Всем привет.
Приложение для Android.
Казалось бы, простая задача...

На MultiView лежит ListBox с пунктами меню.
При нажатии на пункт меню вызывается процедура (CreatePreview) (на форме в TTabControl создается вкладка, в этой вкладке создается VertScrollBox, в нем создается плитка из n-го количества TPanel'ей с картинкой и текстом).

Так вот, вызываю у MultiView метод HideMaster, затем уже эту процедуру. 
Однако, пока всё не прорисуется, меню не скрывается. А мне еще нужно индикатор выполнения процесса прикрутить.

Вопрос: как сначала скрыть меню, а уже потом выполнить процедуру или сделать это одновременно? 

Изменено пользователем Ivan B.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 0

-Прячете листбокс
-Перерисовываете форму (точно процедуру не помню, попробуйте TForm.Refresh, TForm.RePaint, TForm.Update)
-Выполняете долгое действие

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, Barbanel сказал:

-Перерисовываете форму (точно процедуру не помню, попробуйте TForm.Refresh, TForm.RePaint, TForm.Update)

TForm.Invalidate

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

есть более интересный и по-мне, более правильный способ

по нажатию в меню не сразу выполняете что-то, а ЗАПИСЫВАЕТЕ действие, которое ВЫПОЛНИТСЯ по событию закрытия мультивью

тогда реакция наступает визуально правильная и дальше крутите колеса, запускайте потоки и все такое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Процедура Invalidate не перерисовывает форму немедленно, она лишь добавляет сообщение на перерисовку в очередь сообщений.
Соотв. форма перерисуется когда не будет других событий в очереди, в данном случае - после всех длительных операций или после вызова .ProcessMessages

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Всем спасибо за ответы - сделал, как посоветовал "krapotkin"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу