Top > OOoBasic > Dialog > GridControl

グリッドコントロール Edit

OOo 3.3 から利用できますが、お勧めできません、グリッドコントロール(3.3)参照。3.4 で色々変更があったので 3.4 以降での利用をお勧めします。3.4 と指定がある部分は LibreOffice 3.4 では動作しません。

ダイアログエディタでは現在は作成できません。

モデルプロパティ Edit

プロパティ説明
GridDataModel.awt.grid.XGridDataModelデータ
ColumnModel.awt.grid.XGridColumnModelカラムデータ
RowBackgroundColorlong背景色
EvenRowBackgroundColorlong偶数行の背景色
ShowRowHeaderboolean行ヘッダの表示
ShowColumnHeaderboolean列ヘッダの表示
RowHeaderWidthlong
ColumnHeaderHeightlong
RowHeightlong
UseGridLinesboolean
GridLineColorlong
HeaderTextColorlong
RowBackgroundColors[]long
VerticalAlign.style.VerticalAlignment
HeaderBackgroundColorlongヘッダの背景色
SelectionModel.view.SelectionType選択形式
HScrollboolean水平スクロールバーの表示
VScrollboolean垂直スクロールバーの表示
LineColorlong線の色
TextColorlongテキストの色
TextLineColorlong

いまのところ表示するフォントと文字のサイズを変更できません。

コントローラ Edit

コントローラからからは選択範囲の操作などが行えます。選択モードの設定はモデルのプロパティで行います。モードによっては各メソッドから取得できる選択範囲のインデックスに注意が必要です。

css.awt.grid.XGridControl インターフェース

  • long getColumnAtPoint( [in] long x, [in] long y )
    • 近い列インデックスを返します。
  • long getRowAtPoint( [in] long x, [in] long y )
    • 近い行インデックスを返します。
  • long getCurrentColumn()
    • アクティブな列インデックスを返します。
  • long getCurrentRow()
    • アクティブな行インデックスを返します。

3.4 ではツールチップはデータモデルが担当します。

css.awt.grid.XGridSelection ベースインターフェース

  • void selectAllRows()
    • 全ての行を選択します。
  • void selectRows( [in] long[] rows )
    • 指定した行を選択します。
  • void deselectAllRows()
    • 全てのセルの選択を解除します。
  • void deselectRows( [in] long[] rows )
    • 指定した行の選択を解除します。
  • long[] getSelection()
    • 選択されている行のインデックスを取得します。
  • boolean isSelectionEmpty()
    • 行が選択されているかどうか調べます。
  • boolean isSelectedIndex( [in] long index )
    • 指定した行が選択されているかどうか調べます。
  • void selectRow( [in] long index )
    • 指定した行を選択します。
  • void addSelectionListener( [in] css.awt.grid.XGridSelectionListener listener )
    • 選択変更リスナーを追加します。
  • void removeSelectionListener( [in] css.awt.grid.XGridSelectionListener listener )
    • 選択変更リスナーを削除します。

作成 Edit

一般的なダイアログコントロールを動的に作成する時と同じように com.sun.star.awt.grid.UnoControlGridModel サービスをダイアログモデルからインスタンス化します。

 DialogLibraries.loadLibrary("Standard")
 oDialog = CreateUnoDialog( _
   DialogLibraries.getByName("Standard").getByName("Dialog1"))
 oDialogModel = oDialog.getModel()

 oGridModel = oDialogModel.createInstance( _
     "com.sun.star.awt.grid.UnoControlGridModel")

  with oGridModel
   .PositionX = 10
   .PositionY = 10
   .Width = 190
   .Height = 100
   .Name = "Grid"
   ' adds ColumnModel and GridDataModel
 end with

 oDialogModel.insertByName("Grid1", oGridModel)
 oDialog.execute()

ColumnModel および GridDataModel プロパティを正しく設定する前にダイアログにコントロールを追加しようとするとクラッシュします。列および行については下記参照。

Edit

3.4 以降ではグリッドのカラムモデルはデフォルトで設定されています。特に変更がなければそれを取得、列を指定して利用します。カラムは createColumn メソッドを利用して作成します。

oColModel = oGridModel.ColumnModel

