Что быстрее отрисуется набор фреймов или панелей?

Вопросы программирования и использования среды Lazarus.

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

Что быстрее отрисуется набор фреймов или панелей?

Сообщение jsa » 21.07.2020 08:20:12

Здравствуйте.
Ни разу не пользовался фреймами, поэтому вопрос к тем у кого есть опыт.
Что будет быстрее отрисовываться при перемещение сплиттера?
вариант 1. - Panel 5штук (Align = left, и последний allclient) разделенные сплиттерами,
вариант 2. - Фреймы 5штук (Align = left, и последний allclient) разделенные сплиттерами,
на них лежат в основном гриды, кнопки, лабелы

панели перегружены компонентами, и уменьшить их кол-во нет возможности.
на загруженной или слабой машине бывает, что видна отрисовка компонент.
Причем перерисовываются все панели справа от сплитера.
Может при использовании фреймов будет только 1 фрейм отрисовываться? а содержимое остальных нет?

Добавлено спустя 57 минут 33 секунды:
похоже сплиттер с фреймами не работает.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение Снег Север » 21.07.2020 09:24:30

Фрейм - это как самостоятельная форма, которую можно вставлять в другие формы (можно вставлять и обычные формы, но это геморройнее). В смысле скорости прорисовки не вижу особой разницы между прорисовкой фрейма или того же набора компонентов без фрейма.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение jsa » 21.07.2020 10:07:55

Я думал, что если фрейм в размере не меняется а только сдвигается, то это будет выглядеть более плавно, без перерисовки.
Но в общем я попробовал накидать на новую форму фреймы и слиттеры, а так же фреймы на панелях, а сплиттеры уже не между фреймами, а между панелями.
В обоих случаях НЕ работает сплиттер, просто не двигается.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение serbod » 21.07.2020 14:03:18

У фрейма (без вложенных контролов) нечего отрисовывать, разве что только фон. А у панели и у формы есть фон и рамка. Если рамку отключить, то разницы нет.

Отрисовка даже пустых контролов происходит в два этапа - отдельно отрисовка фона (которая и вызывает тормоза и мерцание), отдельно отрисовка содержимого. Отрисовку фона можно отключить установив свойство ControlStyle := ControlStyle - [csOpaque]. Но это работает не во всех контролах и виджетсетах.

В любом случае отрисовка множества контролов будет быстрее, если отключить их видимость или включить свойство DoubleBuffered (в стандартных лазаревских контролах не работает).
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение Снег Север » 21.07.2020 14:12:57

Кстати, jsa, я вам в тему про SMTP Indy послал свой работающий пример с двумя кодировками.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение zub » 21.07.2020 14:57:50

Посмотрите в сторону нескольких форм сдоканых анхордокингом. Не интересовался как там с скоростью отрисовки (думаю также как у набора отдельных форм), но зато позволит структурировать программу и настроить внешний вид как юзеру удобно
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение jsa » 21.07.2020 16:13:02

zub писал(а):сдоканых анхордокингом

Понять бы еще, что эти слова значат.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение Снег Север » 21.07.2020 16:18:15

jsa писал(а):Понять бы еще, что эти слова значат.

Наверное,
https://wiki.freepascal.org/Anchor_Dock ... ep_example
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение zub » 21.07.2020 18:06:46

>>что эти слова значат.
Пакет в папке lazaruscomponentsanchordocking тамже 2 примера minide и minidewithdockpanel

Добавлено спустя 4 минуты 43 секунды:
https://wiki.freepascal.org/Anchor_Docking/ru
там кое где написано что можно использовать не формы а контролы, но с этим могут быть проблемы, лучше клеить формы

Добавлено спустя 2 минуты 43 секунды:
после редактирования в первом абзаце пропали слеши должно быть:
lazarus\components\anchordocking
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение S_Gur » 21.07.2020 23:27:42

Снег Север писал(а):можно вставлять и обычные формы, но это геморройнее


А чем геморройнее? Много лет это делаю. Всего-навсего одна строка разницы при создании формы: Parent :=
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение jsa » 22.07.2020 07:40:59

Спасибо, буду изучать.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение Снег Север » 22.07.2020 08:14:51

S_Gur писал(а):А чем геморройнее?

В дизайне не получится. А создавать формы динамически я, например, очень не люблю.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение S_Gur » 23.07.2020 08:51:31

Снег Север писал(а):В дизайне не получится. А создавать формы динамически я, например, очень не люблю.


У тебя в проектах все формы всегда в AutoCreate создаются? И висят все время работы программы в мозгах? По-моему, это не совсем правильно
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение Снег Север » 23.07.2020 09:15:53

S_Gur писал(а):По-моему, это не совсем правильно

А по-моему это как раз правильно. Заведомо исключаются коллизии, когда одна форма должна что-то прочитать с другой, а та, по недосмотру, еще не создана. Если проект разрастается настолько, что ему начинает не хватать памяти просто для форм (мне такую ситуацию сложно представить) - это ошибка проектирования. В таком случае проект должен быть разделен на самостоятельные части или часть функционала вынесена в динамически загружаемые библиотеки.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Что быстрее отрисуется набор фреймов или панелей?

Сообщение zub » 23.07.2020 12:03:01

На формах не надо ничего хранить, и о существовании друг друга им лучше не знать
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru