デフォルトのキーマップ(入力マップ)を変更する
対象製品
SPREAD for Windows Forms 8.0J
詳細
下記にキーボード入力時のデフォルトの動作および入力マップの変更方法について記載します。
1.デフォルトの動作について
SPREADには入力マップとアクションマップが用意されており、これらによってユーザーからのキーボード入力と特定アクションが対応付けられています。
例えば、[Enter]キーの動作はデフォルトで定義されており、アクティブセルへの[Enter]キー押下によってセルは編集状態へと移行します。
2.入力マップの変更方法について
[Enter]キーにデフォルトで定義された「編集を開始」の動作を、「次行への移動」とするにはInputMapクラスを使用して、[Enter]キーとアクションをマッピングします。次のサンプルコードでポイントとなる箇所は、青字で記されたキーコードと、赤字で記されたアクション名です。
【変更後のアクション】
◎サンプルコード(VB)
◎サンプルコード(C#)
青字で記されたキーコードの指定の際に、Keystrokeコンストラクタの第1引数をKeys.Enter、第2引数をKeys.Noneと指定しています。[Shift]+[Tab]キーのように、[Shift]キーや[Control]キーとの組み合わせのキーコードを指定する場合には、修飾キーをこの第2引数に指定します。
例えば、[Shift]+[Tab]キーにデフォルトで定義された「アクティブセルを1列左に移動」の動作を、「アクティブセルを1行上に移動」とするには次のサンプルコードのように記述します。
【変更後のアクション】
◎サンプルコード(VB)
◎サンプルコード(C#)
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
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);
}
{
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
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);
}
{
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);
}