起步软件技术论坛-X3

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

【结贴】TBizBrowseDialog的InitialDir设置**

[复制链接]
发表于 2008-12-18 10:24:29 | 显示全部楼层 |阅读模式
展示控件为DataTreeList
数据集的FID字段用了OnButtonClick事件做如下操作。FID字段存储组织机构的FID。
第一次触发的时候好用,点确定(点取消没后没出现后面的错误)后。第二次触发该事件时报错(如图错误1)。
并且关闭该窗体后,出现图中错误2的现象。
不知道描述清楚了没。
何故,有解决方法没。

procedure THSDX.FIELD_HSDX_FIDButtonClick(Sender: TObject);
var
  lBizurl:TBizUrl;
  lOrgUnit:Org.TOrgUnit;
begin
  bbdOrgDpt.ShowOptions := [TBizObjectKind.boOrgRoot,TBizObjectKind.boOrgan,
                                  TBizObjectKind.boOrgServer,TBizObjectKind.boDept];
  bbdOrgDpt.Title := '选择核算对象';
  bbdOrgDpt.PromptText := '选择一个单位';
  bbdOrgDpt.MustSelectedNode :=[TBizObjectKind.boOrgan,TBizObjectKind.boDept];

  if DataSetHSDX.FieldByName('FID').AsString<>'' then
  begin
    try
      lOrgUnit := Org.OrgSys.OrgSystem.FindUnit(DataSetHSDX.FieldByName('FID').AsString,'','');
      bbdOrgDpt.InitialDir:=lOrgUnit.BizURL.FileName;
    except
      bbdOrgDpt.InitialDir:='';
    end;
    lOrgUnit.Free;
  end
  else
    bbdOrgDpt.InitialDir:='';
  if bbdOrgDpt.Execute then
  begin
    lBizUrl:=TBizUrl.Create;
    lBizUrl.FileName:=bbdOrgDpt.FileName;
    DataSetHSDX.Edit;
    DataSetHSDX.FieldByName('FID').AsString:=lBizUrl.ID;
    lBizUrl.Free;
  end;
end;

2008-12-18 10-19-33.jpg

119.85 KB, 下载次数: 85

回复

使用道具 举报

发表于 2008-12-18 10:54:45 | 显示全部楼层
请楼主稍等。
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:00:07 | 显示全部楼层
楼主,经过检查,报错应该是在第二次调用这个代码时
bbdOrgDpt.InitialDir := lOrgUnit.BizURL.FileName; 这句报错
是他lOrgUnit.BizURL.FileName有问题。
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:03:10 | 显示全部楼层
好像跟lOrgUnit.free有关。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-18 11:06:45 | 显示全部楼层
lOrgUnit.free删掉或注释掉就没问题了。 这样会不会造成系统资源浪费或者内存泄露什么的
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:23:01 | 显示全部楼层
其实应该是加一个lOrgUnit.create就比较好了。你试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-18 11:26:31 | 显示全部楼层
...加到哪里呢?
加到
try
      lOrgUnit := OrgSys.OrgSystem.FindUnit(DataSetHSDX.FieldByName('FID').AsString,'','')
之前还是报错
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:31:06 | 显示全部楼层
刚才试了一下。应该lOrgUnit 不用创建和释放。
通过FindUnit方式,平台自己管理这个对象。
回复 支持 反对

使用道具 举报

发表于 2008-12-18 11:33:48 | 显示全部楼层
另外
  begin
    lBizUrl:=TBizUrl.Create;
    lBizUrl.FileName:=bbdOrgDpt.FileName;
    DataSetHSDX.Edit;
    DataSetHSDX.FieldByName('FID').AsString:=lBizUrl.ID;
    lBizUrl.Free;
  end;
这个代码也修改一下

  begin
    lBizUrl:=TBizUrl.Create;
    try
       lBizUrl.FileName:=bbdOrgDpt.FileName;
      DataSetHSDX.Edit;
      DataSetHSDX.FieldByName('FID').AsString:=lBizUrl.ID;
finally
    lBizUrl.Free;
end;
  end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-18 11:40:27 | 显示全部楼层
好的 谢谢 zfang 谢谢 atiger
结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 05:45 , Processed in 0.043639 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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