Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизРаскрытие ветви TreeView Найти похожие ветки
← →
Rouse_ (2002-10-08 19:03) [0]Здравствуйте ув. Мастера. Возникла проблема следующего характера
Нужно при обновлении TreeView запомнить какая ветвь была развернута и после обновления (полной очистки и нового заполнения ветвей) открыть на старой
Ветви я запоняю из стринглиста S в котором содержатся примерно такие данные
2 \\qwe
3 \\qwe\asd
3 \\qwe\fgh
2 \\fdg
3 \\fdg\123
и т.д. короче это список шаров в сети
у TreeView AutoExpand ставил и в True и в False, результат один, после обновления все ветви свернуты
Как я делаю, запоминаю текст корня к примеру QWE который был развернут, потом при добавлении элементов смотрю, если корневая ветка имеет текст QWE делаю ей и всем ее элементам Expanded:= True
Вот полный код
procedure TSockScanThr.update;
var I,ii, lev:Integer;
Result, ShowAll, ShowPanel: Boolean;
TmpNode, TmpChild, tt: TTreeNode;
Root:String;
begin
//Здесь вычисляем какая ветвь развернута
if Assigned(Form1.TreeView2.Selected) then begin
try
tt:=Form1.TreeView2.Selected;
lev:=Form1.TreeView2.Selected.Level;
root:="";
if Lev = 0 then begin
root := Form1.TreeView2.Selected.Text;
end else begin
for i:=tt.absoluteIndex downto 0 do begin
if Form1.TreeView2.Items.item[i] .level = 0 then break;
end;
root:=Form1.TreeView2.Items.item[i].text;
end;
except end;
end;
//Form1.Label38.Caption := Root;
ShowAll := False;
ShowPanel := False;
with Form1.TreeView2.Items do begin
BeginUpdate;
Clear;
for i:= 0 to s.Count-1 do begin
case s.Strings[i][1] of
"2": begin
Result := False;
for ii := 0 to Form1.maxuser -1 do
if Form1.User[ii].CompName = copy(s.Strings[i],5,Length(s.Strings[i])) then
Result := True;
if ShowAll then Result := False;
if not Result then begin
ShowPanel := True;
TmpNode := Add(nil,copy(s.Strings[i],5,Length(s.Strings[i])));
TmpNode.StateIndex := 6;
if TmpNode.Text = root then TmpNode.Expanded := True;
end else TmpNode := nil;
end;
"3": begin
if Assigned(TmpNode) then begin
TmpNode.StateIndex := 5;
TmpChild := AddChild(TmpNode,copy(s.Strings[i],5+Length(TmpNode.Text),Length(s.Strings[i])));
TmpChild.StateIndex := 7;
if TmpNode.Text = root then TmpChild.Expanded := True;
end;
end;
end;
end;
EndUpdate;
end;
s.Free;
end;
Заранее спасибо
← →
Rouse_ (2002-10-08 23:13) [1]Никто не подскажет?
Заранее спасибо
← →
Anatoly P (2002-10-12 18:37) [2]У TreeView есть .Data , добавь флаг состояния
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c