![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в TreeView очистить все ветки? [D5, Win95/98]
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;