起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: newjack

如何创建多个业务功能树**

[复制链接]
 楼主| 发表于 2007-4-12 11:15:46 | 显示全部楼层
{  if FDefaultPosition = nil then
    FFuncTree := TOperatorFuncTree.Create(TSystemCore.Operator.Context)
  else
    FFuncTree := TOperatorFuncTree.Create(FDefaultPosition.Context);}

  if FDefaultPosition = nil then
    FFuncNavBar := TOperatorFuncNavBar.Create(TSystemCore.Operator.Context)
  else
    FFuncNavBar := TOperatorFuncNavBar.Create(FDefaultPosition.Context);

//  FFuncNavBar.BaseTree := FFuncTree;
这两个地方已经被你们注释掉了
我们原来的做法就是仿照FFuncNavBar 和 FFuncTree
回复 支持 反对

使用道具 举报

发表于 2007-4-12 16:51:03 | 显示全部楼层
这样吧,你把你修改资源上传上来,我们恢复环境跟踪一下
回复 支持 反对

使用道具 举报

发表于 2007-4-12 16:51:49 | 显示全部楼层
能否把以前版本上以用的源代码帖上来,以及现在的源代码相关部分帖上来啊!我做做看看!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 10:15:19 | 显示全部楼层
时间太紧,来不及等你们帮我看程序了.我已经找到别的路子,正在尝试.

如果可以的话,麻烦帮我回答以下问题:
1, 2617中建立Bar是先TSTANDARDSTYLEMAINFORM.InitBarPosition,然后TSTANDARDSTYLEMAINFORM.AddBars,比2611少了TSTANDARDMAINFORM.HideFuncTree和TSTANDARDMAINFORM.ShowFuncTree,为何?
2, TSTANDARDSTYLEMAINFORM.AddBars中的DockStub.AddClient('FuncNavBar', FFuncNavBar, nil),这个'FuncNavBar'是不是仅仅是名字而已?或者它和变量FuncNavBar有关?主窗体里面定义了FuncNavBar,但是从未使用.
3, TUserBizTree、TOperatorFuncNavBar、TCustomBizTree、TUserBizTreeView这四个是干什么用的?他们之间究竟是什么关系?我分析得到了一些,但是他们的关系很模糊。
4, TUserBizTreeView.Create中最后一行BaseTree := FUserBizTree似乎是多余的,为何要保留?TBaseNavBar.CreateTreeView中的lBaseTreeView.BaseTree := BaseTree会覆盖这个BaseTree。
5, 我按我的方案修改代码后,多出现了五个TOperatorFuncNavBar(我在数据库设定的),但是,它们都出现在屏幕中间,没有靠边(我是复制原来那个FFuncNavBar的做法的)。还有,我指定每个TOperatorFuncNavBar只读取一个表中指定的Group,为何别的有权限的Group也被读取出来了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 10:28:10 | 显示全部楼层
这是相关资源包,麻烦看看,谢谢.

那个博联系统是2611的,别的是2617的.
我也改了系统空间的公共组件库.

mainform_20070413102237.rar

1.91 MB, 下载次数: 96

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 10:49:24 | 显示全部楼层
继续顶
回复 支持 反对

使用道具 举报

发表于 2007-4-13 11:23:42 | 显示全部楼层
正在处理,有结果马上跟贴告知
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 11:33:58 | 显示全部楼层
好的,等着。

我这里也有所进展。
目前最主要的问题是:
我指定一个Bar只有三个Group,但是,所有的Group都出来了,似乎这个Bar的Groups由两部分组成,请告知第二部分在哪里?我想注释掉
回复 支持 反对

使用道具 举报

发表于 2007-4-13 14:28:46 | 显示全部楼层
正在看,有几个关系先说一下:
1. TOperatorFuncNavBar:就是OutlookBar那种风格的控件,可以分组
2. TOperatorFuncTreeView: 功能树,由TOperatorFuncNavBar内部创建。继承于TUserBizTreeView,TUserBizTreeView和TUserBizTree配对使用,TUserBizTree提供数据,TUserBizTreeView进行表现
3. TCustomBizTree是业务功能树定义的程序表示,TUserBizTree在构成树时候,会取读取TCustomBizTree的信息
回复 支持 反对

使用道具 举报

发表于 2007-4-13 14:51:26 | 显示全部楼层
function TOperatorFuncNavBar.CanAddGroup(ANode: TBaseNode): Boolean;
var
  lNode: TUserBizNode;
  lCustomBizTreeNode: TCustomBizTreeNode;
  I: Integer;
begin
  lNode := ANode as TUserBizNode;
  if (lNode.NodeKind = TBizObjectKind.boNone) and
    (lNode.ObjectKind = SCFolderObjectKind) then
  begin
    lCustomBizTreeNode := lNode.Data as TCustomBizTreeNode;
    // TODO: 还需要考虑对象隐藏的情况,但可能会造成效率问题
    Result := TFileStrings.HasItemInTarget(lCustomBizTreeNode.RefFullFileNames, FAllocatedFuncs) and
      not SysUtils.SameText(lCustomBizTreeNode.FullFileName, SDefaultRootFileName);
  end
  else
    Result := False;
end;


这里是决定是否显示组
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 19:32 , Processed in 0.047074 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表