起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 616|回复: 13

【搞定】关于业务功能退出提示保存数据的窗口的问题?**

[复制链接]
发表于 2007-4-29 16:15:06 | 显示全部楼层 |阅读模式
我根据 用户手册上介绍的 在业务功能的主窗体的 OnCloseQuery事件中写代码自己判断是否需要保存,但数据集修改后 退出时没有提示。
代码如下,我调试发现 lFunc.UpdatesPending是 Fallse .不知是何原因?

我的主窗体上只放了一个 Doc. .所有的操作都在 Doc对应的文档中写好了的。

var
  bUrl:TBizUrl;
  lFunc:TFunc;
  lCCurrent:TContextCurrent;
begin
lCCurrent:=TContextCurrent.Create(self.Context);
  try
    bUrl:=TBizUrl.Create;
    bUrl.URL :='Biz:\ECIS\FUNC_SYSHELP_EDT.FUNC';
    lFunc:=lCCurrent.GetFunc(bUrl);
    if lFunc.UpdatesPending then
    begin
      if JSDialogs.QuestionBox(lFunc.DisplayName +' 的数据已经修改,是否保存?','系统提示',1)=Windows.IDYES then
         lFunc.ApplyUpdates
      else
        Canclose:=false;
    end;
  finally
    lCCurrent.Free ;
  end;
end;
回复

使用道具 举报

发表于 2007-4-29 17:20:39 | 显示全部楼层
让你判断的是是数据集的状态。DataSet.UpdatesPending
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-29 17:46:07 | 显示全部楼层
是书上写错了吗?

那么 lFunc.UpdatesPending 是啥意思?

还有我窗口中只有一个Doc.要判断数据集得转到信息中去判断. 是否真的是这样吗? 我表示怀疑?
回复 支持 反对

使用道具 举报

发表于 2007-4-29 18:16:31 | 显示全部楼层
我窗口中只有一个Doc.要判断数据集得转到信息中去判断.
拖一个数据集代理(DataSetBroker1),连接到Doc对应的文档的数据集上
这样就可以了写 DataSetBroker1.DataSet.UpdatesPending

var
  lFunc:TFunc;
begin
  lFunc := FuncBroker.Func;
  if DataSetBroker1.dataset.UpdatesPending then
  begin
    if JSDialogs.QuestionBox(lFunc.DisplayName +' 的数据已经修改,是否保存?','系统提示',1)=Borland.Delphi.Windows.IDYES then
       lFunc.ApplyUpdates
    else
      Canclose:=false;
  end;
end;


经过写的有出入
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-30 10:20:18 | 显示全部楼层
那么是手册上写错了哦。对吗?
那我问一下:lFunc.UpdatesPending 是啥意思?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-30 10:21:21 | 显示全部楼层
问下。你是起步公司的吗? 那么你的回答代表最总的答案了。是吧。
回复 支持 反对

使用道具 举报

发表于 2007-4-30 10:30:28 | 显示全部楼层
啥意思?
你做了吗?
结果怎样?
是否实现你的需求呢?
还是怀疑我的能力?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-30 11:34:33 | 显示全部楼层
Sorry,不是怀疑你的能力。
我是觉得那个手册上写的说  lFunc.UpdatesPending能够做那个功能? 但实际上不行。

如果按你的写法。如果我的业务功能用到10个数据集就要拖10个数据集代理(DataSetBroker1),连接到Doc对应的文档的数据集上。再一个一个判断。
如果用一个那个 lFunc.UpdatesPending 就能够搞定那多好。
回复 支持 反对

使用道具 举报

发表于 2007-4-30 11:49:10 | 显示全部楼层
lCCurrent:=TContextCurrent.Create(self.Context);
  try
    bUrl:=TBizUrl.Create;
    bUrl.URL :='Biz:\ECIS\FUNC_SYSHELP_EDT.FUNC';
    lFunc:=lCCurrent.GetFunc(bUrl);

1楼这样的写法有误,你用FuncBroker来获得当前功能看看呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-30 13:34:39 | 显示全部楼层
我直拖一个控件FuncBroker 到界面上  还是不行,要报错误:
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-19 17:46 , Processed in 0.039672 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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