Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизПроблема с TreeView Найти похожие ветки
← →
dream (2004-12-03 10:18) [0]В общем имееться treeview с несколькими тесячами записей ... но подгрупп в нём всего 1 категория т.е
--- группа 1
---- подгруппа 1
---- подгруппа 2
---- подгруппа 3
--- Группа 2
---- подгруппа 1
---- подгруппа 2
---- подгруппа 3
В чём проблема : нужно чтобы при нажатии на группу из базы брались подгруппы и вставлялись на свой место а при закрытии группы опять удалялись ( т.е оставались видимыми только названия групп )
При удалении делаю так :
if treeview1.Selected.Level <> 0 then exit;
for n:=1 to treeview1.Selected.Count do begin
if treeview1.Selected.Count > 0 then
TreeView1.Items[1].Delete;
end;
а при добавлении код :
if treeview1.Selected.Level <> 0 then exit;
nodemain:= TreeView1.Selected;
for n:=1 to treeview1.Selected.Count do begin
if treeview1.Selected.Count > 0 then
TreeView1.Items[1].Delete;
end;
if ADO_group.Locate("Description",TreeView1.Selected.Text ,[locaseinsensitive]) = true then begin
for i := 1 to ADO_subGroup.RecordCount do begin
ADO_subGroup.RecNo:=i;
if ADO_subGroup.fieldbyname("IDGroup").AsString = ADO_group.fieldbyname("IDGroup").AsString then
nodenew:=TreeView1.Items.AddChild (nodemain,ADO_subGroup.fieldbyname("Description").AsString);
end;
end;
Работает через раз , иногда удаляет сами группы а не подгруппы ... ужа запарился что не так в коде ? Подскажите пожалуйста
← →
ЮЮ © (2004-12-03 10:31) [1]>При удалении делаю так, а при добавлении код :
Лучше скажи в обработчиках каких событий этот код?
← →
dream (2004-12-03 10:39) [2]Добавление : TreeView1DblClick
Удаление : Collapsing
← →
ЮЮ © (2004-12-03 10:54) [3]for n:=1 to treeview1.Selected.Count do begin
if treeview1.Selected.Count > 0 then
TreeView1.Items[1].Delete;
end;
Во-первых, индекс в Items изменяется от 0 до Items.Count - 1.
Во-вторых, после TreeView1.Items[1].Delete будет удален 2 элемент списка ВСЕГО ДЕРЕВА со всеми своими детьми. Зачем всё это ещё и в цикле делать, тем более, зависящего от Selected?
for n := treeview1.Selected.Count - 1 downto 0 do
treeview1.Selected.Item[n].Delete
← →
dream (2004-12-03 10:59) [4]Спасибо ! Получилось ... я просто ещё толком не знаком с этим компонентом по этому и запутался.
← →
ЮЮ © (2004-12-03 11:01) [5]Если ADO_group и ADO_subGroup и связаны как Master-Detail, то проверка
if ADO_subGroup.fieldbyname("IDGroup").AsString = ADO_group.fieldbyname("IDGroup").AsString then
просто лишняя, если, нет, то нет возврата к началу НД
Цикл организован неправильно, надо
ADO_subGroup.First;
while not ADO_subGroup.EOF do begin
...
ADO_subGroup.Next;
end;
← →
dream (2004-12-03 11:34) [6]Так работает без проблем , а при ADO_subGroup.Next; скорость навигации по базе ухудшаеться в несколько раз.
Возврат в начало списка это как раз
for i := 1 to ADO_subGroup.RecordCount do begin
← →
ЮЮ © (2004-12-03 11:49) [7]Тогда уж, возврат в начало списка, точнее, позиционирование в списке, это как раз ADO_subGroup.RecNo:=i;, которое я сразу не приметил.
← →
dream (2004-12-03 12:13) [8]Ну да я просто не так выразился , написал перебор а установку позиции как раз и не написал.
Слушай ты не знаешь случайно как отследить нажатие на крестик ( развернуть ) а то при двойном щелчке работает а при нажатии на развернуть не работет
← →
ЮЮ © (2004-12-03 12:25) [9]>а то при двойном щелчке работает а при нажатии на развернуть не работет
А как он может работать, если после сворачивания ты всех детей удалил? Оставляй хотя бы одного :) Или вообще не трогай: у тебя же в коде на открытие всё равно стоит сначала удаление
← →
dream (2004-12-03 13:19) [10]Как раз и нужно удалять... чтобы не тормозить процесс.. там могут содержаться несколькко тыс записей.
а отследить нажатие некак нельзя ?
← →
ЮЮ © (2004-12-06 05:46) [11]Как, скажи, можно распахнуть узел, если у него нет детей? Вот я и предлагаю при создании "группы" вставлять Dummy "подгруппу", которая все-равно при распахивании будет уничтожена. Аналогично, после удаления всех "подгрупп" при сворачивании "группы" добавить туда же Dummy "подгруппу".
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c