方法一: 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;

 

posted on 2009-03-18 12:05  紫轩  阅读(412)  评论(0编辑  收藏  举报