起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 250|回复: 9

【搞定】请教有关Datachange的需求**

[复制链接]
发表于 2007-7-25 23:02:56 | 显示全部楼层 |阅读模式
如下图,根据不同的“面料来源”选择项,而确定是否显示某列,比如“采购厂商”列等。这样的事件要写在哪里比较好?
如果是主从关系,比如DSFather、DsSon,尝试写在DataSetBroker_DsSon的OnDataChange里头,浏览不同的DSFather记录,都会引发子档的OnDataChange事件,这样会影响到速度。

DataChange.jpg

13.68 KB, 下载次数: 183

回复

使用道具 举报

发表于 2007-7-26 09:36:50 | 显示全部楼层
可以在字段的OnSetText事件里写

procedure TPriceSysINFO.onSetItemCodeText(Field: TDataField; S: string);
begin
  Field.Value := S;
  .....
end;

procedure TPriceSysINFO.sdsPromotionSPP1AfterOpen(DataSet: TDataSet);
begin
  DataSet.FieldByName('ITEMCODE').OnSetText := onSetItemCodeText;  //数据集的afteropen事件里
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-26 10:34:00 | 显示全部楼层
你说的好像不能实现我的需求。在业务信息里头写事件,可以让表单文档里头的DataGrid的某列显示或者隐藏么?
回复 支持 反对

使用道具 举报

发表于 2007-7-26 10:37:17 | 显示全部楼层
也可以在表单文档里写。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-26 11:23:53 | 显示全部楼层
表单里头根本就没有OnSetText事件……
回复 支持 反对

使用道具 举报

发表于 2007-7-26 11:31:15 | 显示全部楼层
按2楼代码写,在表单文档放个数据集代理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-26 13:03:51 | 显示全部楼层
如下图,数据集代理里头也没有这个OnSetText事件,在业务信息里头只有OnSetFieldText,也没有OnSetText

onsetText.jpg

50.55 KB, 下载次数: 171

回复 支持 反对

使用道具 举报

发表于 2007-7-26 13:46:55 | 显示全部楼层
看2楼,onSetItemCodeText是个自定义事件,直接按2楼那样声明就可以,然后在数据集的AfterOpen中给字段的OnSetText事件属性赋值
DataSetBroker1.DataSet.FieldByName('ITEMCODE').OnSetText := onSetItemCodeText;
这样当你的ITEMCODE这个字段的值改变时就会触发onSetItemCodeText过程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-30 21:08:30 | 显示全部楼层
谢谢lisb,前几天一直没有时间来这里逛,没有及时的反馈。
用你的方法可以实现我的需要。
有关字段数据改变引发的事件还有底下这个连接
http://bbs.justep.com/forum.php?mod=viewthread&tid=1946&
回复 支持 反对

使用道具 举报

发表于 2007-7-31 09:17:11 | 显示全部楼层
ok,结贴了。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 03:04 , Processed in 0.040543 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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