|
|
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Проблема: Есть StringGrid которому в OnDrawCell прописан код для WordWrap (перенос по словам): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Все работает хорошо, но как всегда есть одно НО: при большом количестве строк все это дико лагает! Этот OnDrawCell вызывается при любом изменении в таблице (прокрутка таблицы в любом направлении на 1 клик, обновление какого-либо значения в таблице и т.п.), и юзер постоянно видит, как таблица медленно, "ступенчато" растягивает строку. Данные в ячейках - строки разной длины. Где-то может быть длинее строка в 5й ячейке, где-то в 3й, к примеру. Что я делаю не так в коде, раз возникают жуткие лаги в таблице 10 столбцов на 50+ строк? Есть ли альтернативные методы решения проблемы WordWrap-а для StringGrid? Или есть ли бесплатные кастомные компоненты, где WordWrap реализован адекватно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 21:36 |
|
||
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
Если видит ступенчатое растягивание, то видимо вот это виновато: DataGrid.RowHeights[ARow] := H; При смене высоты строки грид вынужден перерисовывать все остальные. И так как снежный ком. Возможно, стоит заранее (когда только данные загрузились) пройтись по всем строкам и выставить им нужную высоту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 21:42 |
|
||
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
Если убрать DataGrid.RowHeights[ARow] := H; то высота не меняется. При отладке OnDrawCell проходит по ячейкам от 0,0 до n,n только один раз не делая тот "снежный ком" о котором вы говорите. >>>Возможно, стоит заранее (когда только данные загрузились) пройтись по всем строкам и выставить им нужную высоту. В том то и проблема, что юзер видит "ступеньки" сразу при первой загрузке данных, и потом каждый раз при любом визуальном обновлении таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 22:00 |
|
||
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
Менять размеры надо не во время отрисовки а во время изменения содержимого ячеек. Или вовремя ресайза столбцов, если таковой у тебя будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 22:02 |
|
||
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
WordWrap пишется в событие OnDrawCell. ( http://www.delphimaster.ru/articles/stringgrid/index.html) А OnDrawCell вызывается САМОСТОЯТЕЛЬНО при скролле таблицы и при внесении изменений в ячейки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 22:13 |
|
||
|
Самодельный WordWrap в StringGrid - тормоза и лаги
|
|||
|---|---|---|---|
|
#18+
Да не вопрос, пусть тормозит дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 22:15 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39734394&tid=2040116]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 503ms |

| 0 / 0 |
