StarSuite 8 Basic プログラミングガイド
  Sök endast i den här boken
Ladda ner denna bok i PDF (1383 KB)

第 11 章 ダイアログ

StarSuite のドキュメントでは、ユーザー定義によるカスタムダイアログやフォームを表示することができます。 これらは StarSuite Basic マクロとのリンクが可能という点で、StarSuite Basic の利用範囲を大いに広げています。 ダイアログの用途としては、データベースの登録情報の表示をはじめ、オートパイロットによる新規ドキュメント作成時の手順表示などにも利用できます。

ダイアログの操作

StarSuite Basic のダイアログは、1 個のダイアログウィンドウ上にテキストフィールド、リストボックス、ラジオボタンなどの各種コントロールが配置されます。

ダイアログの作成法

ダイアログの作成は StarSuite ダイアログエディタを使って行いますが、その操作方法は StarSuite Draw の場合と同様です。

StarSuite ダイアログデザインウィンドウ。

コントロール要素の基本的な配置法は、使用するコントロール要素をデザインパレット (画面右) で選択して、ダイアログウィンドウ上の表示領域で必要なサイズにドラッグするだけです。

ここでのサンプルダイアログでは、ラベルとリストボックスを配置しています。

デザインモードで、ラベルとリストボックスを配置したダイアログ。

ダイアログを表示するには、以下のサンプルコードのような手順で処理します。

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.DlgDef)

Dlg.Execute()
Dlg.dispose()

上記のサンプルコードでは、CreateUnoDialog により Dlg という名前のオブジェクトを作成していますが、該当するダイアログに対してはこのオブジェクトを介して参照することになります。 また実際にダイアログを作成するには、必要なライブラリ (上記のサンプルコードでは Standard ライブラリ) を事前に読み込む必要があります。 読み込んでいない場合は、LoadLibrary メソッドで読み込みます。

ダイアログオブジェクト (上記のサンプルコードでは Dlg) に対して必要な初期化を行った後、Execute メソッドを実行することで、該当するダイアログが表示されます。 ここでサンプルとしたタイプのダイアログは、表示中に他のプログラムによる処理が何もできなくなるため、モーダルダイアログと呼ばれます。 ダイアログが表示されている間のプログラムは、Execute メソッドを実行し続けている状態になります。

プログラム最終行の dispose メソッドは、ダイアログの使用するリソースをプログラム終了時に解放させるためのものです。

ダイアログのクローズ処理

OK またはキャンセルのボタンによるクローズ

ダイアログに OK または キャンセル のボタンが表示されている場合、いずれかのボタンがクリックされた段階で、ダイアログは自動的に閉じられます。 これらのボタンの詳細情報については、本章の「ダイアログコントロールの詳細」の節で説明しています。

OK のボタンをクリックしてダイアログを閉じた場合は Execute メソッドの戻り値として 1 が返され、それ以外の場合は 0 が返されます。

Dim Dlg As Object

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.MyDialog)

Select Case Dlg.Execute() 
Case 1
   MsgBox "Ok pressed"
Case 0 
   MsgBox "Cancel pressed"
End Select

タイトルバーの閉じるボタンによるクローズ処理

必要であれば、タイトルバーの閉じるボタンをクリックすることでも、ダイアログウィンドウをクローズできます。 そのような操作を行った場合、ダイアログの Execute メソッドによる戻り値には 0 が返されますが、これはキャンセルのボタンを押した場合と同様です。

プログラムによる明示的なクローズ処理

プログラム内に以下のような endExecute メソッドを記述することでも、ダイアログウィンドウをクローズできます。

Dlg.endExecute()

コントロール要素へのアクセス

各ダイアログには、必要な数のコントロール要素を配置することができます。 コントロール要素へアクセスするには、getControl メソッドを実行して、戻り値として返される該当コントロール要素の名前を利用します。

Dim Ctl As Object

Ctl = Dlg.getControl("MyButton")
Ctl.Label = "New Label"

上記のサンプルコードでは、MyButton というコントロール要素に対する参照用オブジェクトを用意して、この Ctl というオブジェクト変数を介することで、コントロール要素の初期化を行っています。 そしてここでは最後に、コントロール要素の Label 属性に New Label という値を設定しています。


注 –

StarSuite Basic では、コントロール要素の名前に使われる大文字と小文字が区別されるので注意が必要です。


