MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集
展開された子階層上での入力マップを変更する

MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集 > キーボード操作(入力マップ) > 展開された子階層上での入力マップを変更する

変更された入力マップの定義は、基本的に親階層でのみ有効となります。 SPREADでは親階層と子階層それぞれが別のワークブックとして扱われるため、子階層上での入力マップを変更したい場合には、 SPREADコントロールの子ワークブックが作成されたときに発生するChildWorkbookCreatedイベントを実装し、子ワークブックに対して入力マップの変更を行う必要があります。具体的な実装方法については以下のサンプルをご参照ください。


 private void Form1_Load(object sender, System.EventArgs e)
 {

   //親階層における[Enter]キーの入力マップを変更します
   FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
   im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
   im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);
   im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
   im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

   DataSet ds = new DataSet();
   DataTable fpParent = new DataTable();
   DataTable fpChild1 = new DataTable();

   fpParent = ds.Tables.Add("SAMPLE");
   fpParent.Columns.AddRange(new DataColumn[] {new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32"))});
   fpParent.Rows.Add(new object[] {"Parent1", 0});
   fpParent.Rows.Add(new object[] {"Parent2", 1});

   fpChild1 = ds.Tables.Add("Child1");
   fpChild1.Columns.AddRange(new DataColumn[] {new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32"))});
   fpChild1.Rows.Add(new object[] {"Child1-1", 0});
   fpChild1.Rows.Add(new object[] {"Child1-2", 0});
   fpChild1.Rows.Add(new object[] {"Child1-3", 0});
   fpChild1.Rows.Add(new object[] {"Child2-1", 1});
   fpChild1.Rows.Add(new object[] {"Child2-2", 1});
   fpChild1.Rows.Add(new object[] {"Child2-3", 1});

   ds.Relations.Add("Relation1", fpParent.Columns["Column2"], fpChild1.Columns["Column2"]);
   fpSpread1.ActiveSheet.DataSource = ds;

   //子階層を展開します
   fpSpread1.ActiveSheet.ExpandRow(-1, true);

 }

 private void fpSpread1_ChildWorkbookCreated(object sender, FarPoint.Win.Spread.ChildWorkbookCreatedEventArgs e)
 {

   //子階層における[Enter]キーの入力マップを変更します(e.Workbook:子SpreadViewに対して)
   FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();

   im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
   im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);
   im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
   im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

 } 
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   '親階層における[Enter]キーの入力マップを変更します
   Dim im As New FarPoint.Win.Spread.InputMap
   im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
   im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)
   im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
   im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

   Dim ds As New DataSet
   Dim fpParent As DataTable
   Dim fpChild1 As DataTable
   fpParent = ds.Tables.Add("SAMPLE")
   fpParent.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
   fpParent.Rows.Add(New Object() {"Parent1", 0})
   fpParent.Rows.Add(New Object() {"Parent2", 1})

   fpChild1 = ds.Tables.Add("Child1")
   fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))})
   fpChild1.Rows.Add(New Object() {"Child1-1", 0})
   fpChild1.Rows.Add(New Object() {"Child1-2", 0})
   fpChild1.Rows.Add(New Object() {"Child1-3", 0})
   fpChild1.Rows.Add(New Object() {"Child2-1", 1})
   fpChild1.Rows.Add(New Object() {"Child2-2", 1})
   fpChild1.Rows.Add(New Object() {"Child2-3", 1})

   ds.Relations.Add("Relation1", fpParent.Columns("Column2"), fpChild1.Columns("Column2"))
   FpSpread1.ActiveSheet.DataSource = ds

   '子階層を展開します
   FpSpread1.ActiveSheet.ExpandRow(-1, True)

 End Sub

 Private Sub FpSpread1_ChildWorkbookCreated(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.ChildWorkbookCreatedEventArgs) Handles FpSpread1.ChildWorkbookCreated

   '子階層における[Enter]キーの入力マップを変更します(e.Workbook:子SpreadViewに対して)
   Dim im As New FarPoint.Win.Spread.InputMap

   im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
   im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)
   im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
   im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

 End Sub