GetChild( )

GetChild( )

功能:得到指定子数据窗口的引用并将其保存到变量中 然后应用程序就可以使用该变量来操作子数据窗口对象

语法:dwcontrol.GetChild ( name, dwchildvariable )
参数:dwcontrol 数据窗口控件名
   name string 类型 列名 该列包含了欲得到引用的子数据窗口对象
   dwchildvariable DataWindowChild 类型 用于存储该函数得到的子数据窗口对象的引用
   返回值:Integer 函数执行成功时返回 1, 出错时返回-1 , 子数据窗口对象引用保存在变量dwchildvariable 中 如果任何参数的值为NULL , 则GetChild()函数返回NULL
用法:这里所说的子数据窗口包括两方面的意义 一是数据窗口对象中的下拉数据窗 口 DropDownDataWindow 是复合风格数据窗口对象中的子报表 , 需要注意的是在创建复合风格的数据窗口对象时,它使用的子报表实际上也是个数据窗口对象 必须要设置其Name 属性,否则就不能使用GetChild()函数来得到该子报表的引用。当应用程序需要以显式方式提取子数据窗口对象的数据时 先使用 GetChild()函数得到该子数据窗口对象的引用 然后像操作普通数据窗口控件那样检索子数据窗口对象的数据。一般来说 在显示主数据窗口时 PowerBuilder 会自动提取出子数据窗口对象的数据,但是 当子数据窗口对象使用了提取参数或检索条件发生变化且需要检索新的数据时 应用程序就需要自己编写代码来实现数据提取工作了 。
  当用户在主数据窗口中插入一行或提取主数据窗口的数据时 PowerBuilder 也自动地提取出子数据窗口的数据 但是 如果子数据窗口带有提取参数 那么PowerBuilder 将显示一个对话框 让用户输入提取参数的值 要想不让PowerBuilder 显示该对话框 应用程序中可以在修改主数据窗口之前先显式地提取出子数据窗口的数据。需要注意的是,如果嵌套报表的数据源为外部数据源,那么应用程序不能使用 GetChild()函数得到子报表的引用。使用数据窗口控件的对象函数 Modify()修改数据窗口的某些属性后,先前执行 GetChild()函数得到的子数据窗口对象引用可能不再有效。此时 需要重新调用 GetChild() 函数来得到有效的子数据窗口对象引用
示例:本例中 主数据窗口的 emp_state 列是个子数据窗口对象,该子数据窗口对象需要一个 地区 值作为提取参数,为了不让PowerBuilder 显示输入提取参数的对话框代码中首先检索了子数据窗口的数据 ,之后再提取主数据窗口的数据
  DataWindowChild state_child //说明一个DataWindowChild 类型的变量
  integer rtncode
  rtncode = dw_1.GetChild(“emp_state”, state_child)
  // 得到名称为 emp_state 的子数据窗口对象的引用
  IF rtncode = -1 THEN MessageBox( “错误”, “不是子数据窗口”)
  // 如果未与数据库建立连接时首先建立连接
  CONNECT USING SQLCA;
  // 设置子数据窗口使用的事务对象
  state_child.SetTransObject(SQLCA)
  // 使用地区值 北京 检索子数据窗口对象的数据
  state_child.Retrieve(“East”)
  // 设置主数据窗口使用的事务对象并提取数据
  dw_1.SetTransObject(SQLCA)
  dw_1.Retrieve()

PowerBuilder Getchild函数主要被用来得到一个数据窗口的子数据窗口
该函数在两种情况下可以使用,1、取出数据窗口对象的下拉式数据窗口;
2、取出复合风格(composite)数据窗口对象里所嵌入的子数据窗口对象。
语法:integer dwcontrol.GetChild (string name, REF DataWindowChild
dwchildvariable )
例子1 这段程序取出一个composite数据窗口对象的两个子数据窗口,并对他们进行过滤,和排序的操作。
/dw_dy是连接一个composite数据窗口对象的一个数据窗口控件。dw_1、dw_2分别是嵌套的数据窗口的NAME/
String ls_filter
DataWindowChild dwc_czrw,dwc_czx//定义子数据窗口变量
dw_dy.Settranso b j e c t(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)等方式操作子数据窗口中的数据。
访问复合数据窗口对象.方法 :dw_dy.o b j e c t.dw_1.o b j e c t.对象
例子2 下拉数据窗口动态过滤
在数据窗口dw_1的ItemFocusChanged事件中写入如下脚本:
Integer rtncode
String ls_nowFld,ls_deptid,ls_sql
DataWindowChild fld_child
rtncode = dw_1.GetChild(“Unit_id”,fld_child) //获得Unit_id字段名下拉数据窗口的句柄
If rtncode = -1 Then MessageBox(“错误!”, “不是下拉数据窗口!”)
fld_child.SetTransObject(SQLCA) //设置事务对象
ls_sql = Lower(fld_child.GetSQLSelect())// 获得DDDW的SQL语句

