下面的编码实现了你需要的功能,仅供参考。代码不全,希望给你启发
建议使用递归的方式实现比较合适
全局变量
iOrganArray //用于数组下标
sOrganEofTierUrl:array of string; //用于记录最后一层机构的URL
sOrganEofTierCode:array of string; //用于记录最后一层机构的编码
这3个变量的用途是记录创建的机构的最后一层机构对象的URL和编码,为创建部门奠定基础
说明
iOrganBaseNumber 输入参数,表示创建机构每层数量
iOrganTierNumber 输入参数,表示创建机构层数
sParentName 表示父类编码
procedure CreateOrgan(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer); var
sTestOrgID:string //机构ID
begin
lBizUrl:=TBizUrl.Create;
lBizUrl.URL:=sBizUrl;
for li:=1 to iOrganBaseNumber do
begin
sTestOrgName:=sParentName+inttostr(li);
///////利用机构名称的拼音开头转化为机构ID////////////////////////
Business.Model.ExtUtils.StringToPYCapitals(sTestOrgName,sTestOrgID);
orgsys.OrgSystem.CreateOrgan (lBizUrl,sTestOrgID,sTestOrgName);
//////////////////////如果iOrganTierNumber层数等于1说明为最后一层,不必再进入递归循环了
if iOrganTierNumber>1 then
CreateOrganRamus(sBizUrl+'\'+sTestOrgID+'.ogn',sTestOrgName,iOrganBaseNumber,iOrganTierNumber-1,iSign);
if iOrganTierNumber=1 then
begin
sOrganEofTierUrl[iOrganArray]:=lBizUrl.Url+'\'+sTestOrgID+'.ogn';
sOrganEofTierCode[iOrganArray]:=business.System.StrUtils.RightStr(sTestOrgID,length(sTestOrgID)-4);
/////数组下标增加1/////
iOrganArray:=iOrganArray+1;
end;
end;
end;
用于调用上面创建机构的过程
procedure TMainForm.CreateOrganRamus(sBizUrl,sParentName:string;iOrganBaseNumber,iOrganTierNumber:integer);
begin
CreateOrgan(sBizUrl,sParentName,iOrganBaseNumber,iOrganTierNumber);
end;
调用创建整个的程序
procedure TMainForm.BtnokClick(Sender: TObject);
var
iOrganTierNumber:integer; ////层数
iOrganBaseNumber:integer; ///// 基数
begin
CreateOrgan('org:\root','测试机构',iOrganBaseNumber,iOrganTierNumber);
end; |