コントロール要素およびダイアログでのモデルの使用法

StarSuite API を利用する際には、実際に表示されるプログラム要素 (View: ビュー) と、その背後に存在するデータやドキュメント (Model: モデル) とを使い分けなければならない場合があります。 ダイアログとコントロール要素のオブジェクトの下層には、コントロール要素のメソッドや属性以外に、Model というオブジェクトが存在します。 このオブジェクトを利用することで、ダイアログやコントロール要素の内容に直接アクセスすることができます。

StarSuite に用意された API の中でも、ダイアログに関しては、データとその表示内容の境界が非常にあいまいです。 API の要素には、View と Model のどちらからでもアクセスできます。

Model 属性は、ダイアログおよびコントロール要素オブジェクトのモデルに対して、プログラム制御によるアクセスする際に利用します。

Dim cmdNext As Object

cmdNext = Dlg.getControl("cmdNext")
cmdNext.Model.Enabled = False

上記のサンプルコードでは、Dlg というダイアログにある cmdNtext というボタンを、モデルオブジェクトを用いて非アクティブにしています。

属性

名前とタイトル

各コントロール要素には名前が付けられており、これらの名前に対しては、以下のモデル属性を用いて参照することができます。

  • Model.Name (文字列)– コントロール要素の名前。

ダイアログのタイトルバーに表示されるタイトルに対しては、以下のモデル属性を用いて参照することができます。

  • Model.Title (文字列) – ダイアログのタイトル (ダイアログでのみ利用可能)。

位置とサイズ

コントロール要素の表示位置とサイズに対しては、以下のモデル属性を用いて参照することができます。

  • Model.Height (ロング整数) – コントロール要素の高さ (ma 単位)。

  • Model.Width (ロング整数) – コントロール要素の幅 (ma 単位)。

  • Model.PositionX (ロング整数) – ダイアログ内側の左端から測った、コントロール要素の X 座標 (ma 単位)。

  • Model.PositionY (ロング整数) – ダイアログ内側の上端から測った、コントロール要素の Y 座標 (ma 単位)。

StarSuite では、プラットフォームへの非依存性を確保する観点から、ダイアログ内での位置とサイズを示す際に、Map AppFont (ma) という内部単位を使用しています。 ma 単位では、オペレーティングシステムに設定されたシステムフォントの平均サイズを基準に、その高さの 8 分の 1 および幅の 4 分の 1 を、各方向の 1 単位と定めています。 StarSuite はこのような ma 単位を利用することで、システム設定の異なる環境下においても、ダイアログの表示が同じになるようにしています。

実行時に表示されるコントロール要素の位置とサイズを変更する場合は、ダイアログのサイズを確認してから、コントロール要素の表示指定を調整します。


注 –

Map AppFont (ma) 単位は、プラットフォームへの非依存性を確保する観点から、従来の Twip (トゥウィップ) 単位に替わって導入されたものです。


フォーカスおよびタブ順

ダイアログ上に配置されたコントロール要素に対しては、Tab キーによるフォーカス移動が行えます。 こうした操作に関係するコントロール要素モデルでは、以下の属性が利用できます。

  • Model.Enabled (ブール値) – コントロール要素をアクティブにする指定。

  • Model.Tabstop (ブール値) – コントロール要素を Tab キーによるフォーカス移動の対象にする指定。

  • Model.TabIndex (ロング整数) – Tab キーによるフォーカス移動の順序の指定。

最後に紹介する getFocus メソッドは、ダイアログ上のコントロール要素にフォーカス移動を行うよう設定するものです。

  • getFocus – 手続き (ダイアログのみ)。

マルチページダイアログ

StarSuite のダイアログには、複数のページを配置できます。 ダイアログにある Step 属性はダイアログの現在のタブページを指定するものですが、コントロール要素にも同様の Step 属性が存在し、こちらは該当コントロールを表示するタブページを指定します。

Step に指定する値のうち、0 は特別な意味を持ちます。 ダイアログ側で Step 属性値に 0 を指定すると、コントロール要素側の指定値とは無関係に、すべてのコントロール要素が表示されるようになります。 これとは逆に、Step 属性値を 0 に設定したコントロール要素は、ダイアログのすべてのタブページ上に表示されるようになります。

