获取DataWindow band的对象

时间:2011-07-21 08:02:42

标签: powerbuilder datawindow

如何获取特定波段,详细信息或标题中的所有对象的数组?

我成功地使用了所有对象:

dw_1.Describe("datawindow.objects")

2 个答案:

答案 0 :(得分:1)

您需要获取列出所有可见对象的datawindow.visualobjects属性,并且要求object_name.band检查是否需要它。

重用PbniRegex(在下面的代码中提供uo_regex对象)以简化属性解析的示例:

public function long of_get_band_controls (string as_band_name, ref string as_controls[]);
string ls_empty[]
int i, j
as_controls[] = ls_empty[]

uo_regex lnv_regex
lnv_regex = create uo_regex
lnv_regex.initialize( "([^\t]+)", true, false)
i = lnv_regex.search( describe("Datawindow.visualobjects") )
for j = 1 to i
    if describe( lnv_regex.match( j ) + ".band" ) = as_band_name  then
        as_controls[ upperbound(as_controls[])+1 ] = lnv_regex.match( j )
    end if
next
destroy lnv_regex

return upperbound( as_controls[] )
end function

该代码来自数据窗口的herited对象,因此它可以直接访问describe方法。

答案 1 :(得分:0)

我不知道获得该列表的任何直接方法,但是一旦你拥有完整的对象列表,你就可以检查它们并检查每个人的乐队:

ls_Obj = GetNextObjectFromList(ls_AllObjectsList)
ls_Band = dw_1.Describe(ls_Obj + ".band")
choose case ls_Band
  case "detail"
    // handle detail band objects
  case "header"
    // handle header band objects
  // etc.
end choose