Правильный метод отрисовки при изменении размеров объектов.

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

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

Правильный метод отрисовки при изменении размеров объектов.

Сообщение jsa » 09.06.2018 17:10:37

Здравствуйте.
Имеется форма с множеством панелей, гридов, сплиттеров.
Скажите пожалуйста, какие существуют методики изменения размеров объектов на форме, так чтобы прорисовка была наиболее плавной и аккуратной.
Часть объектов уже в Anchors прикреплены к границам, и тянутся одновременно с родительским компонентом.
А часть пересчитывается в onResize
Отрисовка происходит дергано, где-то границы появляются залитые белым, где-то компоненты растягиваются не сразу, а по очереди.
Надеюсь понятно описал.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение zub » 09.06.2018 17:28:09

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

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение jsa » 10.06.2018 05:21:31

Непереусложнил, эффекта нет.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение zub » 10.06.2018 07:10:48

>>Непереусложнил, эффекта нет.
А по первому сообщению вроде как переусложнил. может скрин?
Лучше сделать несколько простых форм вместо одной сложной.
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение jsa » 10.06.2018 14:56:24

Тут принцип такой, что все данные должны быть видны одновременно.
Потому не переусложнить сложно.

P.S. На форме матрешкой лежат друг на друге 5 шт PairSplitter
У вас нет необходимых прав для просмотра вложений в этом сообщении.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение Pavia » 10.06.2018 16:00:52

jsa
И чего хотите? Вам верно казали интерфейс перегружен. Человек не может концентрироваться более чем на 5 максимум 7 элементах.
Отсюда вывод все эти плюшки на главной форме не нужны.
Неужто так сложно изучить как устроены CRM?
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение jsa » 10.06.2018 18:47:23

И чего хотите?
То что я хочу, я спросил. Мой вопрос это 1 элемент, т.е. не более 7, значит вы способны сконцентрироваться на нем, но почему-то вас уводит в сторону.
Человек не может концентрироваться более чем на 5 максимум 7 элементах.
Кто вам сказал что во время работы в программе требуется во первых концентрация, во вторых на таком большом количестве элементов?
Отсюда вывод все эти плюшки на главной форме не нужны.
Меня так и подмывает дать полную оценку вашему выводу, но я отучаю себя хамить хамам которые считают себя умнее всех других. Вдруг ошибаюсь.
Неужто так сложно изучить как устроены CRM?
Вопрос конечно интересный, я уже с 2003 года занимаюсь внедрением разных интерфейсов и работаю непосредственно с пользователями, и знаком со спецификой и контингентом, и обстановкой в которой работает именно этот контингенг. Но готов выслушать образованного человека, которому несложно было изучить как устроены CRM .
Может вы статью укажете, или учебник по которому я могу набраться бесценного опыта, и узреть наконец свои ошибки?

Добавлено спустя 4 минуты 14 секунд:
Re: Правильный метод отрисовки при изменении размеров объектов.
Просьба всем кто не знает ответа на вопрос в теме, но считает своим долгом доказать мне что интерфейс перегружен.
Пожалуйста НЕ надо, мне доказывать это.

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

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение serbod » 11.06.2018 01:03:19

DoubleBuffered := True;

Использовать VirtualTreeView вместо стандартных TreeView и ListView

Уменьшить частоту перерисовки элементов. Если это сложно и непонятно, то можно просто отключать видимость на время изменений состава и размеров.

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

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение zub » 11.06.2018 09:27:04

Код: Выделить всё
[quote]spliter.resizestyle:=rsLine{rsPttern};[/quote]
+ исключить влияние положение одного сплитера на положение других.
>>но я отучаю себя хамить хамам которые считают себя умнее всех других. Вдруг ошибаюсь.
1. Ошибаетесь
2. Плохо отучаете. Не хамите, интерфейс перегружен, вам говорят поделу.
А если в программе отсутствует настройка интерфейса в рантайме - такой интерфейс это еще и хамите пользователю))

