BOMデモで使用しているSPREAD/InputManPlusの実装におけるポイント

本記事では、「SPREAD for Windows Forms 19.0J(スプレッド)」と「InputManPlus for Windows Forms 13.0J(インプットマン)」のWebサイトで公開しているデモアプリケーションの「BOM(部品表)デモ」について、画面内でどのような機能が実装されているのかを紹介します。

SPREADのフィルタリング、Excelエクスポート、表示列の制御といった実装ポイントに加えて、InputManPlus(InputMan/PlusPak)のチェックボックスやファンクションキーの活用方法を整理しながら確認していきます。

使用するプロジェクト

本記事で取り上げるBOMデモのプロジェクトは、Visual Studio 2026とSPREAD、InputManPlus を使用したWindows Formsアプリケーションです。ZIPファイルには .NET Frameworkと .NETの両方のプロジェクトファイルが含まれています。

SPREADおよびInputManPlusを使用するには、製品版またはトライアル版をインストールし、ライセンス認証を行う必要があります。トライアル版は以下から入手できます。

Visual StudioでのWindows Formsプロジェクトの作成方法や、NuGetパッケージのインストール方法は、それぞれの製品のオンラインヘルプも参考にしてください。

BOMデモの画面は、左側に検索条件や出力設定、列表示の切り替え用 UI を配置し、右側に SPREADでBOMデータを表示する構成です。SPREADのデータ表示・フィルタ・Excel出力機能と、InputManPlusの入力・操作性向上の部品を組み合わせることで、業務画面としての操作性を実現しています。

SPREADの機能

コード、名称、発注日でフィルタリング

BOMデモでは、SPREADでExcelライクなフィルタを有効にしたうえで、InputManの入力コントロールから条件を渡して絞り込みを行っています。まずForm1_Loadイベントで次の設定を行っています。

  • AutoFilterModeプロパティをEnhancedContextMenuに設定
  • 「コード」列、「名称」列、「発注日」列のAllowAutoFilterプロパティを有効化
// Excelライクフィルタを使用
fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.EnhancedContextMenu;

// コード、名称、発注日のフィルタリングを有効
fpSpread1.ActiveSheet.Columns[1].AllowAutoFilter = true;
fpSpread1.ActiveSheet.Columns[2].AllowAutoFilter = true;
fpSpread1.ActiveSheet.Columns[8].AllowAutoFilter = true;

これにより、ワークシート上の列ヘッダからもフィルタできる状態になります。

さらに左側の検索UIでは、入力値に応じてFilterConditionCustomFilterItemを組み立て、対象列にFilterColumnDefinitionを追加しています。

  • コード:GcMaskコントロールを使用。入力する桁数に応じてBTA-*BTA-02-*のような形式へ整形して前方一致に近い検索を実現
  • 名称:GcTextBoxコントロールを使用。入力する値を使用して完全一致でフィルタ
  • 発注日:GcDateTimeコントロールを使用。発注日の検索条件は「年月」単位で指定(なお、デモのデータではすべて各月の1日が発注日として登録されています)

ここでの実装のポイントは、検索UIをInputManで作成し、実際のデータ抽出はSPREADのフィルタ機能に任せている点です。入力のしやすさとデータ一覧の操作性を分離できるため、保守しやすい構成になります。

Excelエクスポートはファイル形式やパスワードを指定

BOMデモのExcel出力は、単純に保存するだけではなく、ファイル形式とパスワードを画面から指定できるようになっています。出力設定エリアではInputManPlusの以下のコントロールを使用する構成です。

  • GcComboBoxコントロール(InputMan):保存形式の選択
  • GcTextBoxコントロール(InputMan):パスワード入力
  • GcCheckBoxコントロール(PlusPak):列ヘッダを含めるかの指定

保存処理ではSaveFileDialogを表示し、GcComboBoxコントロールの選択状態によって保存形式を切り替えています。

  • ExcelSaveFlags.UseOOXMLFormatを指定した*.xlsx
  • 従来形式の*.xls

