DioDocs for Excel
DioDocs for Excel
フォームコントロール
機能 > フォームコントロール

フォームコントロールは、ワークシートに追加して、使用可能なセルやデータ範囲との対話を可能にするオブジェクトです。これらのフォームコントロールを使用して、エンドユーザーからの入力を受け入れたり、選択できるオプションを提供したりすることができます。従って、これらのコントロールは、フィードバックフォームや同意書などの作成に役立ちます。

DioDocs for Excel では、Grapecity.Documents.Excel.Forms 名前空間にて9つのフォームコントロールが提供されており、サポートされている各フォームコントロールのクラスとインタフェースが含まれています。

以下の表は、サポートしているフォームコントロールとその画像の一覧です。

フォームコントロール スナップショット
ボタン
ドロップダウン
チェックボックス
スピンボタン
リストボックス
オプションボタン
グループボックス
ラベル
スクロールバー

すべてのフォームコントロールには、Grapecity.Documents.Excel.Forms 名前空間の IControl インタフェースにて提供されるいくつかの共通機能があります。これらのコントロールは Enabled プロパティを false に設定することで無効にすることができ、ユーザーはそのコントロールにフォーカスを移すことができなくなります。また、Locked プロパティを true に設定することで、ユーザーの入力を受け付けないようにコントロールをロックすることもできます。セルに合わせてコントロールを移動およびサイズ変更するかを設定するには、Placement プロパティを使用します。また、BringToFront プロパティおよび SendToBack プロパティをそれぞれ使用すると、コントロールの順序を変更し、前面に移動したり、背面に移動したりすることができます。

コントロールの追加および削除

DioDocs for Excel では、IWorksheet インタフェースの Controls プロパティを使用して、ワークシートにフォームコントロールを追加および削除することができます。ワークシートにフォームコントロールを追加するには、IControlCollection インタフェースの Add<ControlName> メソッドを使用します。例えば、AddButton メソッドはボタンコントロールを、AddDropdown メソッドはドロップダウンコントロールをワークシートに追加できます。つまり、各フォームコントロールごとに Add** メソッドがあり、すべてのメソッドはフォームコントロールの位置座標、幅、高さをパラメータとして受け取ります。

DioDocs for Excel には、ワークシートから特定のフォームコントロールを削除する IControl インタフェースのDelete メソッドがあります。ワークシートからすべてのコントロールを削除するには、IControlCollection インタフェースの Clear メソッドを使用します。

ワークシートにてフォームコントロールを追加および削除する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
var workbook = new Workbook();
IWorksheet ws = workbook.Worksheets["Sheet1"];

//コントロールを2つ追加します
var lblResolution = ws.Controls.AddLabel(12.6, 20.4, 49.2, 18.6);
lblResolution.Text = "Resolution";
lblResolution.PrintObject = true;

var btnNative = ws.Controls.AddButton(199.8, 21, 127.8, 17.4);
btnNative.Text = "Use native resolution";
btnNative.PrintObject = true;

//1番目のコントロールを削除します
ws.Controls[0].Delete(); 
                
//コントロールをすべて削除します
// ws.Controls.Clear()
        

セル範囲へのフォームコントロールのリンク

チェックボックスオプションボタンリストボックスドロップダウンスクロールバーなどの選択ベースのフォームコントロールには、ICellLinkControl インタフェースの LinkedCell プロパティがあり、フォームコントロールの値をセル範囲にリンクさせることができます。リンクされたセル範囲によって、ユーザーからの不正なデータ入力を避けるために、フォームコントロールに明確な値のセットを持つことができます。リンクされたセル範囲の値を編集するだけで、フォームコントロールの値を更新できますし、その逆も可能です。

セルの値をチェックボックスフォームコントロールにリンクさせる方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//セルの値をチェックボックスにリンクさせます
var checkBox1 = ws.Controls.AddCheckBox(54, 13.2, 64.2, 18); 
checkBox1.LinkedCell = ws.Range["$A$2"]; 

