我把那个都改过来了,改成这样
procedure TSELECTORGUNITSFORM.RefreshSource;
var
lKinds: TBizObjectKinds;
lOrgNodes, lOrgTreeNodes: TStringList;
I: Integer;
lNodes: TList;
lNode: TTreeNode;
begin
lKinds := InKinds;
if TOrgUnitKind.boPosition in InKinds then
begin
FileSys.FileSystem.Refresh('Org:\Position', false);
lKinds := lKinds + [
//TOrgUnitKind.boOrgServer,
TOrgUnitKind.boPositionRoot, TOrgUnitKind.boPosition];
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('ORG:\POSITION\');
TOrgUnitSelector(btbSearch.ToolBarModule).Kinds := TOrgUnitSelector(btbSearch.ToolBarModule).Kinds + [TBizObjectKind.boPosition];
end;
if TOrgUnitKind.boDept in InKinds then
begin
lKinds := lKinds + [
//TOrgUnitKind.boOrgServer,
TOrgUnitKind.boOrgRoot, TOrgUnitKind.boOrgan];
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('ORG:\ROOT\');
TOrgUnitSelector(btbSearch.ToolBarModule).Kinds := TOrgUnitSelector(btbSearch.ToolBarModule).Kinds + [TBizObjectKind.boDept];
end;
if TOrgUnitKind.boPositionMember in InKinds then
begin
lKinds := lKinds + [
//TOrgUnitKind.boOrgServer,
TOrgUnitKind.boOrgRoot, TOrgUnitKind.boOrgan, TOrgUnitKind.boDept];
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('ORG:\ROOT\');
TOrgUnitSelector(btbSearch.ToolBarModule).Kinds := TOrgUnitSelector(btbSearch.ToolBarModule).Kinds + [TBizObjectKind.boPositionMember];
end;
if TOrgUnitKind.boPersonMember in InKinds then
begin
lKinds := lKinds + [
//TOrgUnitKind.boOrgServer,
TOrgUnitKind.boOrgRoot, TOrgUnitKind.boOrgan, TOrgUnitKind.boDept, TOrgUnitKind.boPositionMember];
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('ORG:\ROOT\');
TOrgUnitSelector(btbSearch.ToolBarModule).Kinds := TOrgUnitSelector(btbSearch.ToolBarModule).Kinds + [TBizObjectKind.boPersonMember];
end;
if FSourceIsAll then
begin
trvSource.StartWithNodes.Clear;
trvSource.Nodes := nil;
trvSource.AutoExpand := False;
trvSource.ShowOptions := lKinds;
trvSource.ReloadTree;
trvSource.ShowOptions := [TOrgUnitKind.boFolder, TOrgUnitKind.boOrgServer] + lKinds;
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('ORG:\ROOT\');
TOrgUnitSelector(btbSearch.ToolBarModule).SearchRoots.Add('OR:\POSITION\');
Exit;
end;
lOrgNodes := TStringList.Create;
lOrgTreeNodes := TStringList.Create;
try
GetOrgNodes(SourceOrgURLs, lOrgNodes);
trvSource.StartWithNodes.Clear;
trvSource.BaseTree.GetNodesTreeList(lOrgNodes, lOrgTreeNodes, False,
False, True, True);
trvSource.ShowOptions := [TOrgUnitKind.boFolder, TOrgUnitKind.boOrgServer] + lKinds;
trvSource.Nodes := lOrgTreeNodes;
if SourceOrgURLs.Count <= 8 then
trvSource.FullExpand
else
begin
lNodes := TList.Create;
try
for I := 0 to trvSource.Items.Count - 1 do
begin
lNode := TTreeNode(trvSource.Items[I]);
if (lNode.Level = 1) then
lNodes.Add(lNode);
end;
for I := 0 to lNodes.Count - 1 do
begin
lNode := TTreeNode(lNodes[I]);
if not lNode.Expanded then
lNode.Expand(False);
end;
finally
lNodes.Free;
end;
end;
// 强制刷新,是为了使上下滚动条处于树的顶部。要不然就会处于树的底部。
lNode := trvSource.Selected;
trvSource.Selected := nil;
trvSource.Selected := lNode;
finally
lOrgTreeNodes.Free;
end;
end;
还是没有你上面图的效果 |