SSpreadクラス

Biz/Browser 5.0.0

 

Object

 

 

 

 

 

 

 

 

 

NetObject

 

 

 

 

 

 

 

DisplayObject

 

 

 

 

 

 

 

FocusObject

 

 

 

 

 

 

 

SSpread

 

 

 

高機能スプレッドシートを表示するクラスです。

 

画面表示例

 

 

Docクラスによるプリンタ出力

 

印刷の対象外です。

 

デフォルトプロパティとValueType

 

デフォルトプロパティはありません。ValueTypeの指定は無効です。

 

文字コードについて

 

このクラスでは、基本の文字コードはUnicodeとして扱われ、文字列を扱うプロパティ、メソッドは、一部例外を除きUString型となります。

String型のオブジェクトを設定した場合は、UString型に自動的に変換されてから処理されます。

文字数や文字の位置指定を行う場合は、全角/半角などの区別なく文字単位となります。

 

SSpreadクラス独自のプロパティ実行順序仕様

 

通常のCRSの実行ではスクリプトで設定したプロパティは一連のスクリプトの実行が完了した後、GUI側に反映されます。

そのためプロパティの設定順序はGUIの反映には関係せず、また逆にプロパティを参照する場合もGUIの状態をリアルタイムには反映していません。

 

しかし、SSpreadクラスは従来VisualBasicで作成されたクライアント・サーバ型アプリケーションからの移植を強く意識して設計されており、他のクラスと異なる動作ルールで実行されます。

プロパティの設定、読み出しはリアルタイムにGUIにアクセスされ、メソッドを含め、記述の順序に従い実行されます。

 

(記述例)

Col = 2;
Row = 3;
BgColor = $BLUE;
Col = 4;
Row = 5;
BgColor = $RED;

 

通常のCRSの実行では後から記述されたCol=4Row=5BgColor=$REDのみが有効ですが、SSpreadクラスではCol=2Row=3BgColor=$BLUEが記述どおり実行され、さらにCol=4Row=5BgColor=$REDが実行されます。

 

そのため、プロパティの記述順序が実行速度に直接影響します。

一般的に対象となるセルの数が増えるほど速度は低下しますので、スプレッドシート全体へ反映されるプロパティ・メソッドはなるべくセルデータの少ない段階で実行するほうが効率的です。

 

ColRowCol2Row2BlockModeプロパティ

 

ColRowCol2Row2プロパティは、スプレッドシートに対して各種の処理を行う前に、処理の対象となる範囲を設定するために使用します。

これらのプロパティを事前に設定する必要がある対象には、BackColorForeColorFontBoldFontItalicCellTypeTextValueLockFormulaプロパティなどがあります。

 

処理対象

設定するプロパティ

セル

ColRow

列(1列)

ColRow-1

列の範囲

ColCol2

列ヘッダ(1列)

ColRow0

列ヘッダ全体

Col-1)、Row0

RowCol-1

行の範囲

RowRow2

行ヘッダ(1列)

Col0)、Row

行ヘッダ全体

ColRow-1

セルブロック

ColRowCol2Row2BlockMode$TRUE

スプレッドシート全体

Col-1)、Row-1

 

セルブロックを指定するためにCol2Row2プロパティを有効にするには、BlockMode$TRUEに設定します。

セルブロックへの設定後にBlockMode$TRUEにしたままにすると、以降の処理で意図しない範囲に影響することがあるため、使用後は$FALSEに戻すことを推奨します。

 

異なる値が設定された複数のセルを指定して値を参照した場合は、原則として代表的な1つのセルの値が返ります。特定のセルの値を確実に取得するには、Colプロパティ、Rowプロパティでセルを明確に指定してから参照してください。

 

このクラス独自の色の扱い(#RRGGBB形式)

 

このクラスでは、標準の色定数$BLACK$FF0000など)とは別に、任意の色が利用できます。

色情報は以下の形式の文字列で表します。

"#RRGGBB"

1文字目:#

2,3文字目(RR):赤色成分を表す16進数(00FF)

4,5文字目(GG):緑色成分を表す16進数(00FF)

6,7文字目(BB):青色成分を表す16進数(00FF)

(例)オレンジ色

"#FFA500"

 

色定数に定義されている色の場合、文字列形式を指定しても色定数が優先されます。

$STDを指定すると、標準の色が設定されます。

 

インデックスプロパティ

 

一部のプロパティで、対象となるデータのインデックス番号を指定して値を取得、設定するものがあります。(例:ColWidthRowHeightプロパティなど)

 

/* 取得例 */
var w = ColWidth(5);
var h = RowHeight(7);
/* 設定例 */
ColWidth(5) = w + 10;
RowHeight(7) = h + 10;

 

インデックス番号が、配列を表す [n](角括弧)ではなく、(n)(丸括弧)で囲まれている点に注意してください。

これらのプロパティの実体はメソッドであり、メソッドの引数としてインデックス番号を渡すことで、プロパティのように動作します。

Biz/Desiger上ではメソッドとして表示されます)

本マニュアルでは、このような機能を持つプロパティを「インデックスプロパティ」と呼び、プロパティとして扱っています。

 

参照演算子(&=)によるプロパティ設定の制限

 

Biz/Browser特有の演算子である「参照演算子」は、代入式の右辺に変更があった場合に、変更後の値を自動的に左辺に代入します。

(例)

Width &= ^.Width - 10;
Height &= ^.Height - 10;

 

しかし、このクラスのプロパティには、変更することで他のプロパティの値に影響を与えたり、設定順序によって動作が異なったりするプロパティが数多くあります。

このようなプロパティで参照演算子を使用した場合、代入先(左辺)の処理の対象や、参照先(右辺)の値が他のプロパティの状態によって異なる場合があるため、意図した結果を得ることは困難です。

 

プロパティ一覧の「&=」の列が「×」になっているプロパティが対象となります。

(代表的な例として、ColRowプロパティを事前に設定するプロパティが挙げられます。)

これらのプロパティは、参照演算子の左辺、右辺のどちらにも使用しないでください

 

(使用できない例)

Col = 2;
Row = 3;
BackColor &= ^.Label1.BgColor; /* 左辺に指定する */
Col = 4;
Row = 5;
^.Label1.BgColor = $RED; /* 参照演算子によって列45セルの背景色が変更されてしまう */
 
Col = 6;
Row = 7;
^.Label2.BgColor &= BackColor; /* 右辺に指定する */
Col = 8;
Row = 9;
BackColor = $GREEN; /* 参照演算子によってLabel2の背景色が変更されてしまう */

 

なお、これらのプロパティはBiz/Designerのプロパティビューからは設定できないように除外されていますので、CRSプログラムで直接指定してください。

 

セルブロックに適用するフォントの制限

 

FontBoldFontFaceFontItalicFontKindFontNameFontSizeFontStrikethruFontUnderlineの各プロパティを使用し、BlockMode$TRUEにしてセルブロックへの設定の適用をする場合、個々のセルのフォント設定は破棄され、ColRowプロパティが指すセルを基準にフォントが再作成されます。

つまり、あるセルを「太字」にした状態で、そのセルを含むセルブロックに「斜体」を適用すると、「太字」が解除されます。

フォントの設定では、最初に大きな範囲から共通の設定を行い、個別の設定はその後で行ってください。

 

セルのデータ型ごとの値の取得、設定

 

CellTypeプロパティで設定したセルのデータ型により、セルの値の取得、設定は以下のようになります。

セルのデータ型

データ/状態

Textプロパティ

Valueプロパティ

文字型

-

文字列

文字列

ラベル型

-

文字列

文字列

日付型

"2011/04/27"

"2011/04/27"

"20110427"

時刻型

"11:25:03 pm"

"11:25:03 pm"

"232503"

数値型

"10,000.00"

"10,000.00"

"10000.00"

通貨型

"\10,000.00"

"\10,000.00"

"10000.00"

パーセント型

"15%"

"15%"

"0.15"

指数型

"2.22E+05"

"2.22E+05"

"222222"

マスク型

"22-45-76"

"22-45-76"

"224576"

コマンドボタン

押されている

"1"

"1"

押されていない

"0"

"0"

設定しない

空白文字列

"0"

チェックボックス

チェックされている

"1"

"1"

チェックされていない

"0"

"0"

灰色状態

"2"

"2"

設定しない

空白文字列

"0"

コンボボックス

-

選択された要素の文字列データ

選択された要素のインデックス

(未選択時は空白文字列)

 

下限値、上限値による範囲指定の注意点

 

TypeNumberMinTypeNumberMaxなどの値の範囲を指定するプロパティは、入力操作を制限することができますが、値が範囲内になることを保証するものではありません。入力操作によって不正な値が一時的に設定できたり、CRSスクリプトから不正な値を設定できることがあります。

入力操作により不正な値が設定されるとEditErrorイベントが発生します。値のチェックを確実に行いたいときはCRSスクリプトで制御してください。

 

イベントハンドラ内でのプロパティ参照における注意点

 

Biz/Browserのイベントは、イベントキューに蓄積されたあと順次実行されます。したがって、イベントの発生タイミングや発生順序は、常に同じであるという保証はありません。

このクラスで発生するイベントでも、イベントハンドラ内で参照するプロパティの値が実行状況によって異なる場合があります。例えば、LeaveCellイベントはアクティブセルの移動によって発生しますが、OnLeaveCellイベントハンドラ内でActiveColActiveRowプロパティを参照した場合に、移動前または移動後のどちらの値が取得できるかは不定です。

このクラスのイベントは、イベントハンドラの引数(Eventオブジェクト)の子オブジェクトとして関連する情報が渡されますので、必ずそれらの情報を使用してください。

 

Function OnLeaveCell(e) {
    ^.Label1.Value = ActiveCol; /* 不定 */
    ^.Label2.Value = ActiveRow; /* 不定 */
    ^.Label3.Value = e.Col;     /* 移動前の列番号 */
    ^.Label4.Value = e.Row;     /* 移動前の行番号 */
    ^.Label5.Value = e.NewCol;  /* 移動後の列番号 */
    ^.Label6.Value = e.NewRow;  /* 移動後の行番号 */
}

 

セルのデータ型ごとのプロパティ継承

 

CellTypeプロパティや、名前が"Type"で始まるプロパティは、セルのデータ型に関する設定を行います。これらのプロパティは、セルのデータ型ごとに最後に設定した内容が記憶され、次回以降の同じデータ型のセルへの設定時にプロパティが継承されます。詳細については、CellTypeプロパティを参照してください。

 

標準のキーボード操作とKeyDownイベント

 

スプレッドシートは、以下のキーで操作できます。

キー

動作

方向キー

アクティブセルを移動

Shiftキーで選択範囲を拡張

PageUpPageDownキー

アクティブセルをページ単位で上下に移動

Ctrlキーで左右に移動

HomeEndキー

アクティブセルを行内の最初、最後のセルに移動

Ctrlキーで全体の最初、最後のセルに移動

Tabキー

ProcessTabプロパティで設定する

Spaceキー

Ctrlキーで行を選択

Shiftキーで列を選択

Ctrl+Shiftキーで全選択

Enterキー

EditEnterActionプロパティで設定する

Escキー

選択解除など

Deleteキー

ProcessDeleteプロパティで設定する

 

AutoClipbordプロパティを$TRUEにすると、以下のキー操作も使用できます。

キー

動作

Ctrl + 'C'キー、Ctrl+ Insertキー

コピー

Ctrl + 'X'キー、Shift + Deleteキー

切り取り

Ctrl + 'V'キー、Shift + Insertキー

貼り付け

 

上記のキーは、押下による親FormKeyDownイベントが発生しません。同じForm上にあるButtonなどのAltKeyプロパティへの指定も無効になります。

 

それ以外のキーは、データの編集に使われなければ親Form KeyDownイベントが発生します。キー操作による制御は、親FormOnKeyDownイベントハンドラで行ってください。

 

Excel形式インポート・エクスポート機能について

 

SSpreadExcel形式ファイルからの読込、およびExcel形式に出力するためのメソッドを装備しています。

この機能はSSpreadが扱うセル情報とExcelの扱うセル情報を可能な限りマッチングさせようとしますが、各々扱える機能に差異があるため入出力結果は完全には一致しないことにご注意ください。

またマクロ(VBA)、グラフ、その他画像などもSSpreadでは入出力することはできません。

極端に大きなサイズや多数の計算式があるファイルの場合、インポート・エクスポートする際に非常に時間がかかり、処理が遅くなる、または停止(応答なし)する場合がありますのでご注意ください。

 

出力時の罫線の対応

SSpreadで指定される罫線と出力される罫線の関係は以下の通りです。

定数

説明

Excelでの罫線

$CellBorderStyleSolid

実線

太線

$CellBorderStyleDash

破線

太破線

$CellBorderStyleDot

点線

点線

$CellBorderStyleDashDot

一点鎖線

太一点鎖線

$CellBorderStyleDashDotDot

二点鎖線

太二点鎖線

$CellBorderStyleFineSolid

ドットが1つおきの線

実線

$CellBorderStyleFineDash

細かい破線

破線

$CellBorderStyleFineDot

細かい点線

点線

$CellBorderStyleFineDashDot

細かい一点鎖線

一点鎖線

$CellBorderStyleFineDashDotDot

細かい二点鎖線

二点鎖線

 

ビジュアルスタイル有効時の制限

 

特にありません

 

スケーリング時の注意点

 

表示されるコンテンツはスケーリングの対象外となります

 

 

プロパティ | メソッド | イベント | オペレータ

 



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る