Форум: "Начинающим";
Текущий архив: 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