Форма ожидания

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Форма ожидания

Сообщение S_Gur » 09.09.2019 09:46:50

Господа знатоки компонентов Лазаруса, обращаюсь к вам за очередным советом. Мне нужно сделать StayOnTop форму, висящую, когда программа выполняет какое-нибудь длительное действие, и в каком-то презентабельном виде отображающую динамику процесса. В Дельфях в случае не особо внятноописываемого процесса я использовал TAnimate, если нужно было вывести сообщение - Rx-овский или Jedi TSecretPanel, выполняющий скроллинг строки. Есть ли что-то подобное в Лазарусе, чтобы не тратить время на написание чего-то своего?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение Vadim » 09.09.2019 10:03:29

S_Gur
Есть компонент LazVLC. Отображает на любой форме работу VLC-плеера. Пока в программе идёт что-нибудь серьёзное, клиенту в StayOnTop форме можно показывать мультик "Том и Джерри"... ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 10:24:06

Vadim писал(а):можно показывать мультик "Том и Джерри"

Да-да... А еще лучше 10 серий "ТАСС уполномочен заявить"... :D
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение CynicRus » 09.09.2019 10:49:15

Насколько я помню, TAnimate позволяет проигрывать авишки до 64 килобайт. Тут прямого аналога - разве что прикручивать VLC, что для такой задачи уж слишком громоздко. Пожалуй можно кросплатформенно заменить на TGFiViewer и тот же SecretPanel из RX. Ну а авишки перегнать в гифки.
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 11:06:16

CynicRus, не совсем так. TAnimate проигрывает встроенные системные индикаторы: копирование или удаление файлов, поиск файлов и т. д. Именно они меня и интересуют
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение Vadim » 09.09.2019 11:27:37

S_Gur
Lazarus - многоплатформенная IDE, поэтому термин "встроенные в систему" здесь неприменим.
Вдобавок, конкретно для TAnimate, Вы всё равно ему должны были указать, какой именно файл AVI прокрутить. В винде есть предопределённые авишки, потому что там графическая оболочка всего одна-единственная, а вот в линуксе графических оболочек - вагон и маленькая тележка. Поэтому "предопределённый" здесь никак не может существовать. Так что Вам придётся набор видеофайлов для тех или иных действий держать в каталоге своей программы. Либо GIFки, что благотворно скажется на размерах...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 11:56:06

Vadim, я понимаю. Поэтому и ищу замену этому хозяйству. В принципе, меня вполне устроит скроллируемый в цикле текст, что-то типа TSecretPanel. Надеюсь, скроллинг текста не зависит от платформы?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение serbod » 09.09.2019 12:45:02

Есть кроссплатформенный TProgressBar, можно его анимировать по таймеру.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 12:50:41

serbod, если мой процесс имеет определенное количество шагов и можно рассчитать процент выполнения, то это самое простое и удобное решение. В случае, когда процент выполнения процедуры не определяется, то это не самое красивое решение. Я в таких случаях вывешиваю сообщение, что-то типа "Дождитесь окончания процесса"
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение serbod » 09.09.2019 13:05:44

S_Gur Если ваш фоновый процесс имеет таймаут, то 100% прогресса - это время таймаута. Завершится раньше - никто не обидится. =)
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Форма ожидания

Сообщение Vadim » 09.09.2019 13:49:33

S_Gur
Есть ещё BGRA-компоненты (https://github.com/bgrabitmap), там есть взаправдашние стрелочные часы. Выгладят представительно, вполне можно на режим ожидания ставить. Правда программа сильно толстеет... :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Форма ожидания

Сообщение zoltanleo » 09.09.2019 19:35:43

S_Gur писал(а):Мне нужно сделать StayOnTop форму, висящую, когда программа выполняет какое-нибудь длительное действие, и в каком-то презентабельном виде отображающую динамику процесса.

Так речь про splash-форму? Если так, то здесь нужен доп.поток, в котором программа выполняет какие-то свои расчеты, а в основном потоке показывается сплэш, на котором (хоть по таймеру, хоть в гиф-анимации) можно показывать хоть черта лысого :)

Изображение

Если речь идет только о компонентах gif-анимации, то в OPM лазаря есть TGIFViewer и GifAnim(этот понравился больше)

Изображение
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 20:02:57

zoltanleo писал(а):здесь нужен доп.поток, в котором программа выполняет какие-то свои расчеты


Не все так просто. Например, при работе с EhLib-овским гридом все самые интересные фичи этого грида можно получить, только открывая набор данных в режиме FetchAllInOpen. Толку от того, что я запущу загрузку в отдельном потоке, никакого - пока не загрузится весь набор данных, продолжать работу невозможно. Ситуации бывают разные. Собственно, я уже решил проблему старым дедовским способом - установил из сетевого диспетчера пакетов лазарусовский RxLib и получил ту самую TSecretPanel, которую я часто использовал в Дельфях. Единственное, что меня напрягает - получу ли я этот самый RxLib, установив Лазарус под Линукс. Но форма эта в общем-то довольно декоративная, дойдет до дела - буду разбираться
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Форма ожидания

Сообщение zoltanleo » 09.09.2019 20:45:00

S_Gur писал(а): Например, при работе с EhLib-овским гридом все самые интересные фичи этого грида можно получить, только открывая набор данных в режиме FetchAllInOpen.

можно узнать, что за фичи такие, которые проявляются только при полном фетче данных? :) Что-нибудь с голыми девушками связанное? А то я после 4-й версии с эхлибом не сталкивался...
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Форма ожидания

Сообщение S_Gur » 09.09.2019 21:01:00

zoltanleo писал(а):можно узнать, что за фичи такие


Сортировка, фильтрация, быстрый поиск, построение деревьев... Много чего. Постраничная подгрузка данных при работе с обычными гридами малопродуктивна и очень сильно нагружает сервер - как минимум, любая операция поиска или обычной сортировки выливается в запрос к серваку.
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru