起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 365|回复: 10

【结】关于OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL的问题

[复制链接]
发表于 2009-9-2 11:53:49 | 显示全部楼层 |阅读模式
排班查询单的formdoccreate事件中主要代码如下:(变量声明,我没贴出来)
procedure TPBCXD.FormDocCreate(Sender: TObject);
begin  
lPersonMembers:=Tlist.create;
  lOrgURLs:=TOrgURLs.Create;
  lURL := TBizURL.Create;
   try
    OrgSys.OrgSystem.GetPersonMembers(person, lPersonMembers);//以下几行代码实现,只要给出一个人员的ID,就可以获得他的岗位,部门,机构
    lPersonMember := TOrgUnit(lPersonMembers.Items[0]);
     position:=lPersonMember.Parent.ID;  //岗位
     dept:=lPersonMember.Parent.Parent.ID; //部门
     gongsi:=lPersonMember.Parent.Parent.Parent.ID; //机构
     lOrgDept:= OrgExpr.OrgKey(dept, '', '');
     OrgSys.OrgSystem.GetOrgURLsByOrgExpr(lOrgDept, lOrgURLs);
     lURL.URL :=lOrgURLs[0].BizURL.URL;
     OrgComboBox1.BizTreeView.StartWithNodes.Clear;
     lNode := OrgComboBox1.BizTreeView.BizTree.FindNodeByBizURL(lURL);
    OrgComboBox1.BizTreeView.StartWithNodes.AddObject(lNode.GUID, lNode);
    OrgComboBox1.BizTreeView.ShowOptions:=[TBizObjectKind.boOrgRoot, TBizObjectKind.boOrgan, TBizObjectKind.boDept];
    OrgComboBox1.SelectedOptions := [TBizObjectKind.boDept];
    OrgComboBox1.BizTreeView.ReloadTree;
     OrgComboBox1.FileName:=lOrgURLs[0].BizURL.URL;
     OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL:=lOrgURLs[0].BizURL.URL;
     finally
    lPersonMembers.Free;
    lOrgURLs.Free;
     lURL.Free;
    end;
     dialogs.showmessage(OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL);
   end;
这儿这个showmessage能正常显示。
而本formdoc的下面事件中:
procedure TPBCXD.FECalendar1DrawCellProperties(Sender: TObject; ADate: Double; AState: TFECalCellStates; var ALabel: string; CellProperties: TFECellProperties);
begin
    dialogs.showmessage(OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL);
end;就报错误,错误如下图所示:
这是怎么回事?我真正想用OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL这个值,是在下面的那个函数中。

qq1.png

8.35 KB, 下载次数: 175

回复

使用道具 举报

发表于 2009-9-2 12:09:52 | 显示全部楼层
一般不建议在 formdoccreate 事件上做动作,可以在onShow或者数据集的open事件上实现
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 13:41:15 | 显示全部楼层
在业务信息表单上,放置了各个控件,如果对控件,例如OrgComboBox1的初始化操作不在表单事件中完成,那么在功能窗体上,docview引用了这张表单之后,还怎么写事件? 就别说表单上的按钮click事件无法写,就拿OrgComboBox1说吧,在业务信息表单的formdoccreate 事件中,可以直接用OrgComboBox1.FileName,要是在业务窗体的onshow事件中,要用OrgComboBox1,都得写成ZBGLYWXX.TPBCXD(docview1.doc).OrgComboBox1.FileName ……,这该多麻烦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 13:43:22 | 显示全部楼层
还有,我上面的代码到底有没有问题?
回复 支持 反对

使用道具 举报

发表于 2009-9-2 14:02:03 | 显示全部楼层
可能不能放到FECalendar1DrawCellProperties事件中呢?
当FECalendar1DrawCellProperties执行的时候是不是OrgComboBox1在窗体上还没有创建呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 14:25:20 | 显示全部楼层
根据我设置断点执行,procedure TPBCXD.FormDocCreate(Sender: TObject); 先执行,之后执行
procedure TPBCXD.FECalendar1DrawCellProperties(Sender: TObject; ADate: Double; AState: TFECalCellStates; var ALabel: string; CellProperties: TFECellProperties);
这能不能说明当FECalendar1DrawCellProperties执行的时候,OrgComboBox1在窗体上已经创建了呢
回复 支持 反对

使用道具 举报

发表于 2009-9-2 15:01:58 | 显示全部楼层
procedure TKBBD1.FECalendar1DrawCellProperties(Sender: TObject; ADate: Double; AState: TFECalCellStates; var ALabel: string; CellProperties: TFECellProperties);
var  s :String;
begin
s :=OrgComboBox1.FileName;

end;

procedure TKBBD1.FormDocCreate(Sender: TObject);
var lUrl :TBizUrl;
     lNode:TBizNode;
     lOrgURLs:TOrgURLs;

begin
  lUrl:=TBizUrl.Create;
  lOrgURLs:=TOrgURLs.Create;
  try
  //lUrl.URL :='Org:\ROOT\JG1.OGN\BM1.dpt';
  OrgSys.OrgSystem.GetOrgURLsByOrgExpr(OrgExpr.OrgKey('bm1', '', ''), lOrgURLs);
  lUrl.URL :=lOrgURLs[0].BizURL.URL;
  OrgComboBox1.BizTreeView.StartWithNodes.Clear;
     lNode := OrgComboBox1.BizTreeView.BizTree.FindNodeByBizURL(lURL);
    OrgComboBox1.BizTreeView.StartWithNodes.AddObject(lNode.GUID, lNode);
    OrgComboBox1.BizTreeView.ShowOptions:=[TBizObjectKind.boOrgRoot, TBizObjectKind.boOrgan, TBizObjectKind.boDept];
    OrgComboBox1.SelectedOptions := [TBizObjectKind.boDept];
    OrgComboBox1.BizTreeView.ReloadTree;
      OrgComboBox1.FileName:=lOrgURLs[0].BizURL.URL;
     OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL:=lOrgURLs[0].BizURL.URL;
  finally
   lOrgURLs.Free;
   lUrl.Free;
  end;
end;

这个是我抄你的代码,我这里运行没有问题,你弄过去试试?
回复 支持 反对

使用道具 举报

发表于 2009-9-2 15:04:53 | 显示全部楼层
或者你把:
  finally
    lPersonMembers.Free;
    lOrgURLs.Free;
     lURL.Free;
    end;
这些对象放到FormDocDestroy事件中去释放
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 17:26:11 | 显示全部楼层
7楼的那段代码, s :=OrgComboBox1.FileName;
如果showdialog,s有值吗?我这儿,show了一下,没有值。
我的需求是:在procedure TKBBD1.FECalendar1DrawCellProperties函数中得到OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL的值。
回复 支持 反对

使用道具 举报

发表于 2009-9-2 17:27:38 | 显示全部楼层
有值啊,
OrgComboBox1.BizTreeView.SelectedNode.BizURL.URL
也是有值的。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-16 20:30 , Processed in 0.045176 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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