Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

TTreeview ???   Найти похожие ветки 

 
Dr. Web   (2002-02-27 13:11) [0]

Извеняюсь за тупой вопрос, но с Деревьями до сих пор не сталкивался...
Вопрос вот какой
Есть два тривьюва
нужно к Item"у одного добавить все дерево из другого,
а у меня не получается....
(думаю есть более простой вариант чем перебор всех чайлдов в другом Вьюве и создание схожих итемов в первом вьюве)
помогите плз.


 
troits   (2002-02-27 13:32) [1]

IMHO, другого пути нет.
TTreeView - просто оболочка над соответствующим Windows - контролом, поэтому, боюсь, придется делать именно проходом по исходному дереву.


 
pasha_golub   (2002-02-27 14:30) [2]

Надо чтобы в первом дереве был один родитель-item, тогда его можно просто добавить во второй!


 
Dr. Web   (2002-02-27 16:39) [3]

pasha_golub
так и есть
рождитель во втором вьюве один


 
troits   (2002-02-27 17:24) [4]

Непонятно, что значит

>pasha_golub © (27.02.02 14:30)
>"один родитель-item"

>Dr. Web © (27.02.02 16:39)
>рождитель во втором вьюве один

Это вы о чем, о корне дерева, что - ли, который просто по определению дерева один?


 
Song   (2002-02-27 17:31) [5]

Да, недавно была такая же проблема. Ответ удручающий: только перебором исходного с построением такой же структуры в результирующем дереве. Assign и AssignTo для TTreeView не работают :( есть MoveTo, но он не переносит детей (это делает только аист :))) ) вообщем MoveTo переносит только несколько свойств исходного в результирующее дерево, подветви он не переносит.


 
Набережных С.   (2002-02-27 17:42) [6]

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=9129


 
Dr. Web   (2002-02-27 18:02) [7]

Набережных С.
пасибки щас буду пробовать :)


 
Dr. Web   (2002-03-01 11:04) [8]

Попробовал процедурку, которую предоставил Наб ережных С.
и вот что у меня получилось
делает копию чайлдов только первого уровня...
возле тех, у которых есть свои чайлды - стоят плюсики
НО
дальше они не открываются :(
пробовал смотреть что за прикол
так у чайлдов то Итем Каунт = 0 8-[ ]


 
Song   (2002-03-01 16:49) [9]

Слушай, я когда писал копирование ручками, я и не знал, что есть возможность более легко, потому что все методы Assign у меня выдавали AE. Поэтому я написал процедуру сам.
Вот алгоритм:
1.Берёшь первую ветку. Создаёшь ветку с таким названием в
результирующем дереве.
2.Смотришь детей. Если есть проходишь по ним в цикле созавая таких же в результирующем.
3. Независимо от того, были дети или нет, делаешь GetNextSibling и переводишься на следющую ветвь.
4. Делаешь шаг 1.

Я конечно могу тебе её прислать, но адаптировать лень, она сделана под конкретное исходное дерево и под конкретное результирующее, поэтому там сразу трудно её сделать, чтобы она у тя пошла сразу Ok.


 
Набережных С.   (2002-03-01 17:11) [10]


> Dr. Web © (01.03.02 11:04)

Ну давай, показывый, чего начудил.


 
Polevi   (2002-03-01 17:39) [11]

procedure TForm1.InsertTreeView(DestTreeView:TTreeView;DestNode, SourNode: TTreeNode);
var
dn,n:TTreeNode;
begin
dn:=DestTreeView.Items.AddChild(DestNode,SourNode.Text);
n:=SourNode.getFirstChild;
while Assigned(n) do
begin
InsertTreeView(DestTreeView,dn,n);
n:=SourNode.GetNextChild(n);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
n:TTreeNode;
begin
n:=SourTree.Items.GetFirstNode;
while Assigned(n) do
begin
//добавляем в первую ветку дерева-получателя (можно передать любую)
InsertTreeView(DestTree,DestTree.Items[0],n); n:=n.GetNextSibling;
end;
end;


 
Dr. Web   (2002-03-04 10:29) [12]

ВСЕМ ПАСИБКИ!!!!!!!!!!!!!!!!!!!
разобрался!!!!! :)
уже все работает, спасибо всем, кто откликнулся
процедура, которую предоставил Набережных С. РАБОТАЕТ КРУТО
Пример от Polevi © тоже работает, НО она только копирует сам вид дерева, без даных, которые еще зашити в поле data...
Разобрался, а проблемка была не в даных мне примерах с этого форума
просто я использовал ТрииВью, из примеров с IB.demo.ru
(древовидные даные)а там просто в тривью чайлды добавлялись по мере открытия каждого узла....
решил просто: в процедуру копирования добавил строчку построения даного узла и все!!! :)))
а задача у меня была такая:
есть мастер и детаил таблица (древовидные даные)
НУЖНО ЭТИ ДАНЫЕ ОТОБРАЗИТЬ в одном тривьюве :)
одна таблица справочник типов абонентов, а другая - собственно абоненты и ихние подразделы... все получилось
Еще раз спасибо за помощь!!!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
1-57447
AnIg
2002-03-01 13:00
2002.03.18
В поисках компонента работы с графиками функций. Что посоветуете?


1-57406
Сергей Ф
2002-02-20 04:38
2002.03.18
Как использовать Сишную dllку? Есть исходник. Нужно её вызывать из Дельфи и получать ответ. В Си я не очень. Подскажите пожалуйтса!


1-57398
Alex
2002-03-01 20:21
2002.03.18
Dll


4-57562
Vlad_NOJB
2002-01-20 10:27
2002.03.18
Как определить HWND окна?


3-57319
Оксана
2002-02-18 10:56
2002.03.18
Нетипизированные файлы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский