|
|
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
К сожалению у стандартного дерева в Firemonkey нет возможность подключить таблицу типа "id, parent, name". Поэтому приходится извращаться, чтобы заполнить дерево. Зачем нужен проход по всему дереву? Чтобы найти к чему прикрепить очередной узел, т.е. найти родителя. т.е. процедура построения дерева такая: Код: 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. проблема с функцией ItemByTag: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. из-за того, что само дерево не предоставляет глобального индекса, а ClobalCount - это всего лишь "количество всех видимых элементов дерева (первого уровня и подэлементов) в этом древовидном представлении". http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.TreeView.TCustomTreeView.GlobalCount ну и собственно AddChild Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Мне предлагают какого-то монстра (EnumControls), чтобы пройтись по всему дереву: http://docwiki.embarcadero.com/Libraries/Seattle/en/FMX.Controls.TControl.EnumControls А как им пользоваться, моих мозгов скилов не хватает, чтобы переложить тамошний пример на мою задачу. Заранее благодарен за любую помощь. Может быть кто-то знает, как проще наполнить дерево FMX из таблицы? Delphi 10.1 (multi-platform app) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 20:24 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
Да, я понимаю, что построение всего дерева сразу - не комильфо, а нужно строить по мере открытия узлов. Но по дереву нужно организовать поиск, получается, что нужно его сперва построить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 20:25 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
X11, >> select id, parent, name from regions order by parent Однопроходный вариант работать не будет из-за того, что элементы могут создаваться в разное время (id идут не последовательно). Можно использовать оракловский запрос для деревьев с connect by level, чтобы правильно отсортировать, либо делать заполнение в два прохода (сначала плоский список, а потом по родителям перемещаем -- я так у себя девовский трилист сортирую). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 22:45 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 23:59 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
X11Да, я понимаю, что построение всего дерева сразу - не комильфо, а нужно строить по мере открытия узлов. Но по дереву нужно организовать поиск, получается, что нужно его сперва построить. Если ты все еще используешь FireBird (а также мс скл, оракл...) - примени CTE: 7067436 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 00:04 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
X11, и для поиска вовсе нет нужды строить все дерево: ищи нужный узел в базе, потом вытягивай всю цепочку родителей (до корня), а потом, в дереве, начиная от корня, пробегись по цепочке в обратную сторону, если нужно, подгружая пока отсутсвующие элементы, в итоге ты быстро найдешь нужный узел без перебора всего дерева. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 00:09 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
JaDiОднопроходный вариант работать не будет из-за того, что элементы могут создаваться в разное время (id идут не последовательно). у меня "order by parent", значит родители всегда будут раньше создаваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 08:31 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
чччДхочешь TVirtualTreeView на FMX я его боюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 08:32 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
чччДЕсли ты все еще используешь FireBird на андроиде - SQLite FireBird c Андроидом плохо дружит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 08:33 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
Ребята, тут проблема не с базой данных, а с сами деревом. Нужно абстрагироваться от БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 08:33 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
В общем, дали пример. На большом количестве записей не знаю, будет ли медленная загрузка. http://fire-monkey.ru/topic/4018-цикл-по-ttreeview-обходит-не-все-уровни/?do=findComment&comment=25397 Работает. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 08:36 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
X11JaDiОднопроходный вариант работать не будет из-за того, что элементы могут создаваться в разное время (id идут не последовательно). у меня "order by parent", значит родители всегда будут раньше создаваться Нет, не будут. Если поменяется структура дерева (какую-то ветку перебросят на уровень выше), всё накроется медным тазом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 10:19 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
Кто перебросит? Кто перебросит в момент построения дерева? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 10:26 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
X11, речь про дерево в базе данных, которое может измениться или быть записанным совсем не в той последовательно, которая нам удобна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 10:48 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
Не забывайте, что речь не про сетевое приложение, а про локальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 11:38 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
Может кому-то пригодится. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 18:43 |
|
||
|
Проход по всему дереву FMX.TTReeView
|
|||
|---|---|---|---|
|
#18+
При работе в Firemonkey с TTreeViewItem нужно помнить, что есть Parent, а есть ParentItem. Т.е. если нужен цикл по родителям, то нужно шагать по ParentItem Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 19:06 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2041368]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 497ms |

| 0 / 0 |
