![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
переход по узлам в TreeView - какие-то заморочки [D6, D7, Win2k, WinXP]
malamba © (2005-03-06 12:46:00)Есть дерево со вложенными узлами.
Когда пользуюсь методом GetNext ( причем, все согласно примеру из Delphi) это гадство переходит только по открытым узлам. Если у узла есть дети, но они скрыты ( узел не развернут), то GetNext их обходит стороной.
Как бы организовать переход по все узлам, независимо от их раскрытия?
Методом If ...Items[i]= ..., сразу скажу - не пользуюсь.
malamba (2005-03-15 10:39:00) [1]GetNext это вовсе не то, что Items[i]=.
Во всяком случае так говорят в Инете:
http://delphiworld.by.ru/base/treeview_nodes_access.html
ЮЮ (2005-03-15 04:18:00) [2]>Ольга, только не это.
>На больших списках это жутко тормозит.
Удивительно, как TTreeNode.GetNext c дюжиной строк кода может ускорить этот процесс, если последовательнось обхода узовлов аналогична той, что и в
for i := 0 to TreeView.Items.Count - 1
malamba (2005-03-14 10:11:00) [3]Виноват, задержался.
Возвращаясь к напечатанному:
Выкладываю DFM
object TreeViewZayavky: TTreeView
Left = 0
Top = 5
Width = 276
Height = 381
Color = 15268607
Font.Charset = DEFAULT_CHARSET
Font.Color = clNavy
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HideSelection = False
Images = ImageListTree
Indent = 19
ParentFont = False
ReadOnly = True
TabOrder = 0
OnClick = TreeViewZayavkyClick
OnCustomDrawItem = TreeViewZayavkyCustomDrawItem
OnEnter = TreeViewZayavkyClick
OnExpanding = TreeViewZayavkyExpanding
OnKeyUp = TreeViewZayavkyKeyUp
end
malamba (2005-03-07 17:04:00) [4]Виноват, тогда сюда и только сюда.
До среды.
MU (2005-03-07 16:39:00) [5]возьмите новый проект с TreeView и проверьте
или свой старый.
ShimON (2005-03-07 16:10:00) [6]И люди, которые за ней следят...
malamba (2005-03-07 16:05:00) [7]Гм, получится разве что в среду - он остался на работе, а домашняя копия старая.
Если не удасться нарыть это сообщени, пущу новое.
А может быть сразу в мыло, поскольку в этой теме остались только я да Вы.
MU (2005-03-07 15:47:00) [8]выложите кусок из DFM (TreeView) весь
malamba (2005-03-07 15:39:00) [9]М-м-м, странно.
То есть у Вас несколько узлов уровня 0, у каждого узла 0 - по нескольку узлов уровня 1, и так несколько раз.
И при закрытых узлах уровня 0 GetNext переходит по всем без исключения узлам, независимо от уровня?
Тогда какие настройки treeView ?
MU (2005-03-06 21:16:00) [10]у меня (D6) ваш код рааботает
malamba (2005-03-06 19:04:00) [11]MyTreeView.Items.GetFirstNode;
Разумеется, Items - я писал по памяти. Главное - смысл: получаю первый узел, а затем каждый последующий проверяю на соотвествие.
Но GetNext и не проходит.
MU (2005-03-06 18:32:00) [12]что-то подозрительный код
кто такой MyTreeView?
если это TTreeView, то у него не MyTreeView.GetFirstNode;
а есть
MyTreeView.Items.GetFirstNode;
malamba (2005-03-06 18:17:00) [13]Ольга, только не это.
На больших списках это жутко тормозит.
Показываю:
tmpNod := MyTreeView.GetFirstNode;
Searching := true;
while (Searching) and (tmpNod <> nil) do
begin
if tmpNod.text = SearchTarget then
begin
Searching := False;
MyTreeView.Selected := tmpNod;
MyTreeView.SetFocus;
end
else
begin
tmpNod := tmpNod.GetNext
end;
end;
Ольга (2005-03-06 14:59:00) [14]for i:=0 to TreeView.Items.Count-1
MU (2005-03-06 12:49:00) [15]покажите код