关于datawindow控件,GetChild()函数的一点经验

        我在软件开发过程中,用Getchild函数曾经出现过一些问题,我想有必要拿出来讨论一下,也请大家引以为戒。  在datawindow中,Getchild函数主要被用来得到一个数据窗口的子数据窗口,格式如下:数据窗口控件名.(列名,用户定义的子数据窗口变量)

如:a)、dw_cx.GetChild(“xt_czy”,dwc_cx)

  b)、dw_tj.GetChild(“dw_1”,dwc_tj)

      该函数在两种情况下可以使用,1、取出数据窗口对象的下拉式数据窗口;2、取出复合风格(composite)数据窗口对象里所嵌入的子数据窗口对象。

       需要注意的是第二种情况,一定要composite风格的数据窗口对象中的子数据窗口才能使用该函数,如果是别的风格的,该函数会返回-1,表示执行失败 。(我曾经用freedom嵌套了一个子数据窗口,然后用GetChild(),结果执行失败。);另外还需要注意的是;如果是composite数据窗口,GetChild()函数的第一个参数是子数据窗口的NAME(需要自己起),而不是子数据窗口对象的名字。如果子数据窗口是下拉式的数据窗口,那么参数就是列名。第二个参数是用户自定义的子数据窗口变量。执行完GetChild()以后,这个变量就是得到的子数据窗口了,可以对他进行过滤,排序等等的操作。

例如,这段程序取出一个composite数据窗口对象的两个子数据窗口,并对他们进行过滤,和排序的操作。/*dw_dy是连接一个composite数据窗口对象的一个数据窗口控件。dw_1、dw_2分别是嵌套的数据窗口的NAME*/

String ls_filter

DataWindowChild dwc_czrw,dwc_czx//定义子数据窗口变量

dw_dy.Settransobject(sqlca)

dw_dy.Retrieve()

dw_dy.GetChild("dw_2",dwc_czrw)

dw_dy.Getchild("dw_1",dwc_czx)

ls_filter = "czrw_bh = '"+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"//过滤条件

dwc_czrw.SetFilter(ls_filter)

dwc_czrw.Filter()

ls_filter = "czx_rwbh = '"+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"

dwc_czx.SetSort("czx_sx A")

dwc_czx.Sort()

dwc_czx.SetFilter(ls_filter)

dwc_czx.filter()

当然也可以通过数据共享(ShareData)等方式操作子数据窗口中的数据。

 

    Email:[email protected]

你可能感兴趣的:(数据库开发)