MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > シート > クリップボード機能 |
シートでは、いくつかのクリップボード操作(コピー、切り取り、貼り付けなど)のデフォルトの動作が自動的に設定されます。これはコントロールに組み込まれた機能で、たとえば、ユーザーがシートのセルに対してコピーや貼り付けを実行する場合、クリップボードの内容をどのように操作するかなど、アプリケーションで動作を設定することもできます。ここではクリップボード機能の設定方法について説明します。
|
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に設定されている場合にのみ有効になります。
PasteSkipInvisibleRange がTrueに設定されている場合 | PasteSkipInvisibleRange が False (デフォルト値)に設定されている場合 |
---|---|
次のサンプルコードは、非表示範囲にデータを貼り付けない方法を示します。
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クラスには、クリップボード処理用にさまざまなメソッドが用意されています。 必要に応じて、以下のメソッドを実行できます。
複数範囲にデータをコピー/貼り付けを行うには、IFeature インターフェースの RichClipboard プロパティを使用します。 このプロパティは、新しいスタイルシステムでのみ実装できます。
このコピー/貼り付けオプションの複数範囲選択は、RichClipboard プロパティが true に設定されている場合にのみ有効になります。
C# |
コードのコピー
|
---|---|
// 新しいシステムスタイル。 fpSpread1.LegacyBehaviors &= ~LegacyBehaviors.Style; // RichClipboard プロパティを設定します。 fpSpread1.Features.RichClipboard= true; |
Visual Basic |
コードのコピー
|
---|---|
' 新しいシステムスタイル。 FpSpread1.LegacyBehaviors = FpSpread1.LegacyBehaviors And Not LegacyBehaviors.Style ' RichClipboard プロパティを設定します。 FpSpread1.Features.RichClipboard = True |
SPREAD では、ワークシートにセルの内容をコピーして貼り付けることができます。「コピーと貼り付け」オプションを使用すると、デフォルトですべての属性がコピーされます。
単に直接貼り付ける代わりに、「形式を選択して貼り付け」を使用して、クリップボードの内容を特定の方法で貼り付けることもができます。このオプションは、データをクリップボードからワークシートに貼り付ける時の動作を制御する場合に特に便利です。たとえば、「形式を選択して貼り付け」を使用すると、数式を含まずに値のみを貼り付けたり、データを入れ替えたり、貼り付けプロセス中に条件付き書式を含めたりすることができます。
コードの使用
次のサンプルコードは、IRangeのPasteSpecialメソッドを使用して、セルの内容と書式を貼り付ける方法を示しています。さまざまな貼り付け操作を使用するには、RichClipboard を True に設定する必要があります。
C# |
コードのコピー
|
---|---|
// セルの内容を追加します fpSpread1.Features.RichClipboard = true; fpSpread1.Features.EnhancedShapeEngine = true; IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet; TestActiveSheet.SetValue(0, 0, new object[,] { { 1, 2, 3, null, 5 } }); var rangeA1C1 = TestActiveSheet.Cells["A1:C1"]; rangeA1C1.FormatConditions.AddIconSetCondition(); var cmt = TestActiveSheet.Cells["E2"].AddComment("visible comment"); cmt.Visible = true; var thread = TestActiveSheet.Cells["D2"].AddCommentThreaded("thread"); thread.AddReply("reply1"); thread.AddReply("reply2"); var cellB2 = TestActiveSheet.Cells["B2"]; cellB2.Borders.LineStyle = GrapeCity.Spreadsheet.BorderLineStyle.Thick; cellB2.Borders.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Red); // 特定のセルの内容をコピーして貼り付けます TestActiveSheet.Cells["A1:E2"].Copy(true); TestActiveSheet.Cells["E8"].PasteSpecial(GrapeCity.Spreadsheet.PasteType.AllExceptBorders, GrapeCity.Spreadsheet.PasteSpecialOperation.None, false, false); |
VB |
コードのコピー
|
---|---|
' セルの内容を追加します fpSpread1.Features.RichClipboard = True fpSpread1.Features.EnhancedShapeEngine = True Dim TestActiveSheet As IWorksheet = fpSpread1.AsWorkbook().ActiveSheet TestActiveSheet.SetValue(0, 0, New Object(,) { {1, 2, 3, Nothing, 5}}) Dim rangeA1C1 = TestActiveSheet.Cells("A1:C1") rangeA1C1.FormatConditions.AddIconSetCondition() Dim cmt = TestActiveSheet.Cells("E2").AddComment("visible comment") cmt.Visible = True Dim thread = TestActiveSheet.Cells("D2").AddCommentThreaded("thread") thread.AddReply("reply1") thread.AddReply("reply2") Dim cellB2 = TestActiveSheet.Cells("B2") cellB2.Borders.LineStyle = GrapeCity.Spreadsheet.BorderLineStyle.Thick cellB2.Borders.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Red) ' 特定のセルの内容をコピーして貼り付けます TestActiveSheet.Cells("A1:E2").Copy(True) TestActiveSheet.Cells("E8").PasteSpecial(GrapeCity.Spreadsheet.Past eType.AllExceptBorders, GrapeCity.Spreadsheet.PasteSpecialOperation.None, False, False) |
実行時に「形式を選択して貼り付け」オプションの使用
実行時に「形式を選択して貼り付け」オプションを使用するには、次の手順に従います。
C# |
コードのコピー
|
---|---|
fpSpread1.Features.RichClipboard = true;
ribbonBar1.Attach(fpSpread1);
|
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.Features.RichClipboard = True
ribbonBar1.Attach(FpSpread1)
|
メモ:「貼り付け」 メニューのオプションは、選択したデータの種類によって異なります。たとえば、選択したデータに条件付き書式が設定されていない場合、「すべての結合されている条件付き書式」 オプションが表示されないため、「形式を選択して貼り付け」ダイアログが無効になります。 |
Spread では、コピーしたセル データを貼り付けるため、次のオプションがあります。
選択オプション名 | 貼り付けられる内容 |
---|---|
貼り付け | リンクされたデータを含むすべてのセルの内容と書式設定を貼り付けます。 |
数式 | 数式のみを貼り付けます。 |
数式と数値の書式 | 数式と数値の書式オプションのみを貼り付けます。 |
元の形式を保持 |
ソース データに適用されたテーマを使用したすべてのセルの内容と書式設定を貼り付けます。 |
罫線なし |
セルの罫線を除いて、すべてのセルの内容と書式設定を貼り付けます。 |
元の列幅を保持 | すべてのセルの内容、書式、および列幅を貼り付けます。 |
入れ替え | コピーしたセルの内容を貼り付けるときに、行と列を入れ替えます。 行のデータは列に、列のデータは行に貼り付けられます。 |
値の貼り付け | セルに表示されている値のみを貼り付けます。 |
値と数値の書式 | 値と数値の書式設定のみを貼り付けます。 |
値と元の書式 | 値と数値の色とフォント サイズの書式のみを貼り付けます。 |
書式設定 | 数値とコピー元の書式設定を含む、セルの書式設定すべてを貼り付けます。 |
リンク貼り付け | 貼り付けたデータをコピー元のデータにリンクします。コピーしたデータへのリンクを貼り付けると、コピーしたセルまたはセル範囲への絶対参照がコピー先に入力されます。 |
図 | 図のコピーを貼り付けます。 |
リンクされた図 | 元のセルへのリンク付きの図のコピー を貼り付けます。(元のセルが変更されると、その変更が、貼り付けられ図にも表示されます)。 |
列幅 | 列または列の範囲の幅を、別の列または列の範囲に貼り付けます。 |
条件付き書式の結合 | コピーしたセルの条件付き書式設定とペースト領域に適用されている条件付き書式設定を組み合わせます。 |
Spread では、次の「「形式を選択して貼り付け」オプションを使用できます。
オプション名 | 貼り付けられる内容 |
---|---|
すべて | リンクされたデータを含む、すべてのセルの内容と書式を貼り付けます。 |
数式 | 数式のみを貼り付けます。 |
値 | セルに表示されている値のみを貼り付けます。 |
書式 | セルの書式を貼り付けます。 |
コメントとメモ | セルに添付されたコメントトとメモのみを貼り付けます。 |
入力規則 | データ入力規則のみを貼り付けます。 |
コピー元のテーマを使用してすべて貼り付け | コピー元のデータに適用されたテーマを使用して、セルの内容と書式をすべて貼り付けます。 |
罫線を除くすべて | セルの罫線を除くいて、セルの内容と書式を貼り付けます。 |
列幅 | 列または列の範囲の幅を、別の列または列の範囲に貼り付けます。 |
数式と数値の書式 | 数式と数値の書式のみを貼り付けます。 |
値と数値の書式 | 値と数値の書式のみを貼り付けます。 |
すべての結合されている条件付き書式 | すべてのセルの内容と書式。コピーしたセルの条件付き書式と貼り付け領域に適用されている条件付き書式を組み合わせます。 |
「演算」 オプションは、コピー元の領域とコピー先の領域の間で値を数学的に結合します。「形式を選択して貼り付け」ダイアログで「書式」、「コメントとメモ」、「入力規則」フィールドが選択されている場合、「演算」オプションが無効になることに注意してください。
オプション名 | 貼り付けられる内容 |
---|---|
なし | 算術演算を行わずに、コピー元の領域の内容を貼り付けます。 |
加算 | コピー元の領域の値を貼り付けコピー先の領域の値に加算します。 |
減算 | コピー先の領域の値からコピー元の領域の値を減算します。 |
乗算 | コピー先の領域の値とコピー元の領域の値を乗算します。 |
除算 | コピー先の領域の値をコピー元の領域の値で除算します。 |
次の表は、追加の「形式を選択して貼り付け」オプションについて説明します。
オプション名 | 貼り付けられる内容 |
---|---|
空白セルを無視する | コピー元の領域に空白のセルがあるときに、コピー先の領域内の値または属性が空白で置き換えられないようにします。 |
行/列の入れ替え | 貼り付ける時に、コピーしたセルの内容を入れ替えます。行のデータは列に貼り付けられ、またはその逆に変更されます。コピーされた範囲にスパークラインが含まれている場合、入れ替えが無効になります。 |
リンク貼り付け |
データに図ある場合、コピー元の図にリンクします。 コピー元の図が変更されると、貼り付けれた図も変更されます。 「リンク貼り付け」ボタンは、次の条件が満たされる場合にのみ有効になります。
|