Delphi - TScrollBox выдает после X количество компонентов

Я заметил в одном из моих тестовых приложений после того, как я добавил так много TPanels в TScrollBox, я столкнулся с проблемой с теми, которые были прорисованы на определенное количество. Я отключаю поле прокрутки перед рисованием, и оно всегда очищается перед рисованием, чтобы не было проблем с относительным положением. Сначала я подумал, что, возможно, я столкнулся с какой-то максимальной высотой, чтобы рисовать. Итак, вы знаете, что расположение панелей по ширине сложено вертикально.

Поэтому я создал новый проект, чтобы попытаться выявить и решить проблему, и он выявил дополнительные детали проблемы. Когда я'Я могу привести пример и видео, но сейчас опишу. Сделал форму с TScrollBox spinedit, чтобы указать, сколько панелей кнопка для создания панелей в цикле и кнопка для освобождения панелей и очистки массива для следующей попытки. Я устанавливаю подпись к номеру в цикле для идентификации.

Я попытался 2 способа укладки, чтобы увидеть, если бит имеет значение. Одним из них является установка позиции, умноженной на высоту, поэтому, если высота равна 200, тогда i * 202 дает ему пространство в 2 пикселя. Новый способ, которым я пробовал, - использовать выравнивание сверху. Это может иметь небольшую разницу в действии, но проблема в целом остается той же.

Новая проблема с диапазоном прокрутки. После завершения цикла и включения поля прокрутки прокрутка вниз до нижних упоров на последней пронумерованной панели. Но это неуместно, может быть, 199 прямо под 169 его 200 панелей. Затем полоса прокрутки регулирует диапазон, позволяя мне достичь дна только для того, чтобы увидеть следующую за последней панелью 198. Я считаю, что это происходит с использованием метода выравнивания по верху, как это никогда не происходило в моем приложении. Я буду проверять дальше.

Нижняя панель не остается в стороне. Я думаю, что решение этой проблемы - вручную рассчитать и установить диапазон.

Основная проблема, которая возникает в моем приложении при установке положения вместо выравнивания верха, заключается в том, что после определенного количества панелей все они располагаются в конце в одном и том же месте. До определенной суммы, скажем, 50 или 100, но после очень многих это случается. Я знаю, что 200 умножить на 200 - это довольно маленькое целое число, но, может быть, есть ограничение адреса?

Я продолжу тестирование. Мне все еще нужно проверить, добавляет ли высота панели к нему. Но решил, что это должно быть известной проблемой. Delphi 2009, кстати.

Ответы на вопрос(1)

Ваш ответ на вопрос