Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.03;
Скачать: CL | DM;

Вниз

загрузка из базы в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
15-1278348746
SemNic
2010-07-05 20:52
2010.10.03
Могут ли быть проблемы в WIN7 при эксплуатации для проги


2-1278658000
Виталий
2010-07-09 10:46
2010.10.03
Установить группу битов числа


11-1224845500
Кто б сомневался
2008-10-24 14:51
2010.10.03
Аналог Timage для PNG - положить картинку на форму


15-1278102588
Юрий
2010-07-03 00:29
2010.10.03
С днем рождения ! 3 июля 2010 суббота


13-1126182925
Ilya39
2005-09-08 16:35
2010.10.03
Потоки в C#