デザインモードでのマルチページダイアログ。

たとえば上記のダイアログの場合、分割線および「キャンセル」、「戻る」、「次へ」、「完了」の各ボタンは、すべてのタブページ上に表示させる性質のコントロールなので、これらの Step 値は 0 に設定しておきます。 ただし必要であれば、各コントロール要素を特定のタブページだけに表示させることもできます (たとえばページ 1)。

以下のサンプルコードでは、イベントハンドラに応じて、「次へ」と「戻る」ボタンの Step 値を増減させて、ボタンの表示用ステータスを変更しています。

Sub cmdNext_Initiated
   Dim cmdNext As Object
   Dim cmdPrev As Object
   
   cmdPrev = Dlg.getControl("cmdPrev")
   cmdNext = Dlg.getControl("cmdNext")
   
   cmdPrev.Model.Enabled = Not cmdPrev.Model.Enabled
   cmdNext.Model.Enabled = False
   
   Dlg.Model.Step = Dlg.Model.Step + 1
End Sub

Sub cmdPrev_Initiated
   Dim cmdNext As Object
   Dim cmdPrev As Object
   
   cmdPrev = Dlg.getControl("cmdPrev")
   cmdNext = Dlg.getControl("cmdNext")
   
   cmdPrev.Model.Enabled = False
   cmdNext.Model.Enabled = True
   
   Dlg.Model.Step = Dlg.Model.Step - 1
End Sub

このサンプルコードを使用する場合は、ダイアログの参照に用いる Dlg という変数を、広域変数として用意しておく必要があります。 そしてこのサンプルコードの実行により、ダイアログ上のボタンは、以下の図のように表示ステータスが切り換えられます。

ページ 1:

マルチページダイアログのページ1。

ページ 2:

マルチページダイアログのページ2。

イベント

StarSuite のダイアログとフォームは、イベント指向型のプログラミングモデルを基に構築されているため、各コントロール要素に対しては イベントハンドラを指定できます。 イベントハンドラとは、特定のアクションの実行に応じて、事前に定めておいた手続きを起動するための機構で、このようなトリガーとなるアクションは、他のイベント中で発生した場合も有効です。 イベントハンドラを利用することで、ドキュメントの編集やデータベースのオープンをはじめ、他のコントロール要素へのアクセスといった、各種の処理を制御できます。

StarSuite のコントロール要素は、様々な状況で発生する各種のイベントに対応しています。 これらのイベントは、4 つのグループに分かれます。

  • マウス制御: マウスの動作に関係するイベント (たとえば単なるマウスポインタの移動や、画面上の特定部分のクリックなど)

  • キーボード制御: キーボードのキー操作に関係するイベント

  • フォーカス移動: コントロール要素のアクティブ化または非アクティブ化に応じて StarSuite が発生するイベント

  • コントロール要素の固有イベント: 特定のコントロール要素のみに発生するイベント

イベントを利用した処理を行う場合は、StarSuite の開発環境でダイアログを構築して、必要なコントロール要素やドキュメント (フォームを使用する場合) を用意しておく必要があります。

デザインモードで 2 つのリストボックスを配置したマルチページダイアログ。

上記の図は StarSuite Basic の開発環境を示したもので、このダイアログウィンドウには 2 つのリストボックスが配置されています。 この場合、2 つのリストボックスの間に配置されたボタンを使って、リスト内の各項目を相互に移動できるものとします。

このようなレイアウトを画面に表示させる場合は、イベントハンドラからの呼び出し用の手続きを StarSuite Basic のコード内に作成するようにしてください。 このような手続きは、任意のモジュール内に記述できますが、使用するモジュールは 2 つまでにすることが推奨されます。 またプログラムコードの可読性を高める観点からも、これらの手続き名には、その機能を簡潔に示す名前をつけておくべきです。 マクロから汎用プログラムの手続きに直接ジャンプさせると、プログラムコードが不明瞭になる危険性があります バグ修正も含めたプログラムコード全体の管理性を高めておくには、たとえそれがターゲットとなる手続きを呼び出すだけの処理であっても、イベントハンドル用のエントリポイントとして利用する手続きを 1 つ別途作成しておくべきです。

以下のサンプルコードは、ダイアログ上に配置された左側のリストボックス内の項目の 1 つを、右側のリストボックスへ移動します。