フォームコントロールの検索

DioDocs for Excel では、ワークシートにフォームコントロールを配置する際に、0 から始まるインデックスを使用します。ワークシート内のフォームコントロールは、その名前やタイプを使用して検索することができます。名前にてフォームコントロールを検索するには、nameOf 演算子を使用して名前を指定し検索します。また、タイプにてコントロールを検索するには、FormControlType 列挙体を使用します。

名前でコントロールを検索する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//コントロールを追加します
var lblResolution = ws.Controls.AddLabel(12.6, 20.4, 49.2, 18.6); 
lblResolution.Text = "Resolution";
lblResolution.PrintObject = true;
lblResolution.Name = nameof(lblResolution);
                
//コントロールを名前で検索します
Console.WriteLine(ws.Controls[nameof(lblResolution)].Name);
        

タイプでコントロールを検索する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//タイプ別にコントロールを取得し、タイプ維持したまま幅を変更します
foreach (var ctl in ws.Controls)
{
 switch (ctl.FormControlType)
  {
  case FormControlType.Button: 
           ctl.Width = 70;
           break;
 case FormControlType.CheckBox:
          ctl.Width = 60;
          break;
  }
}

フォームコントロールの PDF への出力

フォームコントロールを含むワークシートは、Workbookクラスの Save メソッドを使用して PDF 形式にエクスポートすることができます。フォームコントロールを PDF 形式で出力するには、特定のフォームコントロールの PrintObject プロパティを true に設定する必要があります。このプロパティのデフォルト値は、ボタンフォームコントロールを除くすべてのフォームコントロールにて true に設定されています。

フォーム コントロールを含むワークシートは、Workbook クラスの Save メソッドを使用して PDF、XLSX、XLSM、HTML、.sjs、または SSJSON 形式にエクスポートすることができます。 PNG、SVG、JPG、または GIF 形式にエクスポートする場合は、IWorksheet インタフェースの ToImage メソッドを使用します。DsExcel では、エクスポート時にフォーム コントロールを含めたり除外したりするには、IControl インタフェースの Visible プロパティを使用します。フォーム コントロールの Visible プロパティを false に設定すると、そのフォームコントロールを PDF、XLSX、XLSM、.sjs、SSJSON、HTML、PNG、SVG、JPG、または GIF 形式にエクスポートすることができません。

IControl インタフェースの Visible プロパティは、フォームコントロールのエクスポートの際にも同じ効果を発揮します。フォームコントロールの Visible プロパティが false に設定されている場合、そのフォームコントロールは PDF、XLSX、XLSM いずれの形式にもエクスポートされません。

フォーム コントロールをエクスポートから除外する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
// ドロップダウンを追加します。 
var dropDown = ws.Controls.AddDropDown(28.8, 81.8, 103.8, 31.4);
dropDown.PrintObject = true;
dropDown.Items.Add(new DropDownItem("Item 1"));
dropDown.Items.Add(new DropDownItem("Item 2"));
dropDown.Items.Add(new DropDownItem("Item 3"));
dropDown.SelectedIndex = 0;

// Visible を false に設定します。
dropDown.Visible = false;
メモ: DioDocs for Excel では、フォームコントロールが PNG、SVG、JPG、GIF、HTML、または PDF 形式の静的画像としてエクスポートされます。

フォームコントロールを PDF内の 対話的なフォームフィールドにエクスポートする方法については、「フォームフィールドへのフォームコントロールのエクスポート 」を参照してください。

図形としてのフォームコントロールの使用

フォームコントロールも図形の一種です。よって、特定の図形がフォームコントロールであるかどうかを確認するには、ShapeType 列挙体の FormControl メンバを使用します。さらに、図形がフォームコントロールの場合、IShape インタフェースの Control プロパティを使用して、その図形に関連付けられたフォームコントロールを取得することができます。また、IControl インタフェースの ShapeRange プロパティを使用して、フォームコントロールに関連付けられた図形を取得することができます。

