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

Вниз

Подскажите пожалуйста: Treeview&TreeNode + array   Найти похожие ветки 

 
riko ©   (2004-06-08 16:28) [0]

Скорбно признавать, но силенок у меня нехватает.
Проблема в следующем:
есть массив (FKlasses: array of TFKlas;)
есть свойства этого TFKlas -
   IdNum: Integer read FIdNum write FIdNum;
   Names:  String read FNames write FNames;
   PredokNum:  Integer read FPredokNum write FPredokNum;
После некоторых манипуляций в массиве есть данные.
Как занести эти данные в TreeView, согласно:
   FKlasses[i].PredokNum = номер (IdNum) предка в базе;
топчусь на месте уже неделю, все понимаю, а написать не получается.....
подтолкните, плиз.
Спасибо.


 
dmitry99 ©   (2004-06-12 04:51) [1]

TTreeNode.Data


 
riko ©   (2004-06-12 17:26) [2]

спасибо, но что-то получается не совсем так, как хотелось бы....
ладненько, придется обойтись самому ....


 
Igorek ©   (2004-06-12 21:50) [3]

procedure TForm1.Button1Click(Sender: TObject);

 procedure AddItems(ParentNode: TTreeNode; const Index: Integer);
 var
   CurNode: TTreeNode;
   I: Integer;
 begin
   CurNode := TreeView1.Items.AddChild(ParentNode, FKlasses[Index].FNames);
   for I := 0 to Pred(Length(FKlasses)) do
     if (FKlasses[I].FPredokNum = Index) and (FKlasses[I].FPredokNum <> 0) then
       AddItems(CurNode, I);
 end;
 
var
 Root: Integer;
begin
 Root := 0;
 while Root < Length(FKlasses) do
 begin
   if FKlasses[Root].FPredokNum = 0 then // FPredokNum = 0 признак корня
     break;
   Inc(Root);
 end;

 AddItems(nil, Root);
end;


 
riko ©   (2004-06-15 13:50) [4]

to Igorek:
нет, в том то и дело, что в корень я добавлять умею,даже все имеющиееся значения FKlasses с признаком FPredokNum=0, хотя огромное спасибо....
Проблема в следующем, я добавляю корни веток, но после этого не могу в необходимую ветку добавить ветви в цикле.
Застрял на том, как уникально идентифицировать корни и последующие узлы, как увязать это со значением в базе, и как последовательно сделать текущими все Items, то есть как програмно перебрать все ветви и ответления сверяя значение идентификатора (ID)со значением FPredokNum добавляемого элемента, тем более что я заранее не знаю ни колличество ни значение элементов массива.
TTreeNode.Data конечно многое пояснил, но там осталось только научится последовательно переходить по всем ветвям и узлам.
Если есть какие нибудь ресурсы именно по этому вопросу - дайте пожалуйста линк.
Спасибо.


 
Igorek ©   (2004-06-15 17:56) [5]


> riko ©   (15.06.04 13:50) [4]

Не понял,
> Igorek ©   (12.06.04 21:50) [3]
- это решение задачи

> riko ©   (08.06.04 16:28)  

?

> TTreeNode.Data конечно многое пояснил

В упор не понимаю что он тебе пояснил в контексте твоей задачи. Поясни мне. Заодно и доработай изначальную постановку задачи.

Потом обговорим [4].



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

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

Наверх




Память: 0.45 MB
Время: 0.045 c
14-1086719021
Vasya.ru
2004-06-08 22:23
2004.06.27
хороший чистильщик реестра


1-1087284398
Igoryok
2004-06-15 11:26
2004.06.27
Про формулы как в МатКаде


14-1086629735
Частый
2004-06-07 21:35
2004.06.27
Работа в кладовке


1-1086931318
Vitaliy
2004-06-11 09:21
2004.06.27
Анго-русский словарь


3-1086154029
Izyum
2004-06-02 09:27
2004.06.27
ODBC &amp; ZEOS - что быстрее





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