MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > シート > フォームコントロールの使用 |
SPREAD for Window Forms は、ボタン、コンボ ボックス、チェックボックス、スピンボタン、リストボックス、オプションボタン、グループボックス、ラベル、スクロールなど、ダイアログシート用のいくつかのフォームコントロールを揃えています。これらのフォームコントロールを使用すると、データを操作できるワークシートにオブジェクトを挿入することができます。また、フォームコントロールを使用することで、Spread ワークシート内のセルデータを簡単に操作できます。
フォーム コントロールを追加するには、IShape インタフェースの AddFormControl メソッドを使用できます。このメソッドは、パラメータとしてFormControl 列挙型を渡します。
次のサンプル コードは、ワークシートにボタンフォーム コントロールを追加します。
C# |
コードのコピー
|
---|---|
// 拡張シェイプエンジンを true に設定します fpSpread1.Features.EnhancedShapeEngine = true; // ボタン コントロールを追加します fpSpread1.AsWorkbook().ActiveSheet.Cells[0, 0].Value = "Button"; var btn = fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddFormControl(FormControl.Button, 80, 40, 100, 20); btn.ControlFormat.Enabled = false; btn.Name = "Button Shape"; btn.CanMove = Moving.None; btn.CanSize = Sizing.Width; |
Visual Basic |
コードのコピー
|
---|---|
' 拡張シェイプエンジンを true に設定します fpSpread1.Features.EnhancedShapeEngine = True ' ボタン コントロールを追加します fpSpread1.AsWorkbook().ActiveSheet.Cells(0, 0).Value = "Button" Dim btn = fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddFormControl(FormControl.Button, 80, 40, 100, 20) btn.ControlFormat.Enabled = False btn.Name = "Button Shape" btn.CanMove = Moving.None btn.CanSize = Sizing.Width |
上述と同様に、AddFormControlメツッド を使用して他のコントロールを追加し、特定のコントロールに対する適切な列挙型パラメータを渡すこともできます。
ワークシートを表すIWorksheet インタフェースを使用して、ワークシートにフォーム コントロールを追加することをできます。これを行うには、IWorksheet インタフェースによってが提供するプロパティを使用します。
Form Control UI | Using the API | ||||||||
Button |
|
||||||||
ComboBox |
|
||||||||
CheckBox |
|
||||||||
OptionButton |
|
||||||||
ListBox |
|
||||||||
SpinButton |
|
||||||||
GroupBox |
|
||||||||
Label |
|
||||||||
Scrollbar |
|
SPREAD のフォーム コントロールの主な機能は、LinkedCell プロパティを使用して、フォーム コントロールの値をセルにリンクできることです。
LinkedCell プロパティは、コントロールの値にリンクされているワークシート範囲を設定します。例えば、次のサンプル コードは、コンボ ボックスからアイテムを選択する方法と、それが A1 セルの値にどのように影響するかを示します 。コンボ ボックスから項目を選択した後、 A1 セルの値への影響を示しています。
C# |
コードのコピー
|
---|---|
var dropDown = fpSpread1.AsWorkbook().ActiveSheet.DropDowns.Add(70, 170, 105, 20); dropDown.AddItem("Sales"); dropDown.AddItem("Tech"); dropDown.AddItem("Management"); dropDown.LinkedCell = "A1"; |
Visual Basic |
コードのコピー
|
---|---|
Dim dropDown = fpSpread1.AsWorkbook().ActiveSheet.DropDowns.Add(70, 170, 105, 20) dropDown.AddItem("Sales") dropDown.AddItem("Tech") dropDown.AddItem("Management") dropDown.LinkedCell = "A1" |
IFormControl インタフェースのClickイベントには、コントロールをクリックするときに発生しますする Click イベントがあります。例えば、ComboBox フォームコントロールでもに対して、 DropDown_Click イベントを呼び出すことができます。
次のサンプル コードは、ComboBox コントロールをクリックして、特定のセル範囲から取得されたアイテムのを含んだドロップダウンリストを開く方法を示しています開きます。
C# |
コードのコピー
|
---|---|
public Form1() { InitializeComponent(); fpSpread1.Features.EnhancedShapeEngine = true; // セル A1 からセルA5まで に値を追加します fpSpread1.AsWorkbook().ActiveSheet.Cells["A1"].Value = 1; fpSpread1.AsWorkbook().ActiveSheet.Cells["A2"].Value = 2; fpSpread1.AsWorkbook().ActiveSheet.Cells["A3"].Value = 3; fpSpread1.AsWorkbook().ActiveSheet.Cells["A4"].Value = 4; fpSpread1.AsWorkbook().ActiveSheet.Cells["A5"].Value = 5; //最初のセルにドロップダウンを追加します var dropDown = fpSpread1.AsWorkbook().ActiveSheet.DropDowns.Add(70, 0, 100, 25); dropDown.ListFillRange = "A1:A5"; //ドロップダウン リストに指定された範囲を入力します dropDown.Click += DropDown_Click; //クリック イベントを処理します } /// <summary> /// ドロップダウンのClickイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DropDown_Click(object sender, EventArgs e) { MessageBox.Show("Changed"); } |
Visual Basic |
コードのコピー
|
---|---|
Class SurroundingClass Public Sub New() InitializeComponent() fpSpread1.Features.EnhancedShapeEngine = True ' セル A1 からセルA5まで に値を追加します fpSpread1.AsWorkbook().ActiveSheet.Cells("A1").Value = 1 fpSpread1.AsWorkbook().ActiveSheet.Cells("A2").Value = 2 fpSpread1.AsWorkbook().ActiveSheet.Cells("A3").Value = 3 fpSpread1.AsWorkbook().ActiveSheet.Cells("A4").Value = 4 fpSpread1.AsWorkbook().ActiveSheet.Cells("A5").Value = 5 ' 最初のセルにドロップダウンを追加します Dim dropDown = fpSpread1.AsWorkbook().ActiveSheet.DropDowns.Add(70, 0, 100, 25) dropDown.ListFillRange = "A1:A5" ' ドロップダウン リストに指定された範囲を入力します dropDown.Click += AddressOf DropDown_Click ' クリック イベントを処理します End Sub ' <summary> ' ドロップダウンのClickイベント ' </summary> ' <param name="sender"></param> /// <param name="e"></param> Private Sub DropDown_Click(ByVal sender As Object, ByVal e As EventArgs) MessageBox.Show("Changed") End Sub End Class |
Spreadでは、VBAコードをインポートして実行できる機能に対応していませんが、VBA関数と同名の関数がある場合、 独自のロジックを実行できます。ただし、関数が検出する されるために、次の条件を満たしている必要があります。
関数シグネチャは、次に示す 2 つのシグネチャのいずれかの形式に従う必要があります。
void Func();
または
void Func(object sender, EventArgs e);
関数は、FpSpead インスタンスを含んだフォームで宣言する必要があります。
したがって、XLSX ファイルを開くと、関連する VBA 関数名がインポートされます。また、関連付けられている関数を持つコントロールを操作すると、その関数も呼び出されます。
C# |
コードのコピー
|
---|---|
public static void Button3_Click() { MessageBox.Show("Assigned Macro Sample. Button3_Click"); } public static void Button_click(object sender, EventArgs args) { MessageBox.Show("Assigned Macro Sample Method. Button_click"); } |
Visual Basic |
コードのコピー
|
---|---|
Class SurroundingClass Public Shared Sub Button3_Click() MessageBox.Show("Assigned Macro Sample. Button3_Click") End Sub Public Shared Sub Button_click(ByVal sender As Object, ByVal args As EventArgs) MessageBox.Show("Assigned Macro Sample Method. Button_click") End Sub End Class |
マクロ関数がフォームに属していない場合があるとします。このような場合に、FpSpread.MacroResolve イベントを使用してマクロ関数を解決できます。また、前述のようにデリゲートシグネチャを宣言する必要があります。例えば、次のサンプルコードは、マクロを解決シナリオする方法を示しています。
C# |
コードのコピー
|
---|---|
private void Form1_Load(object sender, EventArgs e) { //フォームコントロールの拡張シェイプ エンジンを有効にします fpSpread1.Features.EnhancedShapeEngine = true; fpSpread1.OpenExcel("testmacro.xlsm"); fpSpread1.MacroResolve += FpSpread1_MacroResolve; } private void FpSpread1_MacroResolve(object sender, FarPoint.Win.Spread.DelegateResolveEventArgs e) { switch (e.Name) { case "Button_click": e.Delegate = (Action<object,EventArgs>)MacroHndlers.Button_click; break; case "Button3_Click": e.Delegate = (Action)MacroHndlers.Button3_Click; break; } } |
Visual Basic |
コードのコピー
|
---|---|
Class SurroundingClass Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) ' フォームコントロールの拡張シェイプ エンジンを有効にします fpSpread1.Features.EnhancedShapeEngine = True fpSpread1.OpenExcel("testmacro.xlsm") fpSpread1.MacroResolve += AddressOf FpSpread1_MacroResolve End Sub Private Sub FpSpread1_MacroResolve(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.DelegateResolveEventArgs) Select Case e.Name Case "Button_click" e.[Delegate] = CType(MacroHndlers.Button_click, Action(Of Object, EventArgs)) Case "Button3_Click" e.[Delegate] = CType(MacroHndlers.Button3_Click, Action) End Select End Sub End Class |
実行時に [コントロールの書式設定]ダイアログを呼び出すには、BuiltInDialogs クラスの FormatDialog メツッドを使用します。次のサンプルコードは、[コントロールの書式設定]ダイアログを呼び出す方法を示しています。
C# |
コードのコピー
|
---|---|
GrapeCity.Spreadsheet.FormControls.IScrollBar scrollBar = fpSpread1.AsWorkbook().ActiveSheet.ScrollBars.Add(100, 200, 20, 200); BuiltInDialogs.FormatControl(fpSpread1, scrollBar); |
Visual Basic |
コードのコピー
|
---|---|
Dim scrollBar As GrapeCity.Spreadsheet.FormControls.IScrollBar = fpSpread1.AsWorkbook().ActiveSheet.ScrollBars.Add(100, 200, 20, 200) BuiltInDialogs.FormatControl(fpSpread1, scrollBar) |
次の方法でも、実行時に [コントロールの書式設定]ダイアログを呼び出すことができます。
または
[コントロールの書式設定 ]ダイアログには、サイズ、保護、プロパティ、および代替テキストの 4 つの共通タブがあります。
メモ: フォーム コントロール ダイアログ内のタブ数は、使用するコントロールの種類によって異なります。 |