SSpread

Q1
SSpreadクラスを利用した表の作成(初級編その3) 
A1
(初級編その3)では画面上の表で行う操作(GUI)の実装を行います。
SSpreadクラスを利用した表上では、
   「Ctrl + C」キー押下でデータコピー
   「Ctrl + X」キー押下でデータ切り取り
   「Ctrl + V」キー押下でデータ貼り付け
といった標準のキーボード操作が可能ですが、上記のキーで操作できるものはデータのみでセルの書式の操作はできません。
本TIPSでは、データと書式をあわせたコピー及び貼り付け操作の実装方法を紹介します。

【SSpread上でのコピー・貼り付け操作(GUI)実装】
 
  [サンプルコード]
/* 選択されたセルブロックの範囲格納用 */
 Array bk_cell;
 /* コピ対象範囲の格納用 */
 Array cp_cell;
  ・・・・・・・(略)

 SSpread SSpread1 {
  X = 14;
  Y = 137;
  Width = 565;
  Height = 440;
    ・・・・・・・(略)

  Function OnBlockSelected( e ) {
   /* 選択範囲の保持 */
   ^.bk_cell["sCol"] = e.BlockCol;
   ^.bk_cell["sRow"] = e.BlockRow;
   ^.bk_cell["eCol"] = e.BlockCol2;
   ^.bk_cell["eRow"]= e.BlockRow2;
  }
  Function OnRClicked( e ) {
   /* popupMenuメソッドを利用して右クリックメニューを実装 */
   var xml_txt = "<?xml version=\"1.0\" encoding=\"SHIFT_JIS\"?>
   <menudefine>
   <menuitem id=\"1\" title=\"書式とデータをコピー\" />
   <separator />
   <menuitem id=\"2\" title=\"書式とデータを貼り付け\" />
   </menudefine>";
   var domimpl = new xmlDOMImplementation;
   var dom = domimpl.parse(xml_txt);
   /* XMLデータをpopupMenuへセット */
   var id = popupMenu(dom);

   if(id == 1){
   /*  セルブロック範囲をコピー対象として保存 */
    ^.cp_cell["sCol"] = ^.bk_cell["sCol"];
    ^.cp_cell["sRow"] = ^.bk_cell["sRow"];
    ^.cp_cell["eCol"] = ^.bk_cell["eCol"] ;
    ^.cp_cell["eRow"]= ^.bk_cell["eRow"];
   }else if(id == 2){
    /* クリックしたセルへコピーしたセルブロックを設定 */
    try{
     CopyRange(^.cp_cell["sCol"], ^.cp_cell["sRow"],
      ^.cp_cell["eCol"], ^.cp_cell["eRow"], e.Col, e.Row);
    }catch(e){
     //.MessageBox("正しくコピーができませんでした。");
    }
   }
  }
 }

上記のサンプルでは、セル・列・行・セルブロックが選択された時点で選択範囲を保持、右クリックメニューで「書式とデータをコピー」が選択された場合に、コピー対象範囲として保持しなおし右クリックメニューで「書式とデータを貼り付け」が選択された場合にSSpreadクラスのCopyRangeメソッドを利用して保持した範囲のコピーを実行するといった処理を行っています。
※CellTypeプロパティによるデータ型の指定はコピーされません。

実際の挙動については、CRSファイル形式のサンプル
    「SSpreadクラスを利用した表の作成 (初級編その3) (Sspd50_004.zip)」
をご確認ください。

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