oGridCol1 = oColModel.createColumn()
oGridCol1.Title = "Col 1"

oColModel.addColumn(oGridCol1)

列のプロパティ

プロパティ説明
Titlestring列タイトル
ColumnWidthlong列幅
Identifierany列識別子
PreferredWidthlong推奨幅
MinWidthlong最小幅
MaxWidthlong最大幅
Resizeableboolean列幅手動調整可能
HorizontalAlign.style.HorizontalAlignment水平方向配置

css.awt.grid.XGridColumnModel

  • long getColumnCount()
    • 列数を取得します
  • long addColumn( [in] css.awt.grid.XGridColumn column )
    • 列を追加します
  • []css.awt.grid.XGridColumn getColumns()
    • すべての列を取得します
  • css.awt.grid.XGridColumn getColumn( [in] long index )
    • 指定したインデックスの列を取得します。
  • void setDefaultColumns( [in] long elements )
    • デフォルトの列数を設定します
  • css.awt.grid.XGridColumn createColumn()
    • 新規列を作成します。
  • void removeColumn( [in] long index )
    • 指定した列を削除します。

行データ Edit

3.4 以降ではグリッドデータモデルはデフォルトで作成されます。デフォルトではソート可能な css.awt.grid.SortableGridDataModel サービスが利用されます。ソートを無効にしたいときには css.awt.grid.DefaultGridDataModel サービスをインスタンス化して設定してください。

oDataModel = oGridModel.GridDataModel

css.awt.grid.XGridDataModel インターフェース

  • any getCellData( [in] long columnIndex, [in] long rowIndex )
  • any getCellToolTip( [in] long columnIndex, [in] long rowIndex )
  • any getRowHeading( [in] long rowIndex )
  • long RowCount
    • attribute 行数
  • long ColumnCount
    • attribute 列数

css.awt.grid.XMutableGridDataModel インターフェース

  • void addRow( [in] string header, [in] seq<any> data)
    • 行を最後に追加します。
  • void addRows( [in] seq<any> headings, [in] seq<seq<any>> data)
    • 複数行を一度に追加します。
  • void removeRow([in] long index)
    • 指定行を削除します。
  • void removeAllRows()
    • 全てのデータ行を削除します。
  • void updateCellData( [in] long row, [in] long column, [in] any value)
    • 指定したセルのデータを更新します。
  • void updateRowData([in] long row, [in] seq<long> columns, [in] seq<any> values )
  • void updateRowHeading( [in] long rowIndx, [in] any data )
  • void updateCellToolTip( [in] long column, [in] long row, [in] any data )
  • void updateRowToolTip( [in] long rowIndx, [in] any data )
    • 行中の指定した列のデータを更新します。
  • void addGridDataListener([in] css.grid.XGridDataListener listener)
    • リスナーを追加します。
  • void removeGridDataListener([in] css.grid.XGridDataListener listener)
    • リスナーを削除します。
プロパティ説明
Data[][]any表示データ
RowHeaderWidthlong行ヘッダ幅
RowHeaders[]string行ヘッダデータ
RowHeightlong行高さ

データには文字列、数値の他、次のようにして画像を表示できます。

 Dim aProps(0) As New com.sun.star.beans.PropertyValue
 aProps(0).Name = "URL"
 aProps(0).Value = "file:///home/asuka/Documents/images/img.png"
 oGP = CreateUnoService("com.sun.star.graphic.GraphicProvider")
 oG1 = oGP.queryGraphic(aProps)
 
 oDataModel = createUnoService( "com.sun.star.awt.grid.DefaultGridDataModel")
 oDataModel.addRow ( "1", Array(oG1, "Germany") )

GridDataModel Edit

AOO 3.4 では 3.3 と少しインターフェースが変更されてるため注意が必要です。しかし、グリッドの途中に行を挿入できるメソッドなどが追加されて使いやすくなりました。また、インターフェースが finalize されて今後は大きな変更は無い予定です。

独自の GridDataModel を実装する場合、css.awt.grid.XGridDataModel インターフェースだけでなく、css.uno.XWeak インターフェースも実装してください。そうしなければグリッドコントロールの内容が正しく表示されません。


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