type
TProgram = record //class
Folder : Boolean; //Папка?
Name, //Название В дереве и нода
FullName, //Наименование программы
ver : String; //Версия
end;
PProgram = ^TProgram;
var
ProgramInfo : PProgram;
......
//Загрузка веток и листов
Procedure TFrm_Main.GetChileds(XMLNode: IXMLNode; TreeNodes: TTreeNodes; TreeNode: TTreeNode );
var
i: integer;
tmpNode : IXMLNode;
tmpTreeNode: TTreeNode;
//ProgramData: TProgram;
begin
for i:=0 to XMLNode.ChildNodes.Count - 1 do
begin
tmpNode := XMLNode.ChildNodes[i];
if tmpNode.ChildNodes.Count>0
then begin
GetChileds( tmpNode,
TreeNodes,
TreeNodes.AddChild( TreeNode , tmpNode.NodeName ) );
end
else
begin
//ProgramInfo := TProgram.Create;
//Операции над добавленным потомком
tmpTreeNode := TreeNodes.AddChild( TreeNode , tmpNode.NodeName );
//Переносим параметры
New(ProgramInfo);
tmpTreeNode.Data := ProgramInfo;
//Какие параметры вносим?
if tmpNode.Attributes['Folder']=false then
begin //Заполняем параметры
ProgramInfo^.Folder := false;
ProgramInfo^.FullName := tmpNode.Attributes['FullName'];
ProgramInfo^.ver := tmpNode.Attributes['Version'];
end
else ProgramInfo.Folder := true;
end; //Есть, нет детей
end; //Цикл добавление нодов
end;
//При операции ProgramInfo^.Folder := false; вылетает с ошибкой Project ... raised exception class EAccessViolation with message 'Access violation at address 00404934 in module .... Rad address 000000004'
...........
//Начало работы
var
FirstNode: IXMLNode;
TreeNodes: TTreeNodes;
FirstTreeNode: TTreeNode;
begin
XMLDocument.Active;
//Подготовка загрзки
TreeView.Items.Clear;
FirstNode := XMLDocument.ChildNodes.Get(1);
TreeNodes := TreeView.Items;
FirstTreeNode := TreeView.Items.AddChild(TreeView.TopItem, FirstNode.NodeName);
//Загрузка
GetChileds(FirstNode, TreeNodes, FirstTreeNode);
//Фокус и загрузка выделенного
TreeView.Items.Item[0].Selected := true;
.............
//Действия при клике
procedure TFrm_Main.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
TreeClickNode.Execute; //В этой процедуре должны грузится данные в Memo например
end;
//С сохранением еще не разбирался....
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.