Spread

Q

25

キー押下で選択行の特定列に値を入力したい
[内容]
Spreadにフォーカスが当たっているとき、Enterキーの押下で選択行の特定列にスクリプトから値を代入する

A 25
[解決方法]
Form上のオブジェクトでキーが押下されると発生する、Form.KeyDownイベントを利用します。
KeyDownイベントでは、押下されたキーの種類を取得できます。

ただしKeyDownイベントは、Form上のどのオブジェクトでキーが押下されたかは取得出来ません。
現在フォーカスが当たっているオブジェクトは、別に取得する必要があります。
サンプルソースではGetFocusイベントにてフォーカスの当たっているオブジェクトを取得し、
KeyDownイベントが発生した際、フォーカスが当たっているのがSpreadであるかを判断しています。

フォーカスが当たっているのがSpreadであれば、選択行の1列目へ「●」を表示します。
選択行の行番号はSpread.valueプロパティで取得できます。


[サンプルコード]

Form Form1{
 
 (略)
 
 Spread Spread1 {
   (略)
   SpreadRow SpreadRow1[0] {
   SpreadColumn SpreadColumn1;
   SpreadColumn SpreadColumn2;
   SpreadColumn SpreadColumn3;
  }
 }
 
 /*現在のフォーカス位置を取得*/
 Array nowobj;
 Function OnGetFocus( e ) {
  nowobj[0] = e.from;
 }
 
 /*Key押下で発生*/
 Function OnKeyDown( e ) {
  
  /*押下されたKeyがRetuenキーであるか*/
  if(e.key == "RETURN"){
   /*動作をspread上に限定*/
   if(nowobj[0] == Spread1){
    /*選択行の1列目に●を代入します*/
    Spread1.SpreadRow1[Spread1.Value].SpreadColumn1.Value = "●";
   }
  }
 }
}

実際の挙動をCRSファイル形式のサンプル
  「Spread 選択行の特定列に値を入力するサンプル(Spd_025.zip)
をご参照ください。

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