|
TtreeNodes
|
|||
---|---|---|---|
#18+
wellvkкак я понимаю: создается объект(ttreeNodes) у него есть сво-во Item , где хранятся Node, под это дело выделяется память,не котролом, затем я говорю контролу AdvTreeComboBox, что узлы лежат там-то, и контрол присваивает себе этот кусок памяти(или копирует в свои свойства ) и при закрытии приложения(уничтожения) удалят из памяти инфу, но уничтожением можно управлять. Прости - у меня нет исходников, чтобы тебе на примере показать, но, в общем, ты не прав. Дело не в выделении памяти (напрямую этого действия не происходит), а о том, что контрол считает объекты этого свойсва своими (оперируй не областями кучи, а объектами - это немного разные вещи) и, следовательно, внутри может с ними делать все, что угодно. В том числе и освобождение всех объектов списка при, например, изменении количества элементов. Если тебе так хочется кешировать элементы - возьми список, массив или даже просто рекордсет, который ты получаешь от АДО. Только не надо страдать тем, чем ты занимаешься сейчас - это, в корне не верно. Если есть вопросы "почему?" - прочитай книжку про классы, объекты, компоненты и VCL - никогда лишним не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2008, 01:54 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Tosh wellvkкак я понимаю: создается объект(ttreeNodes) у него есть сво-во Item , где хранятся Node, под это дело выделяется память,не котролом, затем я говорю контролу AdvTreeComboBox, что узлы лежат там-то, и контрол присваивает себе этот кусок памяти(или копирует в свои свойства ) и при закрытии приложения(уничтожения) удалят из памяти инфу, но уничтожением можно управлять. Прости - у меня нет исходников, чтобы тебе на примере показать, но, в общем, ты не прав. Дело не в выделении памяти (напрямую этого действия не происходит), а о том, что контрол считает объекты этого свойсва своими (оперируй не областями кучи, а объектами - это немного разные вещи) и, следовательно, внутри может с ними делать все, что угодно. В том числе и освобождение всех объектов списка при, например, изменении количества элементов. Если тебе так хочется кешировать элементы - возьми список, массив или даже просто рекордсет, который ты получаешь от АДО. Только не надо страдать тем, чем ты занимаешься сейчас - это, в корне не верно. Если есть вопросы "почему?" - прочитай книжку про классы, объекты, компоненты и VCL - никогда лишним не будет Согласен.Можете что-нб посоветовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2008, 08:29 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Внимательно почитать третий абзац :)) Если тебе так хочется кешировать элементы - возьми список, массив или даже просто рекордсет, который ты получаешь от АДО ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2008, 08:31 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
ToshВнимательно почитать третий абзац :)) Если тебе так хочется кешировать элементы - возьми список, массив или даже просто рекордсет, который ты получаешь от АДО Я имел ввиду специальную лит-ру.А то у меня Архангельский+Net. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2008, 08:08 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
В общем случае - достаточно хэлпа. А вообще - посмотри что такое рекордсет на MSDN. В твоем случае - будет достаточно обычного массива или TStringList для кеширования данных и простейшей процедуры как для копирования данных из твоего запроса в кеш, так и построение дерева на основе кеша. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2008, 08:48 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Ребята подскажите вот мы имеем код для перемещения одной ноды в другую CNode.MoveTo(TNode,naAddChild); как сделать не пермещение а копирование ноды, есть ли аналог CopyTo ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2014, 20:41 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
RESEARCH, TNode.Create & Node1.Assign(Node0) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2014, 21:21 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
AriochTNode.Create & Node1.Assign(Node0) ? Ну... MoveTo может перемещать не один нод. Так что код копирования будет чуть сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 09:08 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
правильно ли я понял что копирование по вложенным нодам придется писать вручную ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 23:44 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
гугольнул... в инете распространен пример с процедурой CopySubtree http://www.swissdelphicenter.ch/torry/showcode.php?id=1876 не смотрели ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 23:56 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
RESEARCHправильно ли я понял что копирование по вложенным нодам придется писать вручную ? Страшно чтоль? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 09:09 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
страшно... все листья в один уровень скопировать несложно а вот повторить структуру лучше я поищу аналог CopyTo в конце концов это же делфи ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 19:41 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
RESEARCH, дерево копируешь по одной ноде, через рекурсию... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 23:29 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
спасибо Кэп код не подкинешь. я все время путаюсь в GetNext GetNextChild и тому подобное ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2014, 17:06 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
RESEARCH, вот тут посмотри http://www.delphisources.ru/pages/faq/base/copy_paste_treenode.html Копировать и вставлять TreeNode Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2014, 17:08 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
братишки я вам процедурку написал пользуйтесь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2014, 02:02 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Ребятки посоветуйте следующий вопрос вот например мы имеем дерево в которой каждой ноде соответствует запись в DataSet. В ноде выводится только базовая информация например обозначение и количество, другие поля находятся в датасете. Необходимо провести редактирование ноды пользователем по всем полям, для этого надо вывести ноду в эдиты и записать обратно. Собственно вопрос, как однозначно сопоставить ноды и производные записи датасета учитывая то что будет делаться перемещение нод из одной в другую, копирование и соответственно AbsoluteIndex не может оставаться постоянным. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 01:20 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
переформулирую вопрос: как хранить (сопоставить) в ноде дополнительную скрытую информацию ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 01:23 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
RESEARCH, При условии что у вас DataSet на ходу не изменяемый, самое простое - сделать так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 02:07 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
rgreat, Если изменяемый то лучше через промежуточный массив или индекс с уникальным идентфикатором в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 02:12 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Спасибо, это как раз то что нужно. Только я использовал GetBookmark() вместо pointer(RecNo). Я копался в этом свойстве Node.Data но не додумался что оно как раз для указателя на внешние данные а не на внутренний текст. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 03:10 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
GetBookmark дает массив байт. Длина массива неизвестна. Чревато. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 03:15 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Или ты таки сделал промежуточный массив с букмарками и даешь ссылку уже на него? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 03:19 |
|
TtreeNodes
|
|||
---|---|---|---|
#18+
Node.Data:=DataSet.GetBookmark(); ... if DataSet.BookMarkValid(Node.Data) then DataSet.GotoBookmar(Node.Data); как то так ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2014, 05:19 |
|
|
start [/forum/topic.php?fid=58&msg=38546234&tid=2037016]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 435ms |
0 / 0 |