Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.26;
Скачать: CL | DM;

Вниз

Медленная прорисовка визуальных компонент в Run-Time   Найти похожие ветки 

 
sergf28 ©   (2011-03-24 17:24) [0]

WinXP, Delphi 2010
Intel Core I3, RAM 3Gb

есть задача по визуализации полей с растениями на питомнике.
каждому растению соответсвует jvSpeedButton (с TPanel результат тот же).
Массив кнопок создается в run-time.
на небольших полях до 700-800 растений все отрисовывается достаточно быстро.  На полях где растений (кнопок) более 3000 отрисовка начинает занимать 7-8 минут (обращения к БД отключены)т.е. тормозит именно отрисовка.
Приичем где то до полутора тысяч элементов все идет достаточно быстро, а потом визуально даже видно, что начинает прорисовываться почти в два раза медленее чем сначала.
запрещал обновление формы с помощью
Perform(WM_SETREDRAW, 1, 0)  и LockWindowUpdate(Form.Handle);
не помогло.
Может кто сталкивался уже с такой проблемой?


 
stas ©   (2011-03-24 17:30) [1]

3000 объектов это жестко. Рисуйте на канве.


 
sergf28 ©   (2011-03-24 17:39) [2]


> 3000 объектов это жестко. Рисуйте на канве.

канва не совсем то. не хочется терять OnClick и Hint


 
Dennis I. Komarov ©   (2011-03-24 17:44) [3]

Так не теряй, просто вычисляй координаты...


 
han_malign   (2011-03-24 17:53) [4]


> не хочется терять

- для ленивых - TPaintBox...


 
RWolf ©   (2011-03-24 17:56) [5]

TDrawGrid, как вариант.
2000 ячеек с рисунком в каждой, отрисовывается мгновенно.


 
sergf28 ©   (2011-03-24 18:45) [6]


> TDrawGrid, как вариант.
> 2000 ячеек с рисунком в каждой, отрисовывается мгновенно.
>

спасибо :)  пока это лучший вариант


 
han_malign   (2011-03-25 09:39) [7]


> пока это лучший вариант

- если что - обновление состояния ячейки - InvalidateCell()
  он protected, но достучаться можно...
если хочется по честному:
rect:= drawgrid.CellRect(c,r);
Windows.InvalidateRect(drawgrid.Handle, @rect, false);

З.Ы. Чтобы не заморачиваться с хранилищем можно сразу брать TStringGrid, состояние можно хранить в LongWord(Objects[c,r]) - и не думать об  Invalidate...


 
int64 ©   (2011-03-25 12:51) [8]


> > TDrawGrid, как вариант.
> > 2000 ячеек с рисунком в каждой, отрисовывается мгновенно.
>
> >
>
> спасибо :)  пока это лучший вариант

Пока лучший вариант: [1]



Страницы: 1 вся ветка

Текущий архив: 2011.06.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-1261456991
d@nger
2009-12-22 07:43
2011.06.26
2 таблицы Firebird


2-1300254324
Andrey_1
2011-03-16 08:45
2011.06.26
DbGrid-ячейка в две строки


2-1300614132
snakeas
2011-03-20 12:42
2011.06.26
Не удается удалить картинку, созданную через jpg.savetofile()


2-1300882916
Sergey2
2011-03-23 15:21
2011.06.26
значение тега по имени его атрибута TWebBrowser


15-1299302188
И. Павел
2011-03-05 08:16
2011.06.26
С 8 марта!