Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
7-78675
mummi
2002-08-14 12:26
2002.10.24
Откликнетесь люди, которые пишут драйвера для своих устройств


1-78492
KLOP
2002-10-12 08:54
2002.10.24
Возможно ли в Делфях сварганить а-ля WinXP интерфейс ?


1-78362
Krez
2002-10-14 15:31
2002.10.24
Добавление компонента


3-78265
sdram
2002-10-02 17:03
2002.10.24
как задать ключевое поле DataSet -у ?


3-78261
MB250
2002-10-02 14:20
2002.10.24
DBE Error $220B





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский