色選択ダイアログ
OOo の色選択ダイアログを OOo Basic などから OOo API を介して使用することが出来ません。代わりになるようなダイアログを作成してみます。色情報は user/config/Standard.soc から取得します。 主に以下の内容を利用しています。
使い方
関数として定義してあるので、他の subroutine から呼び出します。 'ok: colorvalue, cancel: -1 Function ColorTable() As Long OK ボタンが押された場合、RGB ランタイム関数で long 型として色を返します。また、Cancel ボタンが押されたときは -1 を戻します。 説明
ちょっとだけ説明。 com.sun.star.xml.sax.Parser サービスを利用して Standard.soc ファイルを読み込んでいますが、ファイルを読み終わるまで項目数が分かりません。OOo Basic では配列に値を追加するような関数が無いので困ります。ReDim Preserve を利用することになりますが実行速度が非常に低下します。 今回はある程度数が分かっているため (初期では 95 程度の色数) 配列を最初は 90 (91) として定義、色数が 90 を超えたときから上記 ReDim を利用します。そうしないとかなり遅いです。 |