2015-01-16 10 views
2

Я использую TScrollBox, чтобы сделать пользовательский список содержит много элементов управления (Tlabels, Timages, Tshapes)контейнер объекта на основе TGraphicControl

проблема, когда я использую TPanels в качестве контейнера для каждого элемента списка становится медленным и flickery после добавления около 100 предметов.

я ищу альтернативу TPanel на основе TGraphicControl для повышения производительности

+2

Вы можете сделать 'TGraphicControl' потомок, который будет использовать какой-то виртуальный объекты (например, слои). У вас будет список определений виртуальных объектов (размер объекта, положение, текст, фигура и т. Д.), И вы будете отображать их внеэкранное растровое изображение этими определителями всякий раз, когда изменяется какой-либо из определений. Остальное будет касаться блистания растрового изображения вне экрана. – TLama

+2

Ничто, основанное на TGraphicControl, не может содержать другие элементы управления. –

+0

@TLama это хорошая идея, но я использую TScrollbox с панелями и элементами управления вместо TListView, чтобы иметь возможность обрабатывать события на каждом элементе управления, который невозможен с помощью этого метода. –

ответ

1

Вы также можете превратить Form.DoubleBuffered := True предотвратить flickery

+0

i уже включен DoubleBuffer –

+0

Двойной острый меч. Часто приводит к другим проблемам. Обычно лучше всего сделать это правильно. –

+1

Вы можете попробовать DevExpress LayoutControl. В моем старом проекте он просто содержит более 50 элементов управления. –