デフォルトのキーマップ(入力マップ)を変更する

文書番号 : 38982     文書種別 : 使用方法     登録日 : 2015/07/03     最終更新日 : 2015/07/03
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
下記にキーボード入力時のデフォルトの動作および入力マップの変更方法について記載します。

1.デフォルトの動作について
SPREADには入力マップとアクションマップが用意されており、これらによってユーザーからのキーボード入力と特定アクションが対応付けられています。

例えば、[Enter]キーの動作はデフォルトで定義されており、アクティブセルへの[Enter]キー押下によってセルは編集状態へと移行します。

キーコードEnter
アクション編集を開始
アクション名StartEditing


2.入力マップの変更方法について
[Enter]キーにデフォルトで定義された「編集を開始」の動作を、「次行への移動」とするにはInputMapクラスを使用して、[Enter]キーとアクションをマッピングします。次のサンプルコードでポイントとなる箇所は、青字で記されたキーコードと、赤字で記されたアクション名です。

【変更後のアクション】
キーコードEnter
アクションアクティブセルを1行下に移動します
アクション名MoveToNextRow


◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

  Dim im As FarPoint.Win.Spread.InputMap

  '非編集セルでの[Enter]キーを「次行へ移動」とします
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

  '編集中セルでの[Enter]キーを「次行へ移動」とします
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, System.EventArgs e)
{
  FarPoint.Win.Spread.InputMap im;

  //非編集セルでの[Enter]キーを「次行へ移動」とします
  im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

  //編集中セルでの[Enter]キーを「次行へ移動」とします
  im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);
}


青字で記されたキーコードの指定の際に、Keystrokeコンストラクタの第1引数をKeys.Enter、第2引数をKeys.Noneと指定しています。[Shift]+[Tab]キーのように、[Shift]キーや[Control]キーとの組み合わせのキーコードを指定する場合には、修飾キーをこの第2引数に指定します。

例えば、[Shift]+[Tab]キーにデフォルトで定義された「アクティブセルを1列左に移動」の動作を、「アクティブセルを1行上に移動」とするには次のサンプルコードのように記述します。

【変更後のアクション】
キーコードShift + Tab
アクションアクティブセルを1行上に移動
アクション名MoveToPreviousRowWrap


◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

  Dim im As FarPoint.Win.Spread.InputMap

  '非編集セルでの[Shift]+[Tab]キーを「1行上に移動」とします
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousRowWrap)

  '編集中セルでの[Shift]+[Tab]キーを「1行上に移動」とします
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousRowWrap)

End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, System.EventArgs e)
{
  FarPoint.Win.Spread.InputMap im;

  //非編集セルでの[Shift]+[Tab]キーを「1行上に移動」とします
  im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousRowWrap);

  //編集中セルでの[Shift]+[Tab]キーを「1行上に移動」とします
  im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousRowWrap);
}