Лаги отрисовки компонентов формы

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

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

Лаги отрисовки компонентов формы

Сообщение Sharfik » 06.03.2021 16:26:19

В начале сказки все было хорошо и пушистов, программа работа и предвещало счасть, но потом обновилась Windows, потом еще раз десять обновилась Windows, потом обновился Lazarus и появились незначительные баги в отрисовках формы. То кнопки пропадают, то "дребезг картинки". Не страшно, и на секунду можно даже не обращать внимание. Но тут пришел короновирус и обновил методы работы - привет Удаленный рабочий стол.
И вот тут все что было секундным превратилось в стабильность. Компонент TTreeView имея 700 объектов раз за разом при скроллинге начинает делать дублирование строк по три раза. Показывает одно, а в этом месте уже другая строка. И пропадание кнопок присутствует иногда на отдельных панельках.

Если накидаете идей, куда рыть буду признателен. Возможно это связано с тем что создание идет так
Код: Выделить всё
NewWindow:=TFDatabaseEditor.Create(nil);

, но тут нужно отдельно плавающее окно не завязанное на основную форму.
На своей машине сложно вызывать эти баги, а на удаленную проблема перекидывать, антивирус на все ПО самописные ругается.

Изображение
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Лаги отрисовки компонентов формы

Сообщение Снег Север » 06.03.2021 17:47:18

А если заменить на VirtualTreeview?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Лаги отрисовки компонентов формы

Сообщение Sharfik » 06.03.2021 18:00:37

Снег Север писал(а):А если заменить на VirtualTreeview?

Я его обожаю, но он слишком нагроможден в плане программирования получается для этой задачи. Тем более кнопкам это не поможет. Я понимаю, что либо баг в LCL, либо из-за моего кода где то теряется команда обновления компонента. Не теми путями идет. Но вот как правильно лечить... Два компонента, которым отрисовку сам писал чувствую себя прекрасно, а штатные подводят. :(
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Лаги отрисовки компонентов формы

Сообщение Seenkao » 07.03.2021 12:07:40

Как вариант: что-то ещё обновляет форму.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Лаги отрисовки компонентов формы

Сообщение Alex2013 » 07.03.2021 12:28:51

Просто нужно самому скроллинг делать (По умолчанию работает чуть медленней чем при использовании скроллбокса но зато нет ограничений на длину и время обновления всегда стабильное )
ИзображениеИзображение
Зы
При скроллинге стрелками желательно делать перерисовку "по отпусканию клавиш", иначе получается не очень красиво .
Последний раз редактировалось Alex2013 17.03.2021 19:50:42, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Лаги отрисовки компонентов формы

Сообщение Sharfik » 07.03.2021 23:34:11

Alex2013 писал(а):Зы
При скроллинге стрелками желательно делать перерисовку "по отпусканию клавиш", иначе получается не очень красиво .

Посмотрю, спасибо!
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Лаги отрисовки компонентов формы

Сообщение sign » 09.03.2021 09:18:08

Sharfik писал(а):
Снег Север писал(а):А если заменить на VirtualTreeview?

Я его обожаю, но он слишком нагроможден в плане программирования получается для этой задачи.(


Я этот компонент TTreeView сто лет назад выбросил и ни разу не пожалел.
Всё такое только на VirtualTreeview.

И ничего сложного там нет. Вырабатывается привычка писать по-другому и всё.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Лаги отрисовки компонентов формы

Сообщение Kifear » 10.03.2021 15:16:19

Sharfik писал(а):
Снег Север писал(а):А если заменить на VirtualTreeview?

Я его обожаю, но он слишком нагроможден в плане программирования получается для этой задачи. Тем более кнопкам это не поможет. Я понимаю, что либо баг в LCL, либо из-за моего кода где то теряется команда обновления компонента. Не теми путями идет. Но вот как правильно лечить... Два компонента, которым отрисовку сам писал чувствую себя прекрасно, а штатные подводят. :(

Как по мне VirtualTreeview отлично бы вписался и в вашу задачу. Нагроможден? Возможно, хотя я уже привык и не сказал бы так. Мне кажется дело вкуса или привычки)
Аватара пользователя
Kifear
незнакомец
 
Сообщения: 1
Зарегистрирован: 10.03.2021 14:53:09

Re: Лаги отрисовки компонентов формы

Сообщение haword » 15.03.2021 10:52:19

если есть событие после скрола то там попробовать сделать перерисовку компонента. может поможет.
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Лаги отрисовки компонентов формы

Сообщение Sharfik » 16.03.2021 23:18:26

Kifear писал(а):Как по мне VirtualTreeview отлично бы вписался и в вашу задачу. Нагроможден? Возможно, хотя я уже привык и не сказал бы так. Мне кажется дело вкуса или привычки)

Я его использую с тех пор как появился TurboDelphi и интегрировать его законно туда было нельзя)) Часть функций выполняет VST, а часть штатное дерево. Зависит от задач. Там где нужно дерево с красивыми иконками и небольше VST не особо нужен. Проблема вот только вылезла, что при использовании CustomDraw, если я не рисую сам, а только меняю шрифт для выделения новых записей, глючит :(
haword писал(а):если есть событие после скрола то там попробовать сделать перерисовку компонента. может поможет.

Поможет, но по какому событию инициировать то?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30


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

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

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

Рейтинг@Mail.ru