У меня есть панели инструментов Jordan Russel Toolbar2000, которые я создаю во время выполнения со встроенным TFrame и закрепляю в главной форме приложения.Этот фрейм имеет встроенную панель, которая в свою очередь содержит другие панели и различные элементы управления.Таким образом, структура выглядит следующим образом:
TTBDock
TTBToolbar
TFrame (align=alNone, Autosize=true)
TPanel 1 (align=alNone, Autosize=true)
TPanel 2 (align=alTop ,Autosize = false)
TPanel 3 (align=alTop ,Autosize = false)
TPanel 4 (align=alTop , Autosize = false)
Идея состоит в том, что размеры панелей 2, 3, 4 имеют явный размер по высоте, а затем рамка (и, следовательно, панель инструментов) автоматически изменяет размеры в соответствии с новым размером.
Работает нормально, за исключением того, что размер панели инструментов неверен при первом показе панели инструментов закрепленной в главной форме приложения.Если я заставлю изменить размер панели инструментов в этой точке (например, путем явного изменения высоты TPanel снова от щелчка мышью), то все получится.Я попытался вызвать подпрограмму, чтобы установить размер дважды, вызвать Update, Application.ProcessMessages, ReAlign - кажется, ничего не работает, кроме как позволить рисовать основную форму и затем снова выполнить изменение размера вручную.
Если я сломаю вВ конце процедуры изменения размера и проверьте размер панели и размер кадра, они являются правильными, но размер панели инструментов нет, поэтому при первом отображении кадр частично отображается на панели инструментов неправильного размера.Это происходит сразу после очередного вызова подпрограммы определения размера, но только после того, как основная форма нарисовала себя.
Я мог бы испортить что-то неприятное, например, явно изменить размеры панелей после истечения таймера, но я бы лучше решил проблемув его источнике.
Есть идеи относительно того, почему это может происходить (или не происходить)?