フォームコントロールを図形として使用する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//フォームコントロールを追加します
var button1 = ws.Controls.AddButton(50, 100, 120, 40); 
var buttonShape1 = button1.ShapeRange[0]; 
                
//複製します
buttonShape1.Duplicate();
                        
//サイズ変更および移動します        
buttonShape1.Left = 66.6;
buttonShape1.Top = 22.8;
buttonShape1.Width = 155.4; 
buttonShape1.Height = 49.2;
                
//削除します
buttonShape1.Delete();

オプションボタングループの追加

DioDocs for Excelでは、2 つ以上のオプションボタンをグループボックスにグループ化して、複数の選択肢から1つの選択肢を選択できるようにすることができます。DioDocs for Excel は、オプションボタンとグループボックスの境界によって識別される IOptionButton インタフェースの GroupBox プロパティ (読み取り専用) を使用して、オプションボタンをグループ化します。オプションボタンがグループボックス内にある場合、GroupBox プロパティは最初に一致したグループボックスです。一致するグループボックスがない場合、オプションボタンはデフォルトグループ (ワークシート) にあります。

2 つ以上のオプションボタンが同じグループにある場合、他のオプションボタンの選択状態に影響し、同じグループ内に一度に1つのオプションボタンのみを選択できます。オプションボタンの LinkedCell プロパティも設定することができます。このプロパティを使用すると、グループ内の1つのオプションボタンに対して値を定義し、同じグループ内の他のオプションボタンで値を使用できます。

メモ:グループボックスまたはオプションボタンがフォーカスを失ったときに、各グループボックスコントロールで Cut(Left,Top) を呼び出すことで、オプションボタングループを明示的に再計算します。

次のサンプルコードは、リンクされたオプションボタンを備えた2つの個別のグループボックスを追加する方法を示します。

C#
コードのコピー
// ワークブックを初期化します。
var workbook = new Workbook();

// ワークシートを作成します。
IWorksheet ws = workbook.Worksheets["Sheet1"];

// オプションボタンとグループボックスをワークシートに追加します。
var rngB2 = "オプションボタンはグループボックスごとにグループ化されます。";
ws.Range["B2"].Value = rngB2;
ws.Range["B13:C13"].Value = new object[,] {
    { "値", 1d}
};

ws.Range["E13:F13"].Value = new object[,] {
    { "値", 2d}
};

ws.Range["A:A"].ColumnWidthInPixel = 37d;

// 最初のグループボックスを追加します。
var group1 = ws.Controls.AddGroupBox(29.75, 48.2, 136.5, 113.99);
group1.Text = "グループ 1";

// オプションボタンを追加します。
var optionButton2 = ws.Controls.AddOptionButton(39.45, 67.1, 98, 15.60);
            
// リンクされたセルを設定します。
optionButton2.LinkedCell = ws.Range["C13"];
optionButton2.IsChecked = true;

ws.Controls.AddOptionButton(39.45, 97.5, 98, 17.40);

ws.Controls.AddOptionButton(39.45, 131.2, 98, 17.5);

// 2 番目のグループボックスを追加します。
var group2 = ws.Controls.AddGroupBox(191.95, 48.2, 136.5, 113.99);
group2.Text = "グループ 2";

// オプションボタンを追加します。
ws.Controls.AddOptionButton(200.35, 65.7, 117.6, 18.5);

var optionButton7 = ws.Controls.AddOptionButton(200.35, 95.99, 117.6, 21.28);
            
// リンクされたセルを設定します。
optionButton7.LinkedCell = ws.Range["F13"];
optionButton7.IsChecked = true;

ws.Controls.AddOptionButton(200.35, 129.2, 117.6, 21.40);

// ワークブックを保存します。
workbook.Save("OptionButtonsBasicUsage.xlsx");

メモ:重なっているグループボックスにオプションボタンを追加することは、Microsoft Excel と同じではない場合があります。

制限事項