PowerTools SPREAD for Windows Forms 8.0J
子ビューの入力マップ

通常、既定の入力マップを変更すると、変更はアクティブシートにのみ適用されます。階層表示の場合、変更は親階層のシートにのみ適用され、階層を展開して表示される子階層のシートには適用されません。階層表示では、親階層と子階層は、それぞれ異なるワークブックとして扱われます。子階層の入力マップを変更するには、FpSpreadクラスのChildWorkbookCreatedイベントを使用します。このイベントは、子階層のワークブックが作成されたときに発生し、このイベントを使用すると、作成された子階層のワークブックを参照し、その入力マップを変更できます。

子ビューを含む階層

サンプルコード

次のサンプルコードは、子階層の入力マップをカスタマイズします。子階層のシートで[Enter]キーを押すと、アクティブセルを次の行に移動するように設定します。

C#
コードのコピー
private void Form1_Load(object sender, 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(0, true);
    fpSpread1.ActiveSheet.ExpandRow(1, true);
}
void fpSpread1_ChildWorkbookCreated(object sender, FarPoint.Win.Spread.ChildWorkbookCreatedEventArgs e)
{
    // 子階層(e.Workbook。ターゲットは子SpreadView)における[Enter]キーの入力マップを変更します。
    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);
}
Visual Basic
コードのコピー
Private Sub Form1_Load(ByVal sender As System.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 = 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(0, True)
    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
    ' 子階層(e.Workbook。ターゲットは子SpreadView)における[Enter]キーの入力マップを変更します。
    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
関連トピック

 

 


© 2004-2015, GrapeCity inc. All rights reserved.