起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 474|回复: 15

【结帖】[重要]不知如何是好

[复制链接]
发表于 2007-9-20 10:26:02 | 显示全部楼层 |阅读模式
想在功能窗体里,在点击 DataNavigator 保存之前,触发数据源中某个字段的OnExit事件

补充说明:
数据集中有 字段:总价 = 单价 × 数量

在修改 单价或数量时,如何自动生成总价
总价在界面上不显示
回复

使用道具 举报

发表于 2007-9-20 10:37:46 | 显示全部楼层
楼主,首先把这个计算最好放到信息层中处理,可以在数据集的字段编辑器上增加数据字段
然后在字段上的onexit事件中作处理!
回复 支持 反对

使用道具 举报

发表于 2007-9-20 10:39:31 | 显示全部楼层
可以在DataNavigator的BeforeAction事件中截获到用户操作的那个按钮,代码示例如下:

  case TBizDataSetAction(Sender).ID of
      BizActnConsts.ActionDataSetFirst: ShowMessage('ActionDataSetFirst'); { 最前 }
      BizActnConsts.ActionDataSetPrior: ShowMessage('ActionDataSetPrior'); { 向前 }
      BizActnConsts.ActionDataSetNext: ShowMessage('ActionDataSetNext'); { 向后 }
      BizActnConsts.ActionDataSetLast: ShowMessage('ActionDataSetLast'); { 最后 }
      BizActnConsts.ActionDataFetch: ShowMessage('ActionDataFetch'); { 取下一页 }
      BizActnConsts.ActionDataFetchAll: ShowMessage('ActionDataFetchAll'); { 全部取 }
      BizActnConsts.ActionDataSetRefresh: ShowMessage('ActionDataSetRefresh'); { 刷新 }
      BizActnConsts.ActionDataSetFilter: ShowMessage('ActionDataSetFilter'); { 过滤 }
      BizActnConsts.ActionDataSetInsert: ShowMessage('ActionDataSetInsert'); { 插入 }
      BizActnConsts.ActionDataSetCopyInsert: ShowMessage('ActionDataSetCopyInsert'); { 插入复制 }
      BizActnConsts.ActionDataSetAppend: ShowMessage('ActionDataSetAppend'); { 新增 }
      BizActnConsts.ActionDataSetCopyAppend: ShowMessage('ActionDataSetCopyAppend'); { 新增复制 }
      BizActnConsts.ActionDataSetCancel: ShowMessage('ActionDataSetCancel'); { 取消 }
      BizActnConsts.ActionDataSetDelete: ShowMessage('ActionDataSetDelete'); { 删除 }
      BizActnConsts.ActionDataSetSave: ShowMessage('ActionDataSetSave'); { 保存 }
    ......
  end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 10:40:01 | 显示全部楼层
我现在说的就是这个想法
不过遇到了个问题!就是在功能窗体里,修改数量或单价时,鼠标直接点击保存!
这个时候是不会触发 OnExit
所以 相同如何能更好的解决!

TO 3楼:
这个我知道
不过好像不是我说的意思!
回复 支持 反对

使用道具 举报

发表于 2007-9-20 10:40:17 | 显示全部楼层
当然了,你要在功能里做也可以,可以用一个数据集代理控件访问该数据集,然后在这个控件的beforepost事件中处理,也可以通过在DataNavigator 的beforeaction事件中作处理(3楼说的就是那些动作),这里的解决方法就是把你得OnExit的处理逻辑放到这里来做
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 10:42:10 | 显示全部楼层

有点意思了!我实验一下!
拿到 功能层看看 在 DataNavigator 的beforeaction事件中作处理一下
回复 支持 反对

使用道具 举报

发表于 2007-9-20 10:43:45 | 显示全部楼层
4楼,你说的应该是没处理好,应该让焦点离开你编辑的单价或者数量之类的,否则不会触发字段的OnExit事件的,具体你跟踪看看!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 10:52:38 | 显示全部楼层
在 DataNavigator 的beforeaction事件中作处理的想法 我想能通过
不过,我不太知道如何通过视图来获得 用户输入的 数值!
例如:vNum := DocView1.Info.FindField('FIELD_KCXX_DJ','DJ').AsInteger;  
不知道如何才能获得 用户输入项
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 10:55:47 | 显示全部楼层
TO 7楼:
是的, 我在 DataNavigator 的beforeaction事件中
切换了一下 焦点,触发了!
我想问题解决了!
谢谢大家
回复 支持 反对

使用道具 举报

发表于 2007-9-20 11:04:12 | 显示全部楼层
8楼,你用数据集代理控件阿!
datasetbroker.dataset.FieldByName('字段').AsInteger!
其实,对于数据集的操作,最好是在信息层里做。在功能里也可以做,不过需要一些代理控件或者数据库相关的控件

楼主,你需要好好看看用户手册!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 05:02 , Processed in 0.038979 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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