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

Вниз

загрузка из базы в Treeview   Найти похожие ветки 

 
linuxoid   (2010-07-07 15:47) [0]

Здравстауйте! у мя вопрос такой.

имеется таблица node
nodeid|parentid|nodename

пытаюсь загрузить из него данные в Treeview. загружается токо узлы и подузлы, а вот подподузлы не загружаются в чем проблема может быть.

procedure Tmainform.updateClick(Sender: TObject);
var i:integer;
child:ttreenode;
begin
subjecttree.Items.BeginUpdate;
if subjecttree.Items.Count >0 then
begin
 subjecttree.Items.Clear
 end;

 basequery.Active:=false;
 basequery.SQL.Clear;

 basequery.SQL.Text:="select *"+
 "from node where parentid=:parentid";
 basequery.Parameters.ParseSQL(basequery.SQL.Text,true);
basequery.Parameters.ParamByName("parentid").Value:=0;

 try
   baseconnect.Open;
   basequery.Active:=true;

   if basequery.RecordCount<>0 then
   begin
     while not basequery.Eof do
       begin
         subjecttree.Items.AddObject(nil, basequery.Fields[2].asstring,
         pointer(basequery.Fields[0].asinteger));
         basequery.Next;
       end;

     child:=subjecttree.Items.GetFirstNode;
     while child<>nil do
     begin
           FillBranch(Child);
         Child := Child.GetNextSibling;
        end;//while
     end; //if

   finally
     BaseConnect.Close; //Закрываем коннект
   end;
 SubjectTree.Items.EndUpdate; //Разрешить прорисовку
{FillTree}

end;

procedure TMainForm.FillBranch(tn: TTreeNode);
var
 i: Integer;
 TreeNode : TTreeNode;
begin
 BaseQuery.Active := false;
 BaseQuery.SQL.Clear;
 //Составление запроса и ввод параметров
 //Выбираем элементы не имеющие родителя, т.е. корневые
 BaseQuery.SQL.Text := "SELECT NodeID, ParentID, NodeName, NodeType "+
                           "FROM node WHERE ParentID = :ParentID";
 BaseQuery.Parameters.ParseSQL(BaseQuery.SQL.Text, true);
 BaseQuery.Parameters.ParamByName("ParentID").Value := Integer(tn.Data);

 BaseQuery.Active := true;

 if BaseQuery.RecordCount <> 0 then
     begin
       while not BaseQuery.Eof do
       begin
         TreeNode := SubjectTree.Items.AddChildObject(tn,
                         BaseQuery.Fields[2].AsString,
                         Pointer(BaseQuery.Fields[0].AsInteger));
         
         BaseQuery.Next;
       end;  //while

       Child := tn.getFirstChild;
       while Child <> nil do
         begin
             FillBranch(Child);
           Child := Child.GetNextSibling;
         end;//while

     end; //if
end; {FillBranch}

заранее благодарю.
или имеется ли альтернативный код?


 
Dennis I. Komarov ©   (2010-07-07 15:57) [1]

 procedure AddSubMenuItems(UpItem: Integer; Parent: TMenuItem);
 var
   MI: TMenuItem;
 begin
   with TAdoDataSet.Create(Self) do try
     ConnectionString:=AConnectionString;
     CommandText:="EXEC sp_GetPartOfMenu " + IntToStr(UnitID) + ", " + IntToStr(UpItem);
       Active:=true;
       First;
       while not Eof do begin
         MI:=TMenuItem.Create(Self);
         MI.Caption:=FieldByName("f_MenuItemCaption").AsString;
         MI.Tag:=FieldByName("f_MenuItemID").AsInteger;
         if Parent <> nil then Parent.Add(MI)
         else MainMenu.Items.Add(MI);
         if FieldByName("f_MenuItemAction").Value <> Null then
           MI.OnClick:=MenuItemClick;
         AddSubMenuItems(FieldByName("f_MenuItemID").AsInteger, MI);
         Next;
       end;
   finally
     Active:=False;
     Free;
   end;
 end;

begin
// Загружаем меню
 AddSubMenuItems(0, nil);
end;


выдрал из ..., но принцип думаю должен быть понятен


 
linuxoid   (2010-07-07 16:20) [2]

вот есть ссылка, которая должна подойти, но она че то не работает
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488

ошибка выходит:


 
Dennis I. Komarov ©   (2010-07-07 16:22) [3]

Все побежали смотреть, кто чего там наделал... Ты в коде то разберись, чай всего строк 20



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

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

Наверх





Память: 0.46 MB
Время: 0.003 c
15-1278092476
DVM
2010-07-02 21:41
2010.10.03
Вопрос к владельцам, знатокам IPhone.


15-1278262287
AlexDn
2010-07-04 20:51
2010.10.03
Hello World!


2-1278360825
AKE
2010-07-06 00:13
2010.10.03
Как отключить оптимизацию...


2-1278159774
alex810
2010-07-03 16:22
2010.10.03
Запрос с нечувствительностью к регистру


15-1278403825
DaveRT
2010-07-06 12:10
2010.10.03
Нужен код





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