Sub cmdSelect_Initiated
   Dim objList As Object
   lstEntries = Dlg.getControl("lstEntries")
   lstSelection = Dlg.getControl("lstSelection")

   If lstEntries.SelectedItem > 0 Then
      lstSelection.AddItem(lstEntries.SelectedItem, 0)
      lstEntries.removeItems(lstEntries.SelectItemPos, 1)
   Else
      Beep
   End If
End Sub

この手続きを StarSuite Basic で記述したら、ダイアログエディタの属性ウィンドウを表示して、該当するイベントへの割り当てを行います。

マクロへのイベント割り当て用ダイアログ。

このダイアログには、StarSuite Basic に記述したすべての手続きが表示されます。 該当するイベントに手続きを割り当てるには、手続きを選択して、割り当て ボタンをクリックします。

パラメータ

特定のイベントの発生だけでは、どのような処理を行うかの判定ができない場合もあります。 そのようなケースでは、何らかの追加情報が必要となります。 たとえばマウスクリックに関する処理では、どの位置でマウスボタンが押されたかの情報が利用できます。

StarSuite Basic では以下のような方法で、イベントから手続きに対してオブジェクトパラメータを渡すことができます。

Sub ProcessEvent(Event As Object)

End Sub

Event オブジェクトの構成および付随する属性は、手続き呼び出しのトリガーとなるイベントの種類に依存します。 以降の節では、イベントタイプの詳細について説明します。

いずれのイベントタイプにせよ、すべてのオブジェクトは、割り当てられたコントロール要素およびモデルへのアクセスします。 コントロール要素へのアクセスは、以下の形式で行います。

Event.Source 

同様に、モデルへのアクセスは以下の形式で行います。

Event.Source.Model

これらの属性は、イベントハンドラ内で特定のイベントをトリガーする際に使用します。

マウスイベント

StarSuite Basic では以下のマウスイベントを利用できます。

  • マウス操作時 – ユーザーによるマウスポインタの移動

  • キーを押しマウス操作する時 – ユーザーによるキーを押し下げながらのマウスポインタの移動

  • マウスボタンを押した時 – ユーザーによるマウスボタンの押し下げ

  • マウスボタンから離れた時 – ユーザーによるマウスボタンの解放

  • マウスを外に出した時 – ユーザーによるマウスポインタの現在のウィンドウ外への移動

これらのイベントを扱うためのイベントオブジェクトは com.sun.star.awt.MouseEvent 構造体として定義されており、以下の情報を取り扱うことができます。

  • Buttons (整数) – 押し下げられたボタン (com.sun.star.awt.MouseButton に定められた 1 または複数の定数)。

  • X (ロング整数) – ピクセル単位で指定した、コントロール要素の左上隅を原点とするマウスポインタの X 座標。

  • Y (ロング整数) – ピクセル単位で指定した、コントロール要素の左上隅を原点とするマウスポインタの Y 座標。

  • ClickCount (ロング整数) – マウスイベントに関係したクリック数 (ダブルクリックは 1 つのイベントとして処理されるため、StarSuite が十分高速に反応できる場合、ClickCount によるカウントも 1 となる)。

com.sun.star.awt.MouseButton に定義されているマウスボタン関連の定数は、以下のものです。

  • LEFT - マウスの左ボタン

  • RIGHT - マウスの右ボタン

  • MIDDLE - マウスの中央ボタン

以下のサンプルコードでは、マウスボタンのクリック位置と押されたボタンを表示します。

Sub MouseUp(Event As Object)
   Dim Msg As String
   Msg = "Keys: "
   If Event.Buttons AND com.sun.star.awt.MouseButton.LEFT Then
      Msg = Msg & "LEFT "
   End If
   If Event.Buttons AND com.sun.star.awt.MouseButton.RIGHT Then
      Msg = Msg & "RIGHT "
   End If
   If Event.Buttons AND com.sun.star.awt.MouseButton.MIDDLE Then
      Msg = Msg & "MIDDLE "
   End If
   Msg = Msg & Chr(13) & "Position: "
   Msg = Msg & Event.X & "/" & Event.Y
   MsgBox Msg
End Sub

注 –

VBA に用意されている Click および Doubleclick イベントは StarSuite Basic では利用できません。 StarSuite Basic では Click イベントの代わりに MouseUp イベントを使用し、Doubleclick イベントについてはアプリケーションロジックの変更で対処します。