// 去除Sql 语句中的Where条件子句, 如原Sql 语句中须有Where条件子句,此处则需进行较
//复杂的处理,应视具体情况而定。
if Pos(ls_sql, " where “)>0 then ls_sql = Left(ls_sql,Pos(ls_sql, " where “))
//重新设置Sql 语句中的Where条件子句
ls_deptid=dw_1.Object.dept_id[GetRow()] //取得当前dept_id选定值
ls_sql = ls_sql + " Where dept_id = '” +Trim(ls_deptid)+”’"

//重新设置Sql 语句
fld_child.SetSQLSelect(ls_sql)
fld_child.Retrieve()//取得满足条件的数据
转载于:https://www.cnblogs.com/anxi/archive/2011/09/08/2170849.html

### 回答1: transform.GetChild是Unity中的一个方法,用于获取一个物体的子物体。它可以通过索引或子物体的名称来获取子物体。例如,transform.GetChild(0)将返回该物体的第一个子物体,transform.GetChild("Cube")将返回该物体名为“Cube”的子物体。 ### 回答2: transform.GetChild是Unity中Transform组件提供的方法之一。Transform组件是Unity中最基础的组件之一,用于控制物体在3D空间中的位移、旋转和缩放。GetChild方法则是Transform组件中用于获取当前对象子物体的方法。 具体来讲,GetChild方法可以用来获取当前Transform组件下的某一个特定子对象,也可以获取所有的子对象。当我们需要对子对象进行操作时,可以使用GetChild方法来获取子对象,进而对其进行位移、旋转、缩放等操作。 使用GetChild方法时,我们需要给它传入一个int类型的参数,用于指定我们要获取的子对象的索引值。索引值从0开始递增,表示子对象在Transform组件子对象列表中的位置。例如,我们可以通过transform.GetChild(0)来获取当前Transform组件下的第一个子对象。 需要注意的是,GetChild方法只能获取当前对象下的直接子对象,而不能获取间接子对象。如果需要获取间接子对象,需要先获取直接子对象,再通过该子对象的GetChild方法来获取其下的子对象。 总之,在Unity中,transform.GetChild方法是非常常用的方法之一,可以用来获取并操作Transform组件下的子对象,具有很高的灵活性和扩展性。 ### 回答3: transform.GetChild()是Unity中的一个方法,用于获取一个GameObject对象的指定子物体。该方法需要传入一个整数参数,表示要获取的子物体的下标值。例如,transform.GetChild(0)表示获取该对象的第一个子物体,transform.GetChild(1)表示获取该对象的第二个子物体,以此类推。 使用该方法可以方便地访问到指定子物体的Transform组件,并进一步对子物体进行操作。例如,可以使用transform.GetChild(0).gameObject.SetActive(false)来禁用该对象的第一个子物体,并使用transform.GetChild(1).GetComponent<MeshRenderer>()来获取该对象的第二个子物体的MeshRenderer组件,以对其进行渲染设置。 需要注意的是,使用该方法获取的子物体是按照它们在Hierarchy面板中的顺序来排序的。如果希望按照自己的需求来排序子物体,可以通过修改子物体的Transform组件的父子关系来实现。例如,可以使用transform.GetChild(0).SetAsLastSibling()将该对象的第一个子物体移动到最后一个位置。 总之,transform.GetChild()方法是一个非常实用的Unity方法,可以帮助我们更方便地访问和操作指定的子物体,提高开发效率和编程便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值