Top > OOoBasic > Generic > Property

プロパティ Edit

OOo Basic ではプロパティに "." (ドットオペレータ) を利用して簡単にアクセスできます。そのため見逃しがちですがプロパティにメソッドでアクセスすることもできます。

このページの内容を利用するには MRI を併用することを強くお勧めします。特定の情報が表示されるのであればその他のオブジェクトインスペクタでもかまいません。

概要 Edit

OOo Basic ではプロパティ値に "." でアクセスすることが多いですが、com.sun.star.beans.XPropertySet インターフェースなども利用できます。

詳細を知りたい場合には以下リンク参照。

これらのリンクをよく調べれば MRIBasic IDE 入力補助での情報表示などで利用している方法が分かります。

注: 下記のインターフェースはオブジェクトがサポートしていないと利用できません。

XPropertySet Edit

ひとつだけのプロパティ値を取り扱う com.sun.star.beans.XPropertySet インターフェース。

プロパティ値の設定 setPropertyValue、取得 getPropertyValue がプロパティ名指定で行えます。(OOo Basic でも文字列としてプロパティ名を与えたいときに便利。)

また、プロパティが変更されたときのリスナーが利用できます。このとき、プロパティが Bound でなければいけません。特定のプロパティが Bound かどうかは MRI で表示を調べる、または XPropertySetInfo インターフェースなどを利用します。

変更の拒否が可能な VetoableListener も同様です。

com.sun.star.beans.XPropertySetInfo インターフェースは getPropertySetInfo メソッドで取得します。

XPropertySetInfo Edit

プロパティの情報を提供してくれる com.sun.star.beans.XPropertySetInfo インターフェース。(getPropertySetInfo メソッドでこのインターフェースを取得しようとしても Null が戻ってきたりすることがあるので注意。)

getPropertyByName メソッドなどの返り値は com.sun.star.beans.Property struct です。

要素説明
Nameプロパティ名
Handleハンドル値
Typeプロパティ値の型 (言語のブリッジによって実装が異なるので注意)
Attribute属性 com.sun.star.beans.PropertyAttribute

ハンドル値は XFastPropertySet インターフェースで利用されます。また、プロパティ値の型は Type から、プロパティが Bound かどうかなどは Attribute 要素から取得できます。

XPropertyState Edit

プロパティの状態を提供してくれる com.sun.star.beans.XPropertyState インターフェース。このインターフェースを利用すればあるプロパティがデフォルトの値を持っているかどうかなどが確認できます。

XMultiPropertySet Edit

複数のプロパティ値にアクセスするときに利用できる com.sun.star.beans.XMultiPropertySet インターフェース。(役に立つインターフェースですがサポートされていないことがあるのでオブジェクトごとに要確認。複数のプロパティ値を設定、取得する際に API コールが一度で済むので少しだけ実効速度が速くなるかもしれません。)

getPropertyValues メソッドでの取得時には与えたプロパティ名と同じ順でプロパティ値が []any で戻ります。設定時にはプロパティ名と値の順番を合わせておきます。

「プロパティ名はアルファベット順に揃えておけ」と書かれてありますが、…。

XMultiPropertyStates Edit

XPropertyState インターフェースと同じように利用します。

XFastPropertySet Edit

ハンドル値を利用してプロパティに「速く」アクセスする (らしい) com.sun.star.beans.XFastPropertySet インターフェース。

プロパティが内部で配列で管理されていることを利用して、その配列のインデックスで値を取得する。配列のインデックスがプロパティのハンドル値になります。プロパティのハンドル値は XPropertySetInfo インターフェースを利用して調べられます。(注: ハンドル値はバージョン依存性が大きいです。)

[プロパティ名からインデックスを調べる -> 配列から値を返す] のプロセスが省略されるためアクセスが速くなります。

このインターフェースは利用できるオブジェクトが少ないので注意。

(使ってみましたが、誤差くらいしか変わりませんでした。要テスト。)


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes