SSpread

Q1 38
SSpreadのレイアウトを初期化せずにCSVデータをセットしたい
[内容]
オペレータでCSVデータをSSpreadにセットするとレイアウトが初期化されてしまう。
レイアウトを初期化せずにデータをセットするにはどうすればよいか。


A1 38
SSpreadクラスのClipプロパティと、CSVDocumentクラスのSaveメソッド、
NullConverterコンストラクタを利用し、レイアウトを初期化せずにデータを
セットする事が可能です。

[サンプルイメージ]
初期表示時


(1)オペレータでSSpreadにデータをセットした場合


(2)ClipプロパティでSSpreadにデータを貼りつけた場合

[(2)のサンプルコード]
・・・(略)・・・
/* SSpreadに表示するCSVデータ */
CSVDocument data;
data << CSV{ 
             0001,カレーライス,800,864
             0002,ラーメン,700,756
             0003,ハンバーグ,1000,1080
             0004,寿司,1500,1620
             0005,カルボナーラ,1200,1296
             0006,もり蕎麦,600,648
             0007,麻婆豆腐,900,972
             0008,サンドウィッチ,500,540
           };
・・・(略)・・・
Button Button1 {
   X = 16;
   Y = 332;
   Width = 232;
   Height = 64;
   Title = "データセット";

   Function OnTouch( e ) { 
     var data2 = new ByteArray();
     /* data2を引数にしてWriterオブジェクトを作成する */
     var tsv_write = new NullConverter(data2);  ・・・@
     /* TSVデータをWriterオブジェクトへ出力する */
     ^.data.Save(tsv_write,"d=\t");  ・・・A
     /* Writerオブジェクトを閉じる */
     tsv_write.Close();
     /* ByteArrayデータを文字列型に変換し、変数に格納する */
   var data3  =  data2.ToString();
   /* SSpreadへデータだけ貼り付ける */
   ^.SSpread1.Col = 1;
   ^.SSpread1.row = 1;
   ^.SSpread1.Col2 = ^.SSpread1.MaxCols;
   ^.SSpread1.row2 = ^.SSpread1.MaxRows;
   ^.SSpread1.Clip = data3;  ・・・B
 }
}

Clipプロパティで貼り付けできるデータ形式はTSV(タブ区切り)です。
よって、CSVDocumentクラスのSaveメソッドを利用してCSVデータをTSVデータに
変換して処理します。

● ポイント ●
@ Saveメソッドの第1引数にCSVDocumentオブジェクトをそのまま指定することができないため、NullConverterコンストラクタを仲介してWriterオブジェクトを作成
A SaveメソッドでCSVデータをTSVデータに変換
B 変換されたTSVデータをClipプロパティを利用してSSpreadへ貼り付け

実際の挙動については、CRSファイル形式のサンプル
 「SSpreadのレイアウトを初期化せずにCSVデータをセットしたい(Sspd50_038.zip)」
をご確認ください。

管理番号:Sspd50_038
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser V・Biz/Designer V TIPS集 トップへ