Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбираюсь с очисткой TTreeView, Как это сделать правильно? 
:(
    Опции темы
кварк
Дата 7.12.2004, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.8.2002

Репутация: нет
Всего: нет



Меня тревожит вопрос, хочу разобраться:

Создаю свой тип:
Код

TMyData = record
 ShortName: String;
 FullName: String;
 Type: Integer;
end;


Заполняю TTreeView примерно так:
Код

var
 tv: TTreeView;
 tn: TTreeNode;
 p: ^TMyData;

. . .
   tn := tv.Items.AddChild(nil, 'Надпись ' + IntToStr(tv.Items.Count));
   GetMem(p, Sizeof(TMyData));
   p^.ShortName := 'ShortName';
   p^.FullName := 'FullName';
   p^. Type := 138;
   tn.Data := p;


Как его очищать? tv.Items.Clear?
В справке написано "Deletes all tree nodes contained from the list managed by TTreeNodes."
А память Data освобождается? А если строки длинные (Список ведь большой может быть)?

Скажите пожалуйста, как все-таки правильно очищать этот список?
PM MAIL   Вверх
~FoX~
Дата 7.12.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



TreeView1.Items.Clear - очистит дерево.
А TMyData - очиститься само, по завершении работы.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
кварк
Дата 7.12.2004, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.8.2002

Репутация: нет
Всего: нет



То есть если я хочу перестроить дерево, то перед отчисткой надо пробегаться по всем элементам и делать FreeMem(Item.Data, Sizeof(TMyData));? А если там строки были килобайт по 100, как их грохнуть? Может, не со string надо запись делать, а с каким-нибудь классом-оберткой (типа CString). Тогда уж вместо записи надо класс писать. А если String - поле класса, оно уничтожится по free класса или останется висеть до завершения приложения?

Чего-то я совсем запутался под утро :-)

Это сообщение отредактировал(а) кварк - 7.12.2004, 09:40
PM MAIL   Вверх
кварк
Дата 7.12.2004, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.8.2002

Репутация: нет
Всего: нет



Я, пожалуй, упустил самое простое решение: TTreeView.OnDeletion. :-(

Буду копать в этом направлении.
PM MAIL   Вверх
~FoX~
Дата 7.12.2004, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата
А если String - поле класса, оно уничтожится по free класса

Конечно.

Цитата
с каким-нибудь классом-оберткой (типа CString)

Только не CString, а TStrings или TStringList.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.