キーボードイベント

StarSuite Basic では以下のキーボードイベントを利用できます。

  • キーを押した時 – ユーザーによるキーの押し下げ

  • キーから離れた時 – ユーザーによるキーの解放

どちらのイベントも、論理的 なキーアクションに対するもので、物理的 なキーアクションに直接対応するものではありません。 つまり、1 つの文字の入力に複数キーのコンビネーションが必要な場合 (たとえば欧文のアクセント記号など)、これに対して StarSuite Basic が発生するイベントは 1 つだけです。

また Shift キー や Alt キーなどの修飾キーを単独で押し下げても、それだけでは独立したイベントは発生しません。

StarSuite Basic は、押し下げられたキーに関する情報を、イベントオブジェクトによりイベントハンドル用手続きに渡します。 この場合は、以下の属性を利用できます。

  • KeyCode (整数) – 押し下げられたキーを示すコード番号 (com.sun.star.awt.Key に定められた値)

  • KeyChar (文字列) – 入力された文字 (修飾キーによる効果も含めた結果)

以下のサンプルコードでは、KeyCode 属性を利用して、Enter キーや Tab キーなどの制御用キーのうち何が押されたかを判定します。 これらの制御用キーが押されていた場合は、該当するキーの名前を表示し、それ以外の場合は、入力された文字を表示します。

Sub KeyPressed(Event As Object)
   Dim Msg As String
   Select Case Event.KeyCode
   Case com.sun.star.awt.Key.RETURN
      Msg = "Return pressed"
   Case com.sun.star.awt.Key.TAB
      Msg = "Tab pressed"
   Case com.sun.star.awt.Key.DELETE
      Msg = "Delete pressed"
   Case com.sun.star.awt.Key.ESCAPE
      Msg = "Escape pressed"
   Case com.sun.star.awt.Key.DOWN
      Msg = "Down pressed"
   Case com.sun.star.awt.Key.UP
      Msg = "Up pressed"
   Case com.sun.star.awt.Key.LEFT
      Msg = "Left pressed"
   Case com.sun.star.awt.Key.RIGHT
      Msg = "Right pressed"
   Case Else
      Msg = "Character " & Event.KeyChar & " entered"
   End Select
   MsgBox Msg
End Sub

キーボード処理に使用するその他の定数については、『API Reference』の com.sun.star.awt.Key グループの定数値を参照してください。

フォーカスイベント

フォーカスイベントは、コントロール要素へのフォーカス移動を判定するためのものです。 たとえばユーザーが特定のコントロール要素での処理を終えたかを判定してから、ダイアログ上にある他のコントロール要素を更新するような場合、このイベントが利用できます。 以下に、利用できるフォーカスイベントを示します。

  • フォーカスを得た時 – コントロール要素へのフォーカス移動

  • フォーカスを失った時 – コントロール要素からのフォーカスの喪失

フォーカスイベント関係の Event オブジェクトは、以下のように構成されています。

  • FocusFlags (整数) – フォーカス移動の原因 (com.sun.star.awt.FocusChangeReason に定められた値)。

  • NextFocus (オブジェクト) – フォーカスの移動先のオブジェクト (フォーカスを失った時 のイベントのみ)。

  • Temporary (ブール値) – フォーカスが一時的に喪失されたかの判定。

コントロール要素の固有イベント

これまで説明したイベントは、すべてのコントロール要素でサポートされていますが、その他にも特定のコントロール要素についてのみ定義された固有なイベントが存在します。 これらのうち特に重要なものは以下のイベントです。

  • When Item Changed – コントロール要素の値の変更

  • ステータスを変更した時 – コントロール要素のステータスの変更

  • テキストを変更した時 – コントロール要素のテキストの変更

  • 作動時 – コントロール要素を動作させるアクションの実行 (ボタンの押し下げなど)

イベントを処理する場合、作動時のイベントなどは、単にコントロール要素をクリックするだけで発生することがあるため、その扱いには注意が必要です (たとえばラジオボタンのクリック)。 このような場合、コントロール要素のステータスが実際に変更されたかについてはチェックされません。 このような「ブラインドイベント」による混乱を避けるには、変更前のコントロール要素の値を広域変数に保存しておき、イベント実行時にそうした値に変化があったかを確認するという手法が使えます。

