业务要求:根据传入的人员ID设置组织机构树中对应的人员节点为勾选。
平台版本:2827
问题:以下代码中通过FileName属性定位节点不成功,拜求原因和解决途径,谢谢拉
部分代码如下:
constructor TCT_GG_RYDXXZ.Create(AContext:TContext; ASelected:TStringList);
begin
inherited Create(AContext);
CSelected := ASelected; // 传入的人员ID列表
end;
procedure TCT_GG_RYDXXZ.BizFormCreate(Sender: TObject);
var
lBizNode: TBizNode;
lBizURL: TBizURL;
begin
FSelected := TStringList.Create;
// 以下设置为组织结构树
lBizUrl :=TBizURL.Create;
lBizUrl.URL :='Org:\ROOT';
lBizNode := BizTree.BizTreeStructure.FindNodeByBizURL(lBizURL);
if lBizNode <> nil then
cbtvRYXZ.StartWithNodes.AddObject(lBizNode.GUID, lBizNode);
cbtvRYXZ.ShowOptions := [TOrgUnitKind.boOrgServer, TOrgUnitKind.boOrgRoot,
TOrgUnitKind.boOrgan, TOrgUnitKind.boDept,
TOrgUnitKind.boPositionMember, TOrgUnitKind.boPersonMember];
//cbtvRYXZ.CheckOptions := [TOrgUnitKind.boOrgan, TOrgUnitKind.boDept,
// TOrgUnitKind.boPositionMember, TOrgUnitKind.boPersonMember];
cbtvRYXZ.CheckOptions := [TOrgUnitKind.boPersonMember];
cbtvRYXZ.ReloadTree;
end;
procedure TCT_GG_RYDXXZ.BizFormShow(Sender: TObject);
var
I : integer;
lFileName : string;
lPerson: TPerson;
begin
if Assigned(CSelected) then
begin
// 根据已经传入的人员ID给对应的节点打上勾
for I:=0 to CSelected.Count-1 do
begin
lPerson := OrgSys.OrgSystem.GetPerson(CSelected.Strings[I]);
lFileName := lPerson.BizURL.FileName;
try
cbtvRYXZ.FileName := lFileName;
//if cbtvRYXZ.Selected <> nil then // 这里检查得到 cbtvRYXZ.Selected = nil
// Business.Forms.Dialogs.ShowMessage(cbtvRYXZ.Selected.Text);
cbtvRYXZ.Checked[cbtvRYXZ.Selected] := true;
FSelected.AddObject(CSelected.Strings[I], cbtvRYXZ.Selected);
except
on E:Exception do
begin
//Business.Forms.Dialogs.ShowMessage(E.Message);
continue;
end;
end;
end;
end;
end; |