2017年8月28日
WPF
技術情報

SPREAD for WPF 2.0J 新機能紹介(2)- よりExcelライクになったドラッグフィル

こんにちは!WPF担当の高橋です。
前回に続き「よりExcelライクに」をテーマに、今回は新バージョンで強化されたドラッグフィルのご紹介です。

Excelで、セルの右下にマウスポインタを合わせてドラッグ、連続データを設定できるオートフィル機能を普段から活用されている方も多いと思います。新規データを大量に入力するようなケースで重宝しますよね。SPREADでも、初期バージョンから、Excelのオートフィルに該当する機能(SPREADではドラッグフィルと呼称)を提供しています。

ozu0828_1
(画像はSPREAD)

コントロールのCanUserDragFillプロパティをTrueに設定すると、SPREADでドラッグフィルを有効にできますが、新バージョンでは、このドラッグフィルがパワーアップし、数字を含む文字列の連続コピー、および既定フィル動作の制御が可能になりました。

数字を含む連続コピー

数字を含む文字列ですが、以下、いずれのパターンにも対応しています。より多様な連続データに対応できるようになりました。

文字列 + 数字 数字 + 文字列 文字列 + 数字 + 文字列
「ABC-001」をドラッグします。

ozu0828_2

「1組」をドラッグします。

ozu0828_3

「第1回」をドラッグします。

ozu0828_4

既定フィル動作の制御

SPREADの既定動作もExcel同様、フィルハンドルをドラッグすると連続データを設定します。また、[Ctrl]キーを押しながらドラッグするとセルをコピーします。この既定動作を、コントロールのDefaultDragFillTypeプロパティで変更できるようになりました。

既定動作の変更は、フィルメニューを非表示に設定する場合、より効力を発揮するように思います。
Excelライクなフィルメニューですが、アプリケーションの要件によっては、こうしたメニューでユーザーが動作を変更することを禁止したい場合があります。このような場合、フィルメニューを非表示に設定して既定動作を要件どおりに設定すると、ドラッグフィルの動作を完全に制御できます。

以下の画像では、フィルメニューを非表示に、ドラッグフィルの既定動作をコピーに設定しています。

操作中 操作終了
ozu0828_5
セルがコピーされる
ozu0828_6
フィルメニューは非表示

以下、フィルメニューを非表示に設定し、ドラッグフィルの既定動作をコピーに設定するサンプルコードです。
フィルメニューを非表示に設定するには、WPFのスタイルを使用します。XAMLを使用すると、以下のように簡潔に記述できます。

サンプルコード

<!--ドラッグフィルの既定動作をコピーに設定-->
<sg:GcSpreadGrid CanUserDragFill="True" DefaultDragFillType="CopyCells">
 <sg:GcSpreadGrid.Resources>
   <!--フィルメニューを非表示-->
   <Style TargetType="sg:DragFillSmartTag">
    <Setter Property="Visibility" Value="Collapsed"/>
   </Style>
 </sg:GcSpreadGrid.Resources>
</sg:GcSpreadGrid>