多くの開発者に支持され続け、2017年2月にはとうとう2桁のバージョンとなる「SPREAD for Windows Forms 10.0J」と「SPREAD for ASP.NET 10.0J」が発売されました。
本記事では、「SPREAD for Windows Forms 10.0J」の新機能について紹介します。
対象読者
- Visual Basicまたは、C#を使ってプログラムを作ったことのある方
- 業務アプリケーションにグリッドを使用している方
- Microsoft Excelのような表計算コンポーネントに興味のある方
準備
本記事で紹介するサンプルを実行するには、Visual Studio 2012/2013/2015およびSPREAD for Windows Forms 10.0Jの製品版またはトライアル版のインストールが必要です。トライアル版はこちらからダウンロードしていただけます。
インストール後、Visual Studioのツールボックスにコントロールを追加する方法については、製品ヘルプで詳しく解説していますので、そちらをご覧ください。
充実した編集機能を持つセル型
SPREADの代表的な機能の一つとして、豊富なセル型が挙げられます。セル型は、あらゆるデータ型に適した入力方法や書式を提供します。入力や書式を強力に支援するといえば、グレープシティには「InputMan」という、SPREADと同じくらいの歴史を持つ代表的な製品があります。SPREADのセル型にもInputManが採用されており、Windows Formsでは7.0JでGcTextBox型セル、GcDateTime型セルが、8.0JではGcNumber型セルが追加されました。10.0Jでは、新たに4つのInputManセルを追加しています。
GcComboBox型セル(コンボボックス)
GcComboBox型セルは、画像と文字列を表示できるテキストボックスと、ドロップダウンされるマルチカラム対応のリストボックスから構成される多機能なコンボボックスを実現します。テキストボックスは、GcTextBox型セルと同等の書式を設定可能で、ひらがな、半角アルファベット、カタカナといった入力可能な文字種を指定でき、指定文字種に自動変換する機能も備えます。
ここでは、GcComboBox型セルの最大の特長であるマルチカラムのリストボックスを作成する方法を紹介します。マルチカラムは、複数のデータフィールドを持つデータソースが存在していれば簡単に実現します。GcComboBoxCellTypeクラスのDataSourceプロパティにデータソースを設定するだけです。選択した項目のどの列をセルに表示するかといった設定は、TextSubItemIndexプロパティに列のインデックスを指定します(マルチカラムで表現される各項目は「サブ項目」といいます)。列数に合わせてドロップダウンリストの幅を自動調整するには、DropDown.AutoWidthプロパティをTrueに設定します。
次のサンプルコードは、便宜的にDataTableを使用して曜日データを作成し、GcComboBox型セルに接続する例です。
' 複数列が存在するデータソースを作成します。 Dim table As New DataTable() table.Columns.Add("曜日") table.Columns.Add("日本語") table.Columns.Add("英語") table.Rows.Add("Sun", "日曜", "Sunday") table.Rows.Add("Mon", "月曜", "Monday") table.Rows.Add("Tue", "火曜", "Tuesday") table.Rows.Add("Wed", "水曜", "Wednesday") table.Rows.Add("Thu", "木曜", "Thursday") table.Rows.Add("Fri", "金曜", "Friday") table.Rows.Add("Sat", "土曜", "Saturday") ' GcComboBox型セルを作成します。 Dim gccombobox As New GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType() ' データソースを設定します。 gccombobox.DataSource = table ' ドロップダウンリストの幅を自動調整します。 gccombobox.DropDown.AutoWidth = True ' テキストボックスに表示するサブ項目のインデックスを指定します。 gccombobox.TextSubItemIndex = 1 ' SPREADの先頭列のセルをGcComboBox型セルに設定します。 FpSpread1.Sheets(0).Columns(0).CellType = gccombobox
// 複数列が存在するデータソースを作成します。 DataTable table = new DataTable(); table.Columns.Add("曜日"); table.Columns.Add("日本語"); table.Columns.Add("英語"); table.Rows.Add("Sun", "日曜", "Sunday"); table.Rows.Add("Mon", "月曜", "Monday"); table.Rows.Add("Tue", "火曜", "Tuesday"); table.Rows.Add("Wed", "水曜", "Wednesday"); table.Rows.Add("Thu", "木曜", "Thursday"); table.Rows.Add("Fri", "金曜", "Friday"); table.Rows.Add("Sat", "土曜", "Saturday"); // GcComboBox型セルを作成します。 GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType gccombobox = new GrapeCity.Win.Spread.InputMan.CellType.GcComboBoxCellType(); // データソースを設定します。 gccombobox.DataSource = table; // ドロップダウンリストの幅を自動調整します。 gccombobox.DropDown.AutoWidth = true; // テキストボックスに表示するサブ項目のインデックスを指定します。 gccombobox.TextSubItemIndex = 1; // SPREADの先頭列のセルをGcComboBox型セルに設定します。 fpSpread1.Sheets[0].Columns[0].CellType = gccombobox;
実行すると、先頭列にGcComboBox型セルが設定され、ドロップダウンを開くと、3つのカラムを持つリストが、項目を選択するとセルには日本語の曜日が表示されます。
もちろん、データソースに接続せずにリスト項目を追加することも可能です。製品ヘルプの「コレクションに追加(GcComboBox型セル)」にサンプルコード付きで解説していますので、参考にしてください。