Добавлено спустя 4 минуты 26 секунд:
Re: Правильный метод отрисовки при изменении размеров объектов.
serbod
>>Если это сложно и непонятно, то можно просто отключать видимость на время изменений состава и размеров.
Таксибе. Если у тс`а все на привязках и коррекциях положения в onResize - сам процесс вкл-выкл будет вызывать пересчет размеров-положений элементов

Добавлено спустя 1 минуту 51 секунду:
Re: Правильный метод отрисовки при изменении размеров объектов.
jsa
Стремление все залепить на одну форму не только превращает интерфейс в "какашку", но еще и код делает большим монолитным куском "говнокода"
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение Снег Север » 11.06.2018 09:38:05

Чудовищный интерфейс... Какая религия мешает использовать табы и страницы?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение wofs » 11.06.2018 12:25:04

Если я правильно понял проблему, то:
Код: Выделить всё
//TSplitter
ResizeStyle:= rsLine;

На форме с 3мя сплиттерами/ 4мя панелями и стандартными компонентами TreeView/DBGrid проблем и артефактов при ресайзе панелей не возникает.
Часть объектов уже в Anchors прикреплены к границам, и тянутся одновременно с родительским компонентом.
А часть пересчитывается в onResize

А в чем нужда пересчитывать в onResize? Накидать панелей, привязать элементы к панелям через Align/Anchors и сплиттерами менять размеры панелей, все прорисуется как надо.

p.s.Ну и глаза у мня разбежались от обилия элементов :( Но я и в телефоне иконки по папкам раскладываю,не люблю много элементов в одном рабочем поле.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение pupsik » 11.06.2018 12:42:24

А часть пересчитывается в onResize
закоментить и проверить как будет "реагировать" форма с компонентами.

Стремление все залепить на одну форму не только превращает интерфейс в "какашку", но еще и код делает большим монолитным куском "говнокода"
в принципе ничто не мешает использовать фреймы. Так что можно логику разбить на части. И ничто не нарушит её. Как и не превратит в говнокод. Хотя это не тот случай :mrgreen:

п.с.
А "девки" (компоненты) уже в лазарь перебрались? Если это они...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение jsa » 11.06.2018 19:14:42

serbod писал(а):DoubleBuffered := True;

Уже установлено на форме, панелях и гридах.
Я до конца не понимаю как это работает. Кто-то пишет, что надо ставить на родительские компоненты, кто-то на те что мерцают при растагивании. Получается, что у меня они на родительских и стоят.
Частично это решает проблему. но не полностью.

Использовать VirtualTreeView вместо стандартных TreeView и ListView
эти не используются.

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

Частично уже пошел по пути минимизации необходимости таскать сплиттеры. Просто вопрос уже возник решил разобраться на будущее.

P.S. Спасибо за ответ по делу.

Добавлено спустя 24 минуты 21 секунду:
zub писал(а):>>но я отучаю себя хамить хамам которые считают себя умнее всех других. Вдруг ошибаюсь.
1. Ошибаетесь
2. Плохо отучаете. Не хамите, интерфейс перегружен, вам говорят поделу.
А если в программе отсутствует настройка интерфейса в рантайме - такой интерфейс это еще и хамите пользователю))

1. Когда презрительно кидают оценки и выводы, не говоря ничего по существу вопроса, это я вижу, и тут я не ошибаюсь, в том что человек откровенно хамит.
2. Меня не интересует в данный момент мнение кого бы то ни было по поводу интерфейса. И предлагаю свои гениальные выводы на эту тему просто оставить при себе.
Не хамским комментарий был бы таким - Ответа на поставленный вопрос при таком количестве элементов нет, технически сделать переразмеривание гладким нельзя.
Так что не надо говорить что это "Человек не может концентрироваться более чем на 5 максимум 7 элементах. Отсюда вывод все эти плюшки на главной форме не нужны. " ответ по делу.
Это именно хамское, презрительное заявление в стиле "скрипач... не нужен".

Таксибе. Если у тс`а все на привязках и коррекциях положения в onResize - сам процесс вкл-выкл будет вызывать пересчет размеров-положений элементов

onResize используется только при некоторых панелях на которых находятся гриды, для того чтобы подогнать размеры колонок. Все остальное Anchors

Стремление все залепить на одну форму не только превращает интерфейс в "какашку",

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

но еще и код делает большим монолитным куском "говнокода"

Ну тут говнокод не такой уж и большой, т.к. бОльшая часть логики, реализована на хранимках СУБД.
А так да не удобно. Тут фреймы упоминали, никогда не пользовался. Но теперь посмотрю как это может облегчить.

Добавлено спустя 3 минуты 50 секунд:
Снег Север писал(а):Чудовищный интерфейс...

Чем именно чудовищный? Оскорбляет конкретно твои эстетические чувства? Это твое субъективное вИдение или есть конкретный критерий чудовищности?

Снег Север писал(а):Какая религия мешает использовать табы и страницы?

Это вопрос. Я ответу на этот вопрос, если ты ответишь, какая религия придает тебе зуд влезать в тему со своими оценками, а не по поводу заданного вопроса, хотя выше есть просьба не обсуждать интерфейс.

Добавлено спустя 14 минут:
Re: Правильный метод отрисовки при изменении размеров объектов.
wofs писал(а):На форме с 3мя сплиттерами/ 4мя панелями и стандартными компонентами TreeView/DBGrid проблем и артефактов при ресайзе панелей не возникает.

Предполагаю, что мог где-то переборщить когда пытался добиться еще большей плавности. А теперь сложно понять, что на что влияет.
Компоненты не все стандартные используется EhLib 9.2

p.s.Ну и глаза у мня разбежались от обилия элементов

Ничего удивительного. Точно так же глаза разбегутся при виде набора инструментов в операционной, или если вы зайдете в кабину пилота.
Я еще до запрета посторонних в кабинах, имел счастливую возможность сидеть в кабине пассажирского самолета, там не только глаза разбегались, мне пошевелиться было страшно, чтобы не задеть чего. Однако пилоты как-то не страдали от количества всего, всего и одновременно (а не табах и страницах).
Ну или представьте себе рабочее место звукорежиссера, диспетчеров транспортных развязок и т.д.

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

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение pupsik » 11.06.2018 20:07:33

Тут фреймы упоминали, никогда не пользовался. Но теперь посмотрю как это может облегчить.
это не для "облегчения" отрисовки :)

onResize используется только при некоторых панелях на которых находятся гриды, для того чтобы подогнать размеры колонок.
это, уж пардон - всё равно... При коментировании того что вы подсунули в onResize отрисовка глючит???
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Правильный метод отрисовки при изменении размеров объект

Сообщение Снег Север » 11.06.2018 21:35:23

Я ответу на этот вопрос, если ты ответишь, какая религия придает тебе зуд влезать в тему со своими оценками, а не по поводу заданного вопроса, хотя выше есть просьба не обсуждать интерфейс.

Можешь не отвечать, а сразу идти по хорошо тебе известному адресу.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 38

Рейтинг@Mail.ru
cron