さらに、列ヘッダを含める場合はExcelSaveFlags.SaveCustomColumnHeadersを追加し、最終的にfpSpread1.SaveExcel(fn, flag, gcTextBox_Password.Text)メソッドを呼び出しています。列ヘッダを含める設定を有効にしてエクスポートした Excel ファイルは次のようになります。

GcCheckBoxコントロールの状態に合わせてSPREADの表示列の制御

左側の「列の表示/非表示を変更」エリアでは、各列に対応したGcCheckBoxコントロールを並べ、チェック状態に応じてSPREADの列を表示・非表示に切り替えています。

制御はCheckedToColumnVisibleメソッドに集約されており、各チェックボックスのCheckedプロパティを見てActiveSheet.Columns[index].Hiddenプロパティを切り替えています。

private void CheckedToColumnVisible()
{
    // チェック状態で列の表示/非表示を設定
    if (gcCheckBox1.Checked)
    {
        fpSpread1.AsWorkbook().ActiveSheet.Columns[0].Hidden = false;
    }
    else
    {
        fpSpread1.AsWorkbook().ActiveSheet.Columns[0].Hidden = true;
    }

    // 以下、同様に各列の表示/非表示を切り替え
}

SPREADはデータ量が増えると列を絞って見せたい場面が多くなります。そこでPlusPakのGcCheckBoxコントロールを設定パネルとして使うことで、ユーザーが必要な情報だけを見ながら BOMを確認できるようになります。

InputManPlusの機能

GcCheckBoxコントロールに画像を割り当て

BOMデモでは、列の表示/非表示やExcel出力オプションの切り替えにGcCheckBoxコントロール(PlusPak)を使用しています。ここでのポイントは、標準チェックマークではなく、リソース画像を割り当てることで、チェック状態を視覚的に判別しやすくしている点です。

画像自体はProperties/Resourcesに登録されたChecked.pngUnchecked.pngを利用しています。これにより、チェック済み・未チェックの状態を画面上で判別しやすくできます。

ファンクションキーの画像をカスタマイズ

画面下部にはGcFunctionKeyコントロール(PlusPak)が配置されており、Ctrl+SのExcelエクスポートとCtrl+Fの検索をボタンとして表示しています。

GcFunctionKeyコントロールはショートカット操作を視覚化できるコントロールですが、画像を付けることで「何の操作なのか」がさらに直感的になります。特に業務アプリでは、キーボード操作に慣れたユーザーと、ボタン主体で操作するユーザーが混在しやすいため、操作内容を把握しやすい UI を実現できます。

ボタンクリック時の処理はgcFunctionKey1_ButtonClickイベントに集約されており、ボタン名によって Excel保存処理と検索ダイアログ表示を切り替えています。

private void gcFunctionKey1_ButtonClick(object sender, FunctionKeyButtonEventArgs e)
{
    if (e.Button.Name == "functionKeyButton1")
    {
        // SPREADをExcelに保存
        SaveToExcel();
    }
    else if (e.Button.Name == "functionKeyButton2")
    {
        // SPREADを検索
        fpSpread1.SearchWithDialogAdvanced("");
    }
}

さいごに

今回ご紹介した BOM デモは、SPREAD を単なる一覧表示として使うのではなく、InputManPlus と組み合わせて業務画面として操作性を高めている点が大きな特長です。

「入力」「検索」「一覧」「出力」のような画面構成を持つ業務アプリを検討されている場合は、SPREAD と InputManPlus の役割分担や連携パターンを確認できるサンプルとして、今回ご紹介した BOM デモをぜひ参考にしてください。

Webサイトでは製品の機能を手軽に体験できるデモアプリケーションやトライアル版も公開しておりますので、こちらもご確認ください。

また、ご導入前の製品に関するご相談、ご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /