Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в TreeView очистить все ветки? [D5, Win95/98]


Страницы:   1 2 3 4 5

neXt2 ©   (2003-02-06 10:01:00) 

Мастера, помогите, наверное вопрос уже всех задолбал, но не сердитесь...
Т.е. не Items.Clear, а Node.Delete? Я очень часто перестраиваю дерево Items.Clear не очищяет память, а Node.Delete - делает, но как удалить все корни, я про них не знаю...


Digitman   (2003-02-06 15:05:00) [41]


> neXt2


долго еще будем играться в бирюльки ? приводи код, вызывающий ExpendLevel()... и более ранний, т.е. верхнеуровневую процедуру, с которой начинается вся эта "химия" по построению дерева


jack128   (2003-02-06 15:04:00) [42]

В данном случае дебагер видимо непомог...


Skier   (2003-02-06 15:03:00) [43]

>neXt2
Зависит от того используешь ли ты потом данные для узла, если да то обрушения не избежать.


Digitman   (2003-02-06 15:00:00) [44]


> jack128 © (06.02.03 14:43)
> я в таких слючаях комментировал участки кода и смотрел
> глюк проявился или нет. Таким образом локализововал ошибку...
>


ну и плохо ! схему/последовательность событий в приложении, даже не использующем компоненты, и встр.дебагер как наипервейший инструмент для отладки Делфи-приложений нужно знать как "Отче наш"... А поиск "глюков" вслепую никогда не избавит от "глюков"


neXt2   (2003-02-06 15:00:00) [45]


> Skier © (06.02.03 14:57)
> >neXt2 (06.02.03 14:43)
> А ты подумай как ты освобождать данные для узла будешь.
> Все же рухнет !

Я же и сначала и задавал такой вопрос -смотри САБЖ. Говорят Items.Clear должен работать.


neXt2   (2003-02-06 14:58:00) [46]

2 Digitman ©
Спасибо что помогаешь.
я использую DataModule. А Application.ProcessMessages я не использую...


Skier   (2003-02-06 14:57:00) [47]

>neXt2 (06.02.03 14:43)
А ты подумай как ты освобождать данные для узла будешь.
Все же рухнет !


Digitman   (2003-02-06 14:54:00) [48]


> jack128


"А ты кто такой ?"
(с) М.С.Паниковский, "человек без паспорта"


Digitman   (2003-02-06 14:51:00) [49]

как это "ничего" ? компоненты доступа к БД лежат у тебя на форме ? перед разрушением формы они разрушаются, и если в этот момент ты там чего-то творишь со своим деревом (вероятно, вызываешь ExpendLevel() в каком-то внешнем цикле, где присутствует Application.ProcessMessages), вот эти "грабли" тебя и лупят в одну и ту же шишку)) с завидной причем регулярностью)))


Digitman   (2003-02-06 14:48:00) [50]

как это "ничего" ? компоненты доступа к БД лежат на форме ? перед разрушением формы они разрушаются, и если в этот момент ты там чего-то творишь со своим деревом (вероятно, вызываешь ExpendLevel() в каком-то внешнем цикле, где присутствует Application.ProcessMessages), вот эти "грабли" тебя и лупят в одну и ту же шишку))


jack128   (2003-02-06 14:45:00) [51]

2 neXt2, Digitman а вообще для таких разговоров есть чат


neXt2   (2003-02-06 14:43:00) [52]


> Skier © (06.02.03 14:33)
> ChildNode:=AddChildObject(Node , FieldByName("name").AsString,
> Pointer(FieldByName("id").AsInteger)); - очень подозрительно
> !

Что именно подозрительно?


jack128   (2003-02-06 14:43:00) [53]

я не знаю сколько у тя кода в модуле, но
я в таких слючаях комментировал участки кода и смотрел
глюк проявился или нет. Таким образом локализововал ошибку...


neXt2   (2003-02-06 14:39:00) [54]


> Digitman © (06.02.03 14:34)
> >>при закрытии формы - глюк.
>
> и что делается при закрытии формы ?

ничего.


neXt2   (2003-02-06 14:38:00) [55]


> jack128 © (06.02.03 14:33)
> AddChild(ChildNode,""); ?
> У тя лишний узел появляется. И что будет если по нему кликнут?

Если этого не показать, то не видно что дети, про
ChildNode.HasChildren := Trueя не знал :(

> Digitman © (06.02.03 14:34)
> >>при закрытии формы - глюк.
>
> и что делается при закрытии формы ?
>
> p.s. ты вообще в курсе, что в Паскале есть конструкции try..finally,
> try..except ?

конечно знаю, но тут я пока разбираюсь, и пока там глюка не было.


Digitman   (2003-02-06 14:34:00) [56]

>>при закрытии формы - глюк.

и что делается при закрытии формы ?

p.s. ты вообще в курсе, что в Паскале есть конструкции try..finally, try..except ?

BeginUpdate;
// здесь - твой "глюк", к примеру, произошел
EndUpdate; // эта строчка при "глюке" выполнена не будет !


jack128   (2003-02-06 14:33:00) [57]

AddChild(ChildNode,""); ?
У тя лишний узел появляется. И что будет если по нему кликнут?
Лудше сделать так ChildNode.HasChildren := True;


Skier   (2003-02-06 14:33:00) [58]

ChildNode:=AddChildObject(Node , FieldByName("name").AsString,
Pointer(FieldByName("id").AsInteger)); - очень подозрительно !


neXt2   (2003-02-06 14:31:00) [59]

Раскрытие ветки:
procedure TfMain.treeExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
if Node.getFirstChild.Data = nil
then
begin
Node.DeleteChildren;
ExpendLevel(Node);
end;
end;


neXt2   (2003-02-06 14:30:00) [60]

Вот перестройка дерева:
procedure TfMain.ReBildTree;
begin
tree.Items.Clear;
ExpendLevel(nil);
tree.Items[0].Selected := true;
end;


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо