起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 174|回复: 8

请问改变下拉控件选择值时会发生什么事件?如何能获得其值呢?**

[复制链接]
发表于 2008-3-7 14:38:08 | 显示全部楼层 |阅读模式
如图,当调入部门选择为信息通信处/秘书科时。我如何能得到这个数值并给我设定好的业务参数InDeptParam(调入部门)赋值呢?
就如C++中 InDeptParam=Combobox1.Text  赋值一样。
问题是调入部门的是从查找属性中设为树型下拉, 好象并没有什么 ***.Text属性?

ques.jpg

37.29 KB, 下载次数: 122

回复

使用道具 举报

 楼主| 发表于 2008-3-7 14:41:40 | 显示全部楼层

表单的图

主要是因为下拉是一个表现形式,而不是一个真正常用的Combox控件,弄的我根本就不会写代码了

assetapply.jpg

35.45 KB, 下载次数: 120

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 14:48:35 | 显示全部楼层

请问改变下拉控件选择值时会发生什么事件?如何能获得其值呢?

难道是把赋值的代码 InDepParm:= 调出部门.value 类似的东西. 写在表的某个事件中 如 Click?如图

dep.jpg

54.6 KB, 下载次数: 117

回复 支持 反对

使用道具 举报

发表于 2008-3-7 15:18:10 | 显示全部楼层
你下来的是字段值吧,如果是
请问改变下拉控件选择值时会发生什么事件
参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=1946

如何能获得其值呢
直接访问字段就可以了
dsDataSet.DataSet.FieldbyName('XXX').asString
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 16:22:16 | 显示全部楼层

试了,是可以的

我写在资产调拨数据集的DataSetdsDataFieldChange上,试了,是可以的。谢了,
还有一个问题,在审批完成后,我要把资产的新的属于者和新的部门数据写到资产表中,是不是该在流程结束时写操作数据库的信息?

procedure TAssetTransferProc.ProcBeforeFlowFinish(Sender: TObject; Command: TFlowFinishCommand);
begin
*****
  1.打开资产数据集
  2.找出该当前审批单中的资产编号相应的记录,
  3.修改原资产属于者,为审批表中新的属有者
  4.关闭
end;

是这样的么? 还是2,3步就不需要,因为系统知道,当前的记录,就不要查找?
不过写数据的代码,我仍是不会,真是太不好意思了,
回复 支持 反对

使用道具 举报

发表于 2008-3-7 17:52:52 | 显示全部楼层
还有一个问题,在审批完成后,我要把资产的新的属于者和新的部门数据写到资产表中,是不是该在流程结束时写操作数据库的信息?
对,在流程结束的时候去操作,即在流程定义的最后一个功能环节中处理
在窗体上加一个流程代理控件(Flowbroker),然后在这个控件的AfterFlowFinish 上去处理。
至于访问数据,还在功能窗体上,放一个数据集代理(DataSetBroker 连接到你要修改的数据集上,资产表对应的数据集,或者直接Query来做)
然后直接访问数据集中的字段就可以了(4楼的代码),如果用Query,就和Delphi中写法一样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-8 23:07:32 | 显示全部楼层

没有成功:(

在窗体上加一个流程代理控件(Flowbroker),然后在这个控件的AfterFlowFinish 上去处理。
我是这样写的:
procedure TConfirmBaseMAINFORM.FlowBroker1AfterFlowFinish(Sender: TObject; Command: TFlowFinishCommand);
  var depId,personId:String;

begin
//ҪеIJ¿ÃźÍÊôÓÐÕßҪдÈë×ʲúÊý¾Ý¿â
//µ÷²¦±í:AM_Dest_DEPART,AM_Dest_PERSON, ×ʲú±í,OwnerDepId,OwnerID
     depId:=dsbAssetTransfer.DataSet.FieldByName('AM_Dest_DEPART').AsString;
     personId:=dsbAssetTransfer.DataSet.FieldByName('AM_Dest_PERSON').AsString;

// дÈëÐÂÊý¾Ý
     dsbAssets.DataSet.FieldByName('OwnerDepId').AsString:=depId;
     dsbAssets.DataSet.FieldByName('OwnerID').AsString:=personId;

end;
但是没有成功,数据库中没有变。
我是在审批基类的窗体写的代码,是不是问题出在这儿?我有两个两个审批,处长审批和付处审批功能,继承基类,不想写两份代码,便写在基类中,但是好象不行

quest.jpg

50.95 KB, 下载次数: 110

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-8 23:12:26 | 显示全部楼层

要不写在流程图的afterFlowFinish?

要不写在流程图的afterFlowFinish?
不过流程图好象不能如窗体放DataSetBroker,就不能如上面很方便地改数据集?
要直接连接数据库来update, 代码不熟,
回复 支持 反对

使用道具 举报

发表于 2008-3-10 08:28:42 | 显示全部楼层
楼主,7楼的代码是放到了结束环节前面的那个功能环节上吗?
如果是,那你走完整个流程实例了吗?即已经走到结束环节。

如果已经走完结束环节了,那你设置断点跟踪一下,7楼的代码是否执行到。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 07:04 , Processed in 0.044674 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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