MESCIUS SPREAD for Windows Forms 15.0J
クリップボード機能

シートでは、いくつかのクリップボード操作(コピー、切り取り、貼り付けなど)のデフォルトの動作が自動的に設定されます。これはコントロールに組み込まれた機能で、たとえば、ユーザーがシートのセルに対してコピーや貼り付けを実行する場合、クリップボードの内容をどのように操作するかなど、アプリケーションで動作を設定することもできます。ここではクリップボード機能の設定方法について説明します。

  • 切り取りまたは貼り付け対象のセル範囲内に、ロックされたセルが含まれている場合は、このクリップボード操作は中止されます。 本製品の.NET バージョンは、COMバージョンとクリップボード操作の処理方法が異なります。
  • クリップボード関連の機能で、編集中のセルでの動作を設定できるものがあります。SuperEditBaseクラスのAutoMenuプロパティを使用すると、編集モード中にセル内にポップアップメニューを表示するかどうかを設定できます。また、SuperEditBaseクラスのAllowClipboardKeysプロパティを使用すると、ユーザーがショートカットキーを使用してクリップボードを操作できるかどうかを設定できます。
クリップボード操作の無効化

FpSpreadクラスのAutoClipboardプロパティを使用すると、エンドユーザーがクリップボード操作を実行するためにショートカットキーを使用できるかどうかを切り替えることもできます。コントロールでのクリップボード操作をすべて無効にするには、FpSpreadクラスのAutoClipboardプロパティをFalseに設定します(デフォルト値はTrue)。貼り付け([Ctrl]+[V])など、いくつかのクリップボード操作を無効にすることもできます。これには、ショートカットキーおよびクリップボード操作に対する入力マップ定義([Ctrl]+[C]、[Ctrl]+[V]、[Ctrl]+[X])を無効にします。

クリップボード処理からのヘッダの除外

クリップボード操作において、ヘッダを処理に含めるかどうかを設定できます。 これには、FpSpreadクラスのClipboardOptionsプロパティ、およびClipboardOptions列挙体を使用します。 FpSpreadクラスのClipboardOptionsプロパティを設定すると、クリップボード操作の実行時に行ヘッダまたは列ヘッダを処理に含めるかどうかを指定できます。 デフォルト値はAllHeadersであり、全ヘッダが処理に含められます。

クリップボードの内容の取得

シート上でコピーされた値は、.NET Frameworkの提供するClipboardクラスによって管理されます。 このClipboardクラスの各処理を使用することで、クリップボードの内容を取得できます。

Loadイベントの発生時にSheetViewクラスのClipboardCopyメソッドを呼び出すと、セルデータをクリップボードにあらかじめコピーできます。 この後GetDataObjectメソッドを呼び出すと、これらのクリップボードの内容を取得できるので、テキストの書式を判断する場合などに便利です。

貼り付けの無効化

シート上で貼り付けが実行されると([Ctrl]+[V])、FpSpreadクラスのClipboardPastingイベントが発生します。 特定の状況では、このイベントをキャンセルすることで貼り付けを無効にできます。 貼り付けを無効にするには、貼り付けの実行されたタイミングを取得して、アクションをキャンセルします。

貼り付け対象の変更

セルがクリップボードにコピーまたは切り取られると、デフォルトでは、値、書式、数式を含むすべてのデータ属性が貼り付け対象となります。 入力マップの定義を変更すると、たとえば値だけを貼り付け対象とすることができます。 デフォルト設定はSpreadActionsクラスのClipboardPasteAllフィールドであり、データの全属性が貼り付け対象となります。ClipboardPasteOptions列挙体を使用すると、ユーザーがクリップボードの内容を貼り付ける場合に、貼り付けられるデータの種類を設定できます。

非表示範囲へのデータの貼り付けの無効化

Features クラスのPasteSkipInvisibleRange プロパティを使用して、非表示のセル、行、および列にクリップボードの値を貼り付けるかどうかを設定できます。このプロパティは、ブール値を受け入れ、デフォルトではFalse に設定されます。

このオプションは、RichClipboard がTrueに設定されている場合にのみ有効になります。

When PasteSkipInvisibleRange = True When PasteSkipInvisibleRange = False (default value)
Pasting Data in Invisible Range Skip Pasting Data in Invisible Range

次のサンプルコードは、非表示範囲にデータを貼り付けない方法を示します。

C#
コードのコピー
fpSpread1.LegacyBehaviors = LegacyBehaviors.None;
fpSpread1.Features.RichClipboard = true;
fpSpread1.ActiveSheet.Rows[7].Visible = false;
fpSpread1.ActiveSheet.Rows[10, 11].Visible = false;
fpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true;
Visual Basic
コードのコピー
fpSpread1.LegacyBehaviors = LegacyBehaviors.None
fpSpread1.Features.RichClipboard = true
fpSpread1.ActiveSheet.Rows(7).Visible = false
fpSpread1.ActiveSheet.Rows(10, 11).Visible = false
fpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true
コードからのクリップボード操作の実行

SheetViewクラスには、クリップボード処理用にさまざまなメソッドが用意されています。 必要に応じて、以下のメソッドを実行できます。

参照

 

 


© MESCIUS inc. All rights reserved.