Получить объекты группы DataWindow - PullRequest
2 голосов
/ 21 июля 2011

Как я могу получить массив всех объектов в определенной полосе, детали или заголовке, например?

Мне удалось получить все объекты, используя:

dw_1.Describe("datawindow.objects")

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Вам необходимо получить свойство 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

Этот код получен из наследуемого объекта окна данных, следовательно, он получает прямой доступ к describeспособ.

0 голосов
/ 21 июля 2011

Я не знаю ни одного прямого способа получить этот список, но как только у вас будет полный список объектов, вы можете просмотреть их и проверить каждый из них:

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
...