ステータスを変更した時のイベントに関係する属性には以下のものがあります。

  • Selected (ロング整数) – 現在の選択項目

  • Highlighted (ロング整数) – 現在の強調表示中の項目

  • ItemId (ロング整数) – 項目の ID

ダイアログコントロールの詳細

StarSuite Basic には各種のコントロール要素が用意されていますが、これらは以下の 4 つのグループに分類できます。

入力フィールド:

  • テキストフィールド (テキストボックス)

  • 日付フィールド

  • 時刻フィールド

  • 番号フィールド

  • 通貨フィールド

  • その他の書式設定可能なフィールド

ボタン:

  • 標準ボタン (コマンドボタン)

  • チェックボックス

  • ラジオボタン

選択用リスト:

  • リストボックス

  • コンボボックス

その他のコントロール要素:

  • スクロールバー (水平および垂直スクロールバー)

  • グループ枠

  • 進行グラフ

  • 分割線 (横線および縦線)

  • イメージコントロール

  • ファイルの選択

次に、これらのコントロール要素のうち、特に重要なものについて説明します。

ボタン

ボタンは、ユーザーによるクリックに応じて、特定のアクションを実行させる際に使用します。

最も単純な使用法は、ユーザーのクリックで発生する「作動時」イベントをトリガーとして、ボタンのアクションを実行させるという使い方です。 またボタンに他のアクションを割り当てて PushButtonType 属性を利用し、別のダイアログを開くという処理も可能です。 この属性値を 0 としたボタンをクリックしても、ダイアログはそのまま残されます。 この属性値を 1 としたボタンをクリックした場合、ダイアログは閉じられ、ダイアログを表示していた Execute メソッドは戻り値として 1 を返します (ダイアログの処理は正常終了)。 この属性値を 2 としたボタンをクリックした場合、ダイアログは閉じられ、ダイアログを表示していた Execute メソッドは戻り値として 0 を返します。

以下に、ボタンモデルで利用可能なすべての属性を示します。

  • Model.BackgroundColor (ロング整数) – 背景の色

  • Model.DefaultButton (ブール値) – フォーカスのない状態で Enter キーが押された場合に反応させる標準ボタンとする指定

  • Model.FontDescriptor (構造体) – 表示フォントの詳細指定用の構造体 (com.sun.star.awt.FontDescriptor に定められた構造体)

  • Model.Label (文字列) – ボタンに表示するラベル (タイトル)

  • Model.Printable (ブール値) – コントロール要素を印刷可能とする指定

  • Model.TextColor (ロング整数) – コントロール要素のテキストの色

  • Model.HelpText (文字列) – コントロール要素にマウスポインタを重ねた際に表示させるヘルプテキスト

  • Model.HelpURL (文字列) – コントロール要素で使用するオンラインヘルプの URL

  • PushButtonType (整数) – ボタンアクションの指定 (0: なし、1: OK、2: キャンセル)

ラジオボタン

通常これらは複数のボタンをグループ化して、そのうち 1 つのオプションを選択することにより使用します。 その際にオプションの 1 つが選択されると、残りのオプションは非選択状態になります。 このように処理することで、選択状態にあるオプションは常に 1 つだけになります。

ラジオボタンのコントロール要素には、以下の 2 つの属性があります。

  • State (ブール値) – ボタンをアクティブにする指定

  • Label (文字列) – ボタンに表示するラベル (タイトル)

ラジオボタンのモデルからは、以下の属性も使用できます。

  • Model.FontDescriptor (構造体) – 表示フォントの詳細指定用の構造体 (com.sun.star.awt.FontDescriptor に定められた構造体)

  • Model.Label (文字列) – コントロール要素に表示するラベル (タイトル)

  • Model.Printable (ブール値) – コントロール要素を印刷可能とする指定

  • Model.State (整数) – オプションをアクティブとするか (属性値を 1 とした場合)、非アクティブとするかの指定 (その他の値の場合)

  • Model.TextColor (ロング整数) – コントロール要素のテキストの色

  • Model.HelpText (文字列) – コントロール要素にマウスポインタを重ねた際に表示させるヘルプテキスト

  • Model.HelpURL (文字列) – コントロール要素で使用するオンラインヘルプの URL

