特定のバンド、詳細、またはヘッダーのすべてのオブジェクトの配列を取得するにはどうすればよいですか?データウィンドウのオブジェクトを取得する
私は成功を収め、すべてのオブジェクトを使用して取得するには:
dw_1.Describe("datawindow.objects")
特定のバンド、詳細、またはヘッダーのすべてのオブジェクトの配列を取得するにはどうすればよいですか?データウィンドウのオブジェクトを取得する
私は成功を収め、すべてのオブジェクトを使用して取得するには:
dw_1.Describe("datawindow.objects")
あなたは、すべての可視オブジェクトを一覧表示し、あなたがそれをしたい場合は、各オブジェクトのために、あなたがチェックするobject_name.band
を頼むdatawindow.visualobjects
プロパティを取得する必要があります。解析特性簡略化する
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
メソッド。
を私はそのリストを取得する任意の直接的な方法を知りませんが、あなたは、オブジェクトの完全なリストを持っていたら、あなたがそれらの上に行くと確認することができますそれぞれのバンド:
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
Sebastien、AFAIK 'visualobjects'は何らかの理由で文書化されていないため、正式にはサポートされていません。 [一度それについて尋ねました](https://groups.google.com/d/topic/sybase.public.powerbuilder.datawindow/iZ3ZjtLQ6us/discussion)はSybaseのニュースグループにあり、使用しないことをお勧めしました。私はそれに問題があるとは思っていませんが、誰でもそれを使用している人は、少なくともその可能性を認識すべきだと思います。 – eran
@eran、ああ、文書化されていないのですか?それは、[DWデバッグマシン](http://geni.embeddingperl.com/index.php?post/2011/06/06/My-Datawindow-DebugMachine)を使用して偶然見つけたプロパティでなければなりません。 dw属性は 'datawindow.attributes'プロパティを介して呼び出されます。 PB Classic仮想マシンが段階的に廃止されているので、それを使用するのは害ではないと思います。 – Seki