Главная страница
    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-57426
igorr
2002-03-03 05:25
2002.03.18
Пропорциональность при загрузке изображения, когда Stretch=True.


3-57330
EsKor
2002-02-18 09:47
2002.03.18
Работа с таблицами находящихся в подкаталогах


1-57377
vopros
2002-03-01 12:50
2002.03.18
Подскажите как в TMemo делать поиск?


4-57576
scam
2002-01-18 03:31
2002.03.18
Как по хэндлу окна узнать имя и путь exe шника которому это окно принадлежит.


1-57399
Alex Dobrushin
2002-02-27 17:57
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский