SSpread

Q1 23
特定列のドラッグ&ドロップ操作を無効にしたい 
[内容]
AllowColMoveプロパティを利用して列のドラッグ&ドロップを許可しているが、特定の列だけドラッグ&ドロップ操作を無効にしたい
 
A1 23
Biz/Browser V ver 5.0.2.0から追加されたAfterColMoveイベントと、SwapColRangeメソッドを組合わせて実装する事が可能です。

AfterColMoveイベントは、ドラッグ&ドロップで列の移動が行われた後に発生し、移動する列の列番号 (Col)と移動先の列の列番号(ColDest)を取得する事ができます。
取得したこれらの列番号を比較し、SwapColRangeメソッドを利用して、列の入替えを行えば、
特定列のドラッグ&ドロップを無効にしたような動作を実現できます。

詳細は、AfterColMoveイベントとSwapColRangeメソッドを利用した以下サンプルコードをご覧ください。

[サンプルコード]
 SSpread SSpread1 {
  X = 16;
  Y = 69;
  Width = 565;
  Height = 221;
    
  /* スクロールせずに固定表示する列の数を設定 */
  ColsFrozen  = 2; 
  
  /* 使用できる列の総数を設定 */
  MaxCols = 10;
  /* 使用できる行の総数を設定 */
  MaxRows = 5;
  
  /* 列のドラッグ&ドロップを有効に設定 */
  AllowColMove  = $TRUE;
  
  /* ユーザーがドラッグ&ドロップで列を移動した際の処理*/
  Function OnAfterColMove( e ) {
   
   /* 移動前列番号を取得 */
   var bfCol = e.Col;
   /* 移動先列番号を取得 */
   var afCol = e.ColDest;

   if(afCol > bfCol ){
    /* 移動行はドロップした行の前に移動されるため、列番号を-1する */
    afCol = afCol-1;
    
    /* 1列目、2列目を移動した場合、列を元に戻す */
    if (bfCol < 3) {
     while (bfCol != afCol){
      SwapColRange(afCol -1 , afCol-1 , afCol);
      afCol -- ;
     }
    }
   }else{
    /* 1列目、2列目へ列を移動した場合、列を元に戻す */
    if(afCol < 3){    
     while (bfCol != afCol){
      SwapColRange(afCol +1 , afCol+1 , afCol);
      afCol ++ ;
     }
    }
   }
  }

 ・・・・(略)
}

CRSファイル形式のサンプル
  「特定列のドラッグ&ドロップ操作を無効にしたい(Sspd50_023.zip)
で実際の動作をご確認いただけます。

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