方法一: component 释放时候有自动垃圾回收功能
type
TDepartMent = class(TComponent)
private
FName: string;
FID: string;
FPARENT_ID: string;
FCompanyID: string;
FType: TDepartType;
FWareID: string;
FEnabled: Boolean;
public
property DepartmentName: string read FName write FName;
property ID: string read FID write FID;
property PARENT_ID: string read FPARENT_ID write FPARENT_ID;
property CompanyID: string read FCompanyID write FCompanyID;
property DepartmentType: TDepartType read FType write FType;
property WareID: string read FWareID write FWareID;
property Enabled: Boolean read FEnabled write FEnabled;
constructor Create(AOwner: TComponent); override;
end;
procedure LoadNodes(ParetNode: TTreeNode);
var
Node : TTreeNode;
CDS : TClientDataSet;
DepartMent : TDepartMent;
begin
CDS := TClientDataSet.Create(nil);
CDS.XMLData := ADataSet.XMLData;
CDS.Filter := 'PARENT_ID=' + '''' + TDepartMent(ParetNode.Data).ID + '''';
CDS.Filtered := False;
CDS.Filtered := True;
with CDS do
begin
First;
while not EOF do
begin
DepartMent := TDepartMent.Create(ATree);
DepartMent.ID := FieldByName('DEPA_ID').AsString;
DepartMent.PARENT_ID := FieldByName('PARENT_ID').AsString;
DepartMent.DepartmentName := FieldByName('NAME').AsString;
DepartMent.CompanyID := FieldByName('COMP_ID').AsString;
DepartMent.DepartmentType := dtDepartment;
DepartMent.FWareID := FieldByName('WARE_EXTENDED_ID').AsString;
Node := ATree.Items.AddChild(ParetNode, DepartMent.DepartmentName);
Node.Data := DepartMent;
if DepartMent.ID = OldID then
ATree.Selected := Node;
LoadNodes(Node);
Node.Expanded := False;
Next;
end;
end;
CDS.Free;
end;
type
TDepartMent = class(TComponent)
private
FName: string;
FID: string;
FPARENT_ID: string;
FCompanyID: string;
FType: TDepartType;
FWareID: string;
FEnabled: Boolean;
public
property DepartmentName: string read FName write FName;
property ID: string read FID write FID;
property PARENT_ID: string read FPARENT_ID write FPARENT_ID;
property CompanyID: string read FCompanyID write FCompanyID;
property DepartmentType: TDepartType read FType write FType;
property WareID: string read FWareID write FWareID;
property Enabled: Boolean read FEnabled write FEnabled;
constructor Create(AOwner: TComponent); override;
end;
procedure LoadNodes(ParetNode: TTreeNode);
var
Node : TTreeNode;
CDS : TClientDataSet;
DepartMent : TDepartMent;
begin
CDS := TClientDataSet.Create(nil);
CDS.XMLData := ADataSet.XMLData;
CDS.Filter := 'PARENT_ID=' + '''' + TDepartMent(ParetNode.Data).ID + '''';
CDS.Filtered := False;
CDS.Filtered := True;
with CDS do
begin
First;
while not EOF do
begin
DepartMent := TDepartMent.Create(ATree);
DepartMent.ID := FieldByName('DEPA_ID').AsString;
DepartMent.PARENT_ID := FieldByName('PARENT_ID').AsString;
DepartMent.DepartmentName := FieldByName('NAME').AsString;
DepartMent.CompanyID := FieldByName('COMP_ID').AsString;
DepartMent.DepartmentType := dtDepartment;
DepartMent.FWareID := FieldByName('WARE_EXTENDED_ID').AsString;
Node := ATree.Items.AddChild(ParetNode, DepartMent.DepartmentName);
Node.Data := DepartMent;
if DepartMent.ID = OldID then
ATree.Selected := Node;
LoadNodes(Node);
Node.Expanded := False;
Next;
end;
end;
CDS.Free;
end;