|
|
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Задача - отобразить график работ по дням. График составлен более чем на год вперед, т.е. колонок должно получиться около 400. Если не создавать колонки, а просто прицепить сетку к MemTableEh, то процесс отображения происходит около 30 секунд, но колонки без заголовков. Нужны заголовки. Поэтому создаю колонки динамически, и в результате этого процесса время увеличивается примерно до 3 минут. Как ускорить? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Где AddNewField - добавление столбца в MemTable, AddNewColumn - создание и добавление колонки DBGridEh1.Columns в таблицу. Код: 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. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 17:20 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad, у меня юзеры сотни по две полей в гриде создают, мгновенно создаются. TVirtualStringTree. Ну да ладно. .. А заголовки не создаются сами, если к полям TMemTableEh добавить Код: pascal 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 17:30 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
посмотрите там у грида в колонках что-то типа beginupdate и endupdate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 18:29 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
29.10.2020 18:29, энди пишет: > посмотрите там у грида в колонках что-то типа beginupdate и endupdate не обязательно в колонках. может быть у самого грида. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 18:36 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 29.10.2020 18:29, энди пишет: > посмотрите там у грида в колонках что-то типа beginupdate и endupdate не обязательно в колонках. может быть у самого грида. MemTable.DisableControls / EnableControls? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 23:16 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
BeginLayout EndLayout ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 23:17 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
ъъъъъ svnvlad, у меня юзеры сотни по две полей в гриде создают, мгновенно создаются. TVirtualStringTree. Ну да ладно. .. А заголовки не создаются сами, если к полям TMemTableEh добавить Код: pascal 1. ? Не создался. Выдает в тайтле имя поля, а не DisplayName. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2020, 23:33 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Michael Longneck BeginLayout EndLayout Результат с BeginLayout - EndLayout самый быстрый - 49 сек. С DisableControls - EnableControls - 85 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 00:26 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
ъъъъъ svnvlad, у меня юзеры сотни по две полей в гриде создают, мгновенно создаются. TVirtualStringTree. Ну да ладно. Вы динамически колонки создаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 00:28 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Michael Longneck BeginLayout EndLayout Причем, сам цикл создания столбцов, если создавать только поля в MemTable, занимает 0 сек., если поля с колонками - 41 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 00:39 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Без всяких BeginLayout и DisableControls. 187 милисекунд ЧЯДНТ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 02:50 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
С BeginLayout немножечко быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 02:58 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Что возвращает q.Q? Непрерывный набор дат диапазона или с пропусками? Если непрерывный, то я делаю так (у меня в MemTableEh часть полей создана уже в дизайне и в гриде колонки тоже). Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. Если даты с пропусками Код: pascal 1. 2. 3. 4. 5. 6. 7. У меня данные заполняются в Код: pascal 1. 2. 3. т.к. используется цепочка MemTableEh -> DataDriver -> FDQuery. Это самый быстрый способ заполнения. Код: pascal 1. 2. 3. значительно медленнее, но у меня 9000 строк, если у тебя строк мало можешь не заморачиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 04:57 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
DimaBr Без всяких BeginLayout и DisableControls. 187 милисекунд ЧЯДНТ ? Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Закомментировал, стало 13 миллисекунд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 08:49 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad DimaBr Без всяких BeginLayout и DisableControls. 187 милисекунд ЧЯДНТ ? Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Правильнее - вернуть список выходных за промежуток дат. Это позволит избавиться от затыка и уменьшит количество обращений к базе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 08:53 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad DimaBr Без всяких BeginLayout и DisableControls. 187 милисекунд ЧЯДНТ ? Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Закомментировал, стало 13 миллисекунд) Этот признак может поменяться в любую секунду или в базе обычный рабочий календарь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 08:55 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
wadman svnvlad пропущено... Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Закомментировал, стало 13 миллисекунд) Этот признак может поменяться в любую секунду или в базе обычный рабочий календарь? Может меняться, например задать выходной или переместить с воскресенья на понедельник. Правильно будет так: Код: 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. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 09:01 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad Может меняться, например задать выходной или переместить с воскресенья на понедельник. Не за те секунды же, пока строится таблица? Я к тому, что календарь один раз грузится, может даже кэшируется/хэшируется и доступ к нему за считанные мс, а не на каждый чих уточнять у сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 09:15 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
С помощью глобальных свойств библиотеки можно настроить следующие возможности календаря. - Подсвечивать праздники. Для подсветки праздников и переноса рабочих дней используйте класс TWorkingTimeCalendarEh. - Календарь поддерживать Delphi VCL стили. Напишите наследник класса TWorkingTimeCalendarEh и переопределите метод IsWorkday function IsWorkday(ADate: TDateTime): Boolean; Метод должен возвращать True если переданная Дата является рабочим днем В коде вашей программы один раз зарегистрируйте новый объект для работы с рабочим календарем с помощью глобальной процедуры RegisterGlobalWorkingTimeCalendar. RegisterGlobalWorkingTimeCalendar( TMyWorkingTimeCalendarEh.Create(nil)).Free; Данный метод регистрирует класс управления рабочими и выходными/праздничными днями, которые влияют на подсветку дней в компонентах выпадающего календаря и календаря выбора данных для планировщика событий – TPlannerCalendarPickerEh. Метод возвращает старый объект управления днями. Обычно старой объект можно сразу удалять. Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 09:54 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
Потестил на 100000 вызовах IsWorkDay 800ms Сделал рефакторинг. Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 26ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 11:24 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad ъъъъъ svnvlad, у меня юзеры сотни по две полей в гриде создают, мгновенно создаются. TVirtualStringTree. Ну да ладно. Вы динамически колонки создаете? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 11:59 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
wadman svnvlad Может меняться, например задать выходной или переместить с воскресенья на понедельник. Не за те секунды же, пока строится таблица? Я к тому, что календарь один раз грузится, может даже кэшируется/хэшируется и доступ к нему за считанные мс, а не на каждый чих уточнять у сервера. Решил же уже, постом выше. Просто сразу читаю даты, а с ними и выходной. В процедуру уже готовое значение передается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 13:30 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
svnvlad Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Закомментировал, стало 13 миллисекунд) То есть вы 400 раз спрашиваете у сервера выходной ли это день ? Вместо того, что загрузить 10 выходных на клиент и гонять клиентский датасет. И во всём грид конечно виноват !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2020, 23:21 |
|
||
|
DBGridEh - медленно создаются колонки
|
|||
|---|---|---|---|
|
#18+
DimaBr svnvlad Как что? Закомментировали функцию IsHoliday, которая обращается к базе и определяет, не помечена ли дата как выходной. :DDD Это для раскраски колонок. Закомментировал, стало 13 миллисекунд) То есть вы 400 раз спрашиваете у сервера выходной ли это день ? Вместо того, что загрузить 10 выходных на клиент и гонять клиентский датасет. И во всём грид конечно виноват !!! Ну я ж посмеялса уже над этой оплошностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 06:06 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40013338&tid=2037883]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
133ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 440ms |

| 0 / 0 |
