SSpread

Q1 11
カーソルカラーの設定をしたい
[内容]
カーソルが当たっているセルの背景色を変更するにはどうすればよいのか

A1 11
カーソルカラーの設定は、以下2パターンで実装する事ができます。

(1) 選択されたセルまたはセルブロックの背景色設定するSelBackColorプロパティの利用
(2) アクティブセルを移動したときに発生するLeaveCellイベントを利用した背景色の設定

選択された行や列、セルブロックの背景色を設定するのであれば、(1)の方法で簡単に実装ができます。但し、SelBackColorプロパティではアクティブセルの背景色は変更されません。
アクティブセルの背景色を変更する、または、カーソルが当たっているアクティブセルの列や行の背景色を変更する場合は、 (2)の方法がお勧めです。

(2)の方法で利用するLeaveCellイベントは、元のアクティブセルの位置と次のアクティブセルの位置を取得する事ができますのでイベント発生時に、元のアクティブセルと次のアクティブセルの背景色を切替える事でカーソルカラーの設定が可能です。以下のサンプルコードをご参照ください。

[(2)サンプルコード]
  /* 変更前の背景色 */
  Array cell_color;
  
  ・・・・・・(略)
  
  SSpread SSpread2 {
    X = 343;
    Y = 185;
    Width = 318;
    Height = 214;
    
    Function OnLeaveCell(e) {
      /* 移動前セルの位置 */
      var old_col;
      var old_row;
      
      /* 移動後セルの位置 */
      var new_col;
      var new_row;
          
      /* 不正なセルへ移動した場合 */
      if (e.NewCol < 0 || e.NewRow < 0) {
          return;
      }
      /* セル・行・列のカーソルカラー設定 */
      switch(^.set_color){
          case 0:
              old_col = e.Col;
              old_row = e.Row;
              new_col = e.NewCol;
              new_row = e.NewRow;
              break;
          case 1:
              old_col = -1;
              old_row = e.Row;
              new_col = -1;
              new_row = e.NewRow;
              break;
          case 2:
              old_col = e.Col;
              old_row = -1;
              new_col = e.NewCol;
              new_row = -1;
              break;
      }
      /* カーソルが外れたセルの背景色変更 */
      Col = old_col ;
      Row = old_row;
      if(^.cell_color[0] != null || ^.cell_color[0] != ""){
      /* 変更前のカーソルカラーを適用 */
          BackColor = ^.cell_color[0];
      }else{
          BackColor = $STD;
      }
      /* カーソルセルの背景色変更 */
      Col = new_col;
      Row = new_row;
      /* 変更前のカーソルカラーを保持 */
      ^.cell_color[0] = BackColor; 
      BackColor = $BLUE;
    }
  }

実際の挙動については、CRSファイル形式のサンプル
  「カーソルカラーの設定をしたい(Sspd50_011.zip)」
をご確認ください。

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