Главная страница
    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
2-1278654940
linuxoid
2010-07-09 09:55
2010.10.03
как указать количество пакетов tidicmpclient?


2-1278433099
Delphist2
2010-07-06 20:18
2010.10.03
полупрозрачность


2-1278996425
azamatufa
2010-07-13 08:47
2010.10.03
Подскажите как правильно выводить отчет в Word


15-1278578373
Дмитрий С
2010-07-08 12:39
2010.10.03
имеет ли смысл заморачиваться поддержкой ie6 на своем сайте?


15-1278068031
dr_creigan
2010-07-02 14:53
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский