SSpread

Q1
「Delete」キー押下時に、セルの値をクリアしたい
[内容]
エクセルのように、セルを選択して「Delete」キー押下時、セルの値をクリアするにはどうすればよいか

A1
「Delete」キー押下時にセルの値のクリアを行う方法は、以下2つの方法があります。

(A) FormクラスのKeyDownイベントとSSpreadクラスのClearRangeメソッド
(指定範囲のデータを消去)を組み合わせる
「Delete」キー押下時のKeyDownイベントを利用し、SSpread上で選択されたセルまたはセルブロックのデータをClearRangeメソッドで消去する方法です。

[サンプルコード1]
 /* 削除範囲格納用 */
 Number c_col;
 Number c_row;
 Number c_col2;
 Number c_row2; 
 /* セルブロック判断用  0:セル/1:セルブロック */
 Number fg = 0;
 SSpread SSpread1 {
  X = 13;
  Y = 109;
  Width = 463;
  Height = 208;
  ColWidth(4) = 80;  
  Function OnBlockSelected( e ) {
   /* セルブロックを選択し終わったときに発生 */
   ^.c_col = e.BlockCol;
   ^.c_row = e.BlockRow;
   ^.c_col2 = e.BlockCol2;
   ^.c_row2 = e.BlockRow2;
   ^.fg = 1;
  }
 } 
 Function OnKeyDown( e ) {  
  /* フォーカスがあたっているオブジェクトを取得 */
  var obj = //.GetFocus();  
  /* DELETEキーが押下されたら値をクリアします */
  if( e.Key == "DELETE") {   
   /* フォーカスがあたっているオブジェクトが「SSpread」の場合 */
   if(obj instanceof SSpread){
    /* 単一セルが選択された場合 */
    if(fg == 0){
     c_col = obj.ActiveCol;
     c_row = obj.ActiveRow;
     c_col2 = obj.ActiveCol;
     c_row2 = obj.ActiveRow;
    }
    /* 選択範囲のセル(セルブロック)の値をクリア */
    obj.ClearRange(c_col, c_row, c_col2, c_row2, $TRUE);
    fg = 0;
   }
  }
 }
(B) SSpreadクラスのProcessDeleteプロパティを利用する
Biz/Browser V ver5.0.2.0より追加されたプロパティです。

SSpreadクラスのProcessDeleteプロパティへ指定する定数によってデータだけでなく、計算式のクリアも行う事ができます。

[ 定数 ]
$DeleteDataOnly ・・ データのみをクリア
$DeleteAll ・・ データと計算式(Formula)をクリア
$DeleteNone ・・ 「Delete」キーによるクリア操作無効

[サンプルコード2]
 SSpread SSpread1 {
  X = 36;
  Y = 47;
  Width = 313;
  Height = 195;
  
  /* 「Delete」キー押下時にセルのデータをクリアする */
  ProcessDelete = $DeleteDataOnly;
 }

実際の挙動については、CRSファイル形式のサンプル
  「「Delete」キー押下時に、セルの値をクリアしたい(Sspd50_007.zip)」
をご確認ください。

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