Object Hierarchy | 関連する C++クラス:GridWidget
v4.2
GridWidget オブジェクトは、プロパティページの GridData オブジェクトに表示するユーザインターフェイスコントロールを表します。基本の GridData よりもそれを制御するステートの変化とステートに直接関連する情報を表示します。たとえば、このオブジェクトは、ユーザがクリックしたセルについての情報を表示します。
実際の GridData の内容とは異なり、選択した状態はプロパティページ(PPG)が閉じられ再度開かれたときに失われます。
注:プロパティページの GridData のレイアウトは、そのプロパティページの PPGItem を表す PPGLayout オブジェクトによって定義されます。たとえば、siUIGridSelectionMode 属性は、セルを個別に選択するか、行または列、またはまったく選択しないなどの制御を行います(siPPGItemAttribute を参照)。
/*
This example demontrates a typical use of the
GridWidget object - as a way of allowing users to
delete rows or columns from a GridData object
*/
var oProp = ActiveSceneRoot.AddProperty( "CustomProperty",
false, "GridWidgetDemo" );
var oParameter = oProp.AddGridParameter( "DemoGrid" ) ;
var oGridData = oParameter.Value ;
oGridData.ColumnCount = 3
oGridData.RowCount = 20
// Fill in some initial values
for ( i = 0 ; i < oGridData.RowCount ; i++ )
for ( j = 0 ; j < oGridData.ColumnCount ; j++ )
oGridData.SetCell( j, i, i + "." + j ) ;
var oPPGLayout = oProp.PPGLayout
var oGridPPGItem = oPPGLayout.AddItem( "DemoGrid" )
oGridPPGItem.SetAttribute( siUINoLabel, true );
oGridPPGItem.SetAttribute( siUIGridSelectionMode, siSelectionHeader );
oGridPPGItem.SetAttribute( siUIGridColumnWidths, "25:100:75:100" );
oGridPPGItem.SetAttribute( siUIGridReadOnlyColumns, "1" );
oPPGLayout.AddRow() ;
oPPGLayout.AddButton( "DeleteRow", "Delete Selected Row(s)" ) ;
oPPGLayout.AddButton( "DeleteColumn", "Delete Selected Column(s)" ) ;
oPPGLayout.EndRow() ;
oPPGLayout.Language = "JScript" ;
oPPGLayout.Logic = DeleteRow_OnClicked.toString() +
DeleteColumn_OnClicked.toString() ;
InspectObj( oProp ) ;
function DeleteRow_OnClicked()
{
var oGridData = PPG.DemoGrid.Value ;
oGridData.BeginEdit() ;
var oGridWidget = oGridData.GridWidget
// shift the rows upwards to overwrite the selected rows
var writePos = 0 ;
for ( var readPos = 0 ; readPos < oGridData.RowCount ; readPos++ )
{
if ( !oGridWidget.IsRowSelected(readPos) )
{
if ( readPos != writePos )
{
oGridData.SetRowValues(
writePos,
oGridData.GetRowValues( readPos ) ) ;
}
writePos++ ;
}
}
// Shrink the GridData
oGridData.RowCount = writePos ;
oGridData.EndEdit() ;
}
function DeleteColumn_OnClicked()
{
var oGridData = PPG.DemoGrid.Value ;
oGridData.BeginEdit() ;
var oGridWidget = oGridData.GridWidget
// shift the rows upwards to overwrite the selected rows
var writePos = 0 ;
for ( var readPos = 0 ; readPos < oGridData.ColumnCount ; readPos++ )
{
if ( !oGridWidget.IsColumnSelected(readPos) )
{
if ( readPos != writePos )
{
oGridData.SetColumnValues(
writePos,
oGridData.GetColumnValues( readPos ) ) ;
}
writePos++ ;
}
}
// Shrink the GridData
oGridData.ColumnCount = writePos ;
oGridData.EndEdit() ;
} |