プロパティ
OOo Basic ではプロパティに "." (ドットオペレータ) を利用して簡単にアクセスできます。そのため見逃しがちですがプロパティにメソッドでアクセスすることもできます。 このページの内容を利用するには MRI を併用することを強くお勧めします。特定の情報が表示されるのであればその他のオブジェクトインスペクタでもかまいません。 概要
OOo Basic ではプロパティ値に "." でアクセスすることが多いですが、com.sun.star.beans.XPropertySet インターフェースなども利用できます。 詳細を知りたい場合には以下リンク参照。 これらのリンクをよく調べれば MRI やBasic IDE 入力補助での情報表示などで利用している方法が分かります。 注: 下記のインターフェースはオブジェクトがサポートしていないと利用できません。 XPropertySet
ひとつだけのプロパティ値を取り扱う com.sun.star.beans.XPropertySet インターフェース。 プロパティ値の設定 setPropertyValue、取得 getPropertyValue がプロパティ名指定で行えます。(OOo Basic でも文字列としてプロパティ名を与えたいときに便利。) また、プロパティが変更されたときのリスナーが利用できます。このとき、プロパティが Bound でなければいけません。特定のプロパティが Bound かどうかは MRI で表示を調べる、または XPropertySetInfo インターフェースなどを利用します。 変更の拒否が可能な VetoableListener も同様です。 com.sun.star.beans.XPropertySetInfo インターフェースは getPropertySetInfo メソッドで取得します。 XPropertySetInfo
プロパティの情報を提供してくれる com.sun.star.beans.XPropertySetInfo インターフェース。(getPropertySetInfo メソッドでこのインターフェースを取得しようとしても Null が戻ってきたりすることがあるので注意。) getPropertyByName メソッドなどの返り値は com.sun.star.beans.Property struct です。
ハンドル値は XFastPropertySet インターフェースで利用されます。また、プロパティ値の型は Type から、プロパティが Bound かどうかなどは Attribute 要素から取得できます。 XPropertyState
プロパティの状態を提供してくれる com.sun.star.beans.XPropertyState インターフェース。このインターフェースを利用すればあるプロパティがデフォルトの値を持っているかどうかなどが確認できます。 XMultiPropertySet
複数のプロパティ値にアクセスするときに利用できる com.sun.star.beans.XMultiPropertySet インターフェース。(役に立つインターフェースですがサポートされていないことがあるのでオブジェクトごとに要確認。複数のプロパティ値を設定、取得する際に API コールが一度で済むので少しだけ実効速度が速くなるかもしれません。) getPropertyValues メソッドでの取得時には与えたプロパティ名と同じ順でプロパティ値が []any で戻ります。設定時にはプロパティ名と値の順番を合わせておきます。 「プロパティ名はアルファベット順に揃えておけ」と書かれてありますが、…。 XMultiPropertyStates
XPropertyState インターフェースと同じように利用します。 XFastPropertySet
ハンドル値を利用してプロパティに「速く」アクセスする (らしい) com.sun.star.beans.XFastPropertySet インターフェース。 プロパティが内部で配列で管理されていることを利用して、その配列のインデックスで値を取得する。配列のインデックスがプロパティのハンドル値になります。プロパティのハンドル値は XPropertySetInfo インターフェースを利用して調べられます。(注: ハンドル値はバージョン依存性が大きいです。) [プロパティ名からインデックスを調べる -> 配列から値を返す] のプロセスが省略されるためアクセスが速くなります。 このインターフェースは利用できるオブジェクトが少ないので注意。 (使ってみましたが、誤差くらいしか変わりませんでした。要テスト。) |