| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Разбираюсь с очисткой TTreeView |
| Автор: кварк 7.12.2004, 08:51 | ||||
| Меня тревожит вопрос, хочу разобраться: Создаю свой тип:
Заполняю TTreeView примерно так:
Как его очищать? tv.Items.Clear? В справке написано "Deletes all tree nodes contained from the list managed by TTreeNodes." А память Data освобождается? А если строки длинные (Список ведь большой может быть)? Скажите пожалуйста, как все-таки правильно очищать этот список? |
| Автор: ~FoX~ 7.12.2004, 09:13 |
| TreeView1.Items.Clear - очистит дерево. А TMyData - очиститься само, по завершении работы. |
| Автор: кварк 7.12.2004, 09:39 |
| То есть если я хочу перестроить дерево, то перед отчисткой надо пробегаться по всем элементам и делать FreeMem(Item.Data, Sizeof(TMyData));? А если там строки были килобайт по 100, как их грохнуть? Может, не со string надо запись делать, а с каким-нибудь классом-оберткой (типа CString). Тогда уж вместо записи надо класс писать. А если String - поле класса, оно уничтожится по free класса или останется висеть до завершения приложения? Чего-то я совсем запутался под утро :-) |
| Автор: кварк 7.12.2004, 11:59 |
| Я, пожалуй, упустил самое простое решение: TTreeView.OnDeletion. :-( Буду копать в этом направлении. |
| Автор: ~FoX~ 7.12.2004, 12:46 | ||||
Конечно.
Только не CString, а TStrings или TStringList. |