Страница 1 из 1

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

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

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

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

Изображение

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

СообщениеДобавлено: 06.03.2021 17:47:18
Снег Север
А если заменить на VirtualTreeview?

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

СообщениеДобавлено: 06.03.2021 18:00:37
Sharfik
Снег Север писал(а):А если заменить на VirtualTreeview?

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

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

СообщениеДобавлено: 07.03.2021 12:07:40
Seenkao
Как вариант: что-то ещё обновляет форму.

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

СообщениеДобавлено: 07.03.2021 12:28:51
Alex2013
Просто нужно самому скроллинг делать (По умолчанию работает чуть медленней чем при использовании скроллбокса но зато нет ограничений на длину и время обновления всегда стабильное )
ИзображениеИзображение
Зы
При скроллинге стрелками желательно делать перерисовку "по отпусканию клавиш", иначе получается не очень красиво .

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

СообщениеДобавлено: 07.03.2021 23:34:11
Sharfik
Alex2013 писал(а):Зы
При скроллинге стрелками желательно делать перерисовку "по отпусканию клавиш", иначе получается не очень красиво .

Посмотрю, спасибо!

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

СообщениеДобавлено: 09.03.2021 09:18:08
sign
Sharfik писал(а):
Снег Север писал(а):А если заменить на VirtualTreeview?

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


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

И ничего сложного там нет. Вырабатывается привычка писать по-другому и всё.

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

СообщениеДобавлено: 10.03.2021 15:16:19
Kifear
Sharfik писал(а):
Снег Север писал(а):А если заменить на VirtualTreeview?

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

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

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

СообщениеДобавлено: 15.03.2021 10:52:19
haword
если есть событие после скрола то там попробовать сделать перерисовку компонента. может поможет.

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

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

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

Поможет, но по какому событию инициировать то?