クリップボードへのコピー時に非表示の行列を除外する方法

文書番号 : 28834     文書種別 : 使用方法     最終更新日 : 2010/04/02
文書を印刷する
対象製品
SPREAD for Windows Forms 5.0J
詳細
行フィルタリングや行列の非表示設定は、あくまで表示上でのみ有効となり実際のデータには影響を与えることはありません。
そのため、非表示セルを含む範囲を指定してコピーした場合には全てのデータがコピーされます。

非表示の行や列を除外し、クリップボードへコピーするには[Ctrl]+[C]キーのデフォルトの入力マップを変更し、
クリップボードへのコピーに非表示の行や列を除外するアクション(ClipboardCopyAsStringSkipHidden)を割り当てることで実現できます。

◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' 自動フィルタリング機能を有効にします
  FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = True

  FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.TextCellType
  FpSpread1.ActiveSheet.SetText(0, 0, "Fender")
  FpSpread1.ActiveSheet.SetText(1, 0, "Gibson")
  FpSpread1.ActiveSheet.SetText(2, 0, "Fender")
  FpSpread1.ActiveSheet.SetText(3, 0, "Ibanez")
  FpSpread1.ActiveSheet.SetText(4, 0, "Gibson")
  FpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA")
  FpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC")
  FpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus")
  FpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX")
  FpSpread1.ActiveSheet.SetText(3, 1, "AGS83B")
  FpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme")
  FpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II")
  FpSpread1.ActiveSheet.SetColumnWidth(0, 90)
  FpSpread1.ActiveSheet.SetColumnWidth(1, 210)

  ' [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
  Dim im As New FarPoint.Win.Spread.InputMap
  im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
  im.Put(New FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden)
End Sub

◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
  // 自動フィルタリング機能を有効にします
  fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;

  fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();
  fpSpread1.ActiveSheet.SetText(0, 0, "Fender");
  fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");
  fpSpread1.ActiveSheet.SetText(2, 0, "Fender");
  fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");
  fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");
  fpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA");
  fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");
  fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");
  fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");
  fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");
  fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");
  fpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II");
  fpSpread1.ActiveSheet.SetColumnWidth(0, 90);
  fpSpread1.ActiveSheet.SetColumnWidth(1, 210);

  // [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
  FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
  im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);}
}
関連情報
キーワード
「クリップボード」

この文書は、以前は次のFAQ IDで公開されていました : 13011