У нас есть графический интерфейс из нескольких фреймов, которые динамически создают их содержимое. Каждый фрейм создает панели, метки, правки, поля со списком и т. Д. Для использования в качестве полей ввода. Это работает очень хорошо, и мы также планируем позволить каждому фрейму создавать свой контент в отдельных потоках.
Однако есть одна большая проблема: она довольно медленная! Создание элементов управления не занимает много времени, но установка свойства Parent кажется очень трудоемкой.
Я пробовал несколько способов ускорить процесс, но безуспешно. Я пробовал Enabled = False, Visible = False, DisableAlign, LockWindowUpdate, WM_SETREDRAW ... но, похоже, ничто не влияет на длительный процесс установки родительского элемента управления.
Даже если мы используем потоки, это займет время, так как функции VCL должны вызываться в Synchronize.
Есть ли другой способ ускорить создание и отображение элементов управления?
С уважением,
Magnus
Редактировать: Нет компонентов с данными или каких-либо событий, запускаемых в графическом интерфейсе. Я только создаю элементы управления и отображаю их. Используя таймеры, я определил назначение родительского элемента управления (AControl.Parent: = AOwner) как часть, требующую много времени.
Редактировать 2: Как показано в ответе ниже, проблема скорости заключается не в настройке родителя, а в рисовании элемента управления. Когда я проверил время, контейнер был виден, и установка родительского элемента вызвала немедленное окрашивание элемента управления.
Редактировать 3: Еще одна трудоемкая часть нашего динамического графического интерфейса - назначение элементов в комбинированные списки. ComboBox.Items.Assign (DataItems), где DataItems содержат не более трех-шести элементов.
Спасибо всем, что нашли время помочь мне!