複数のラジオボタンをグループ化する場合は、これらをアクティブ化する順序の設定値 (Model.TabIndex 属性の指定値で、ダイアログエディタ上では順序の指定に該当) に連続した値を指定しておく必要があります。 アクティブ化する順序の途中に他のコントロール要素が入っていると、StarSuite は新規のコントロール要素グループが始まるものと判断するため、本来のグループ内部での切り替えが想定通りに行えなくなります。


注 –

VBA とは異なり StarSuite Basic では、グループ枠の中にラジオボタンを挿入するということはできません。 StarSuite Basic に用意されているグループ枠というコントロール要素は、グループ化するコントロール要素を目で見て区別できるように、これらを囲む枠線を引くだけのものです。


チェックボックス

チェックボックスは基本的に Yes または No の形式の情報を入力するために使用しますが、モード設定によっては、このような 2 つのステータス間だけでなく、3 つのステータス間で選択することもできます。 通常使用するのは Yes か No かの選択肢ですが、どちらともつかない中間状態が選択肢としてあり得る場合は、それを示すステータスも表示できます。

チェックボックスには、以下の属性を指定できます。

  • State (整数) – チェックボックスの状態 (0: No、1: Yes、2: 中間状態)

  • Label (文字列) – コントロール要素に表示するラベル (タイトル)

  • enableTriState (ブール値) – 選択状態と非選択状態の他に、中間状態を表示する指定

チェックボックスのモデルオブジェクトでは、以下の属性を使用できます。

  • Model.FontDescriptor (構造体) – 表示フォントの詳細指定用の構造体 (com.sun.star.awt.FontDescriptor に定められた構造体)

  • Model.Label (文字列) – コントロール要素のラベル (タイトル)

  • Model.Printable (ブール値) – コントロール要素を印刷可能とする指定

  • Model.State (整数) – チェックボックスの状態 (0: No、1: Yes、2: 中間状態)

  • Model.Tabstop (ブール値) – コントロール要素を Tab キーによるフォーカス移動の対象にする指定

  • Model.TextColor (ロング整数) – コントロール要素のテキストの色

  • Model.HelpText (文字列) – コントロール要素にマウスポインタを重ねた際に表示させるヘルプテキスト

  • Model.HelpURL (文字列) – コントロール要素で使用するオンラインヘルプの URL

テキストボックス

テキストボックスは、ユーザーによる数値およびテキストの入力に使用できます。 テキストボックスの機能は、主として com.sun.star.awt.UnoControlEdit サービスにより提供されています。

テキストボックスの表示は 1 行に制限することもできれば、複数行表示を許可することも可能で、またユーザーからの入力内容を編集することも、読み取り専用とすることもできます。 またテキストボックスは、通常の通貨フィールドや番号フィールドまたはパターンフィールドでは処理しきれない場合の代用フィールドとしても利用できます。 そもそも、これらのコントロール要素はどれも Uno サービスの UnoControlEdit をベースとしているので、基本的に共通した手法でプログラム制御をすることができます。

テキストボックスには、以下の属性が用意されています。

  • Text (文字列) – 現在の表示テキスト

  • SelectedText (文字列) – 現在の強調表示中のテキスト

  • Selection (構造体) – 読み取りの強調表示設定 (com.sun.star.awt.Selection に定められた構造体で、Min および Max 属性により強調表示の開始と終了箇所を指定)

  • MaxTextLen (整数) – フィールド内に入力可能な最大文字数

  • Editable (ブール値) – テキスト入力が許可されるか (True)、拒否されるか (False) の設定 (この属性は IsEditable を介した間接的な利用のみが可能)

  • IsEditable (ブール値) – コントロール要素の内容の変更を許可するか、読み取り専用とするかの指定

