Что быстрее отрисуется набор фреймов или панелей?
Модератор: Модераторы
Что быстрее отрисуется набор фреймов или панелей?
Здравствуйте.
Ни разу не пользовался фреймами, поэтому вопрос к тем у кого есть опыт.
Что будет быстрее отрисовываться при перемещение сплиттера?
вариант 1. - Panel 5штук (Align = left, и последний allclient) разделенные сплиттерами,
вариант 2. - Фреймы 5штук (Align = left, и последний allclient) разделенные сплиттерами,
на них лежат в основном гриды, кнопки, лабелы
панели перегружены компонентами, и уменьшить их кол-во нет возможности.
на загруженной или слабой машине бывает, что видна отрисовка компонент.
Причем перерисовываются все панели справа от сплитера.
Может при использовании фреймов будет только 1 фрейм отрисовываться? а содержимое остальных нет?
Добавлено спустя 57 минут 33 секунды:
похоже сплиттер с фреймами не работает.
Ни разу не пользовался фреймами, поэтому вопрос к тем у кого есть опыт.
Что будет быстрее отрисовываться при перемещение сплиттера?
вариант 1. - Panel 5штук (Align = left, и последний allclient) разделенные сплиттерами,
вариант 2. - Фреймы 5штук (Align = left, и последний allclient) разделенные сплиттерами,
на них лежат в основном гриды, кнопки, лабелы
панели перегружены компонентами, и уменьшить их кол-во нет возможности.
на загруженной или слабой машине бывает, что видна отрисовка компонент.
Причем перерисовываются все панели справа от сплитера.
Может при использовании фреймов будет только 1 фрейм отрисовываться? а содержимое остальных нет?
Добавлено спустя 57 минут 33 секунды:
похоже сплиттер с фреймами не работает.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Фрейм - это как самостоятельная форма, которую можно вставлять в другие формы (можно вставлять и обычные формы, но это геморройнее). В смысле скорости прорисовки не вижу особой разницы между прорисовкой фрейма или того же набора компонентов без фрейма.
Я думал, что если фрейм в размере не меняется а только сдвигается, то это будет выглядеть более плавно, без перерисовки.
Но в общем я попробовал накидать на новую форму фреймы и слиттеры, а так же фреймы на панелях, а сплиттеры уже не между фреймами, а между панелями.
В обоих случаях НЕ работает сплиттер, просто не двигается.
Но в общем я попробовал накидать на новую форму фреймы и слиттеры, а так же фреймы на панелях, а сплиттеры уже не между фреймами, а между панелями.
В обоих случаях НЕ работает сплиттер, просто не двигается.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
У фрейма (без вложенных контролов) нечего отрисовывать, разве что только фон. А у панели и у формы есть фон и рамка. Если рамку отключить, то разницы нет.
Отрисовка даже пустых контролов происходит в два этапа - отдельно отрисовка фона (которая и вызывает тормоза и мерцание), отдельно отрисовка содержимого. Отрисовку фона можно отключить установив свойство ControlStyle := ControlStyle - [csOpaque]. Но это работает не во всех контролах и виджетсетах.
В любом случае отрисовка множества контролов будет быстрее, если отключить их видимость или включить свойство DoubleBuffered (в стандартных лазаревских контролах не работает).
Отрисовка даже пустых контролов происходит в два этапа - отдельно отрисовка фона (которая и вызывает тормоза и мерцание), отдельно отрисовка содержимого. Отрисовку фона можно отключить установив свойство ControlStyle := ControlStyle - [csOpaque]. Но это работает не во всех контролах и виджетсетах.
В любом случае отрисовка множества контролов будет быстрее, если отключить их видимость или включить свойство DoubleBuffered (в стандартных лазаревских контролах не работает).
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Кстати, jsa, я вам в тему про SMTP Indy послал свой работающий пример с двумя кодировками.
Посмотрите в сторону нескольких форм сдоканых анхордокингом. Не интересовался как там с скоростью отрисовки (думаю также как у набора отдельных форм), но зато позволит структурировать программу и настроить внешний вид как юзеру удобно
zub писал(а):сдоканых анхордокингом
Понять бы еще, что эти слова значат.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
jsa писал(а):Понять бы еще, что эти слова значат.
Наверное,
https://wiki.freepascal.org/Anchor_Dock ... ep_example
>>что эти слова значат.
Пакет в папке lazaruscomponentsanchordocking тамже 2 примера minide и minidewithdockpanel
Добавлено спустя 4 минуты 43 секунды:
https://wiki.freepascal.org/Anchor_Docking/ru
там кое где написано что можно использовать не формы а контролы, но с этим могут быть проблемы, лучше клеить формы
Добавлено спустя 2 минуты 43 секунды:
после редактирования в первом абзаце пропали слеши должно быть:
lazarus\components\anchordocking
Пакет в папке lazaruscomponentsanchordocking тамже 2 примера minide и minidewithdockpanel
Добавлено спустя 4 минуты 43 секунды:
https://wiki.freepascal.org/Anchor_Docking/ru
там кое где написано что можно использовать не формы а контролы, но с этим могут быть проблемы, лучше клеить формы
Добавлено спустя 2 минуты 43 секунды:
после редактирования в первом абзаце пропали слеши должно быть:
lazarus\components\anchordocking
Снег Север писал(а):можно вставлять и обычные формы, но это геморройнее
А чем геморройнее? Много лет это делаю. Всего-навсего одна строка разницы при создании формы: Parent :=
Спасибо, буду изучать.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
S_Gur писал(а):А чем геморройнее?
В дизайне не получится. А создавать формы динамически я, например, очень не люблю.
Снег Север писал(а):В дизайне не получится. А создавать формы динамически я, например, очень не люблю.
У тебя в проектах все формы всегда в AutoCreate создаются? И висят все время работы программы в мозгах? По-моему, это не совсем правильно
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
S_Gur писал(а):По-моему, это не совсем правильно
А по-моему это как раз правильно. Заведомо исключаются коллизии, когда одна форма должна что-то прочитать с другой, а та, по недосмотру, еще не создана. Если проект разрастается настолько, что ему начинает не хватать памяти просто для форм (мне такую ситуацию сложно представить) - это ошибка проектирования. В таком случае проект должен быть разделен на самостоятельные части или часть функционала вынесена в динамически загружаемые библиотеки.
На формах не надо ничего хранить, и о существовании друг друга им лучше не знать