モデルオブジェクトからは、以下の属性を利用できます。

  • Model.Align (整数) – テキストの配置 (0: 左揃え、1: 中央揃え、2: 右揃え)

  • Model.BackgroundColor (ロング整数) – コントロール要素の背景色

  • Model.Border (整数) – 外枠の種類 (0: なし、1: 3D 表示、2: 平坦な線)

  • Model.EchoChar (文字列) – パスワードフィールドとしての利用時のマスク記号

  • Model.FontDescriptor (構造体) – 表示フォントの詳細指定用の構造体 (com.sun.star.awt.FontDescriptor に定められた構造体)

  • Model.HardLineBreaks (ブール値) – コントロール要素のテキスト内で改行する指定

  • Model.HScroll (ブール値) – 水平スクロールバーを表示する指定

  • Model.MaxTextLen (整数) – 表示テキストの最大数で、0 の指定は制限無しに対応

  • Model.MultiLine (ブール値) – 複数行表示を許可する指定

  • Model.Printable (ブール値) – コントロール要素を印刷可能とする指定

  • Model.ReadOnly (ブール値) – コントロール要素を読み取り専用とする指定

  • Model.Tabstop (ブール値) – コントロール要素を Tab キーによるフォーカス移動の対象にする指定

  • Model.Text (文字列) – コントロール要素の表示テキスト

  • Model.TextColor (ロング整数) – コントロール要素のテキストの色

  • Model.VScroll (ブール値) – 垂直スクロールバーを表示する指定

  • Model.HelpText (文字列) – コントロール要素にマウスポインタを重ねた際に表示するヘルプテキスト

  • Model.HelpURL (文字列) – コントロール要素で使用するオンラインヘルプの URL

リストボックス

リストボックス (com.sun.star.awt.UnoControlListBox サービス) は、以下の属性をサポートしています。

  • ItemCount (整数) – 項目の数 (読み取り専用)

  • SelectedItem (文字列) – 強調表示中の項目のテキスト(読み取り専用)

  • SelectedItems (文字列配列) – 強調表示中の項目を格納したデータフィールド (読み取り専用)

  • SelectItemPos (整数) – 強調表示中の項目の数 (読み取り専用)

  • SelectItemsPos (整数配列) – 強調表示中の項目の数を格納したデータフィールド (複数選択可能なリストボックスのみ。読み取り専用)

  • MultipleMode (ブール値) – 複数選択が許可されるか (True)、拒否されるか (False) の設定 (この属性は IsMultipleMode を介した間接的な利用のみが可能)

  • IsMultipleMode (ブール値) – リスト内で複数選択を許可する指定 (読み取り専用)

リストボックスには、以下のメソッドが用意されています。

  • addItem (Item, Pos)Item として渡された文字列を、Pos で指定するリスト位置に挿入します。

  • addItems (ItemArray, Pos) – 文字列データフィールド ItemArray の形で渡された複数の項目を、Pos で指定するリスト位置に挿入します。

  • removeItems (Pos, Count)Pos で指定するリスト位置から、Count 個の項目を削除します。

  • selectItem (Item, SelectMode) – 文字列 Item に指定された項目の強調表示を、ブール値 SelectMode の指定に応じて切り換えます。

  • makeVisible (Pos)Pos の指定位置にある項目を表示するよう、リストフィールドをスクロールします。

リストボックスのモデルオブジェクトには、以下の属性が用意されています。

  • Model.BackgroundColor (ロング整数) – コントロール要素の背景色

  • Model.Border (整数) – 外枠の種類 (0: なし、1: 3D 表示、2: 平坦な線)

  • Model.FontDescriptor (構造体) – 表示フォントの詳細指定用の構造体 (com.sun.star.awt.FontDescriptor に定められた構造体)

  • Model.LineCount (整数) – コントロール要素の行数

  • Model.MultiSelection (ブール値) – 項目の複数選択を許可する指定

  • Model.SelectedItems (文字列配列) – 強調表示中の項目のリスト

  • Model.StringItemList (文字列配列) – すべての項目のリスト

  • Model.Printable (ブール値) – コントロール要素を印刷可能とする指定

  • Model.ReadOnly (ブール値) – コントロール要素を読み取り専用とする指定

  • Model.Tabstop (ブール値) – コントロール要素を Tab キーによるフォーカス移動の対象にする指定

  • Model.TextColor (ロング整数) – コントロール要素のテキストの色

  • Model.HelpText (文字列) – コントロール要素にマウスポインタを重ねた際に表示させるヘルプテキスト

  • Model.HelpURL (文字列) – コントロール要素で使用するオンラインヘルプの URL


注 –

VBA に用意されているリスト項目への数値付加オプション (ItemData) は、StarSuite Basic では利用できません。 リストボックスの項目に数値 (データベース ID など) を割り当てるのであれば、追加のデータフィールドを用意して、両者のデータを格納するようにします。