MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集
シート上の全シェイプオブジェクトを取得する

シート上に存在するシェイプオブジェクト数はContainedObjectsプロパティによって取得することができます。本サンプルでは、オブジェクト数の取得および全オブジェクトの背景色を変更する例を紹介します。

【実行例】変更前

変更前

変更後

変更後

  • 全てのシェイプオブジェクトクラスはFarPoint.Win.Spread.DrawingSpace.PSShapeクラスから継承しています。
  • シート上に複数のシェイプオブジェクトが存在する場合でも、選択可能なオブジェクトは常に一つだけとなります。(複数同時選択不可)
  • シェイプオブジェクトを処理する各関数(AddShapeメソッド:追加、GetShapeメソッド:取得、ClearShapesメソッド:全消去、RemoveShapeメソッド:削除)は SheetViewクラスメンバのみサポートしていますので、実装時には当クラスメンバを利用してください。 FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainerクラス(内部使用クラス)からも同等の機能が提供されていますが、当クラスメンバであるこれらの各メソッドは内部使用を目的としているため、動作についてはサポートしていません。

 private void Form1_Load(object sender, System.EventArgs e)
 {

   //シェイプオブジェクトを追加します
   FarPoint.Win.Spread.DrawingSpace.ArrowShape a = new FarPoint.Win.Spread.DrawingSpace.ArrowShape();
   a.Name = "shape-a";
   a.SetBounds(10, 10, 60, 60);
   FarPoint.Win.Spread.DrawingSpace.BannerShape b = new FarPoint.Win.Spread.DrawingSpace.BannerShape();
   b.Name = "shape-b";
   b.SetBounds(90, 10, 60, 60);
   FarPoint.Win.Spread.DrawingSpace.BurstShape c = new FarPoint.Win.Spread.DrawingSpace.BurstShape();
   c.Name = "shape-c";
   c.SetBounds(180, 10, 60, 60);
   fpSpread1.ActiveSheet.AddShape(a);
   fpSpread1.ActiveSheet.AddShape(b);
   fpSpread1.ActiveSheet.AddShape(c);

 }

 private void button1_Click(object sender, System.EventArgs e)
 {

   //シート上のシェイプオブジェクト数を取得します
   Console.WriteLine(fpSpread1.ActiveSheet.DrawingContainer.ContainedObjects.Count);

 }

 private void button2_Click(object sender, System.EventArgs e)
 {

   FarPoint.Win.Spread.DrawingSpace.PSShape ps;

   foreach (FarPoint.Win.Spread.DrawingSpace.PSShape obj in fpSpread1.ActiveSheet.DrawingContainer.ContainedObjects)
   {
      //各シェイプ名からGetShapeメソッド呼び出しによってオブジェクトを取得します
      ps = fpSpread1.ActiveSheet.GetShape(((FarPoint.Win.Spread.DrawingSpace.PSShape)(obj)).Name);
      //背景色を変更します
      ps.BackColor = Color.Red;
   }

 }
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   'シェイプオブジェクトを追加します
   Dim a As New FarPoint.Win.Spread.DrawingSpace.ArrowShape
   a.Name = "shape-a"
   a.SetBounds(10, 10, 60, 60)
   Dim b As New FarPoint.Win.Spread.DrawingSpace.BannerShape
   b.Name = "shape-b"
   b.SetBounds(90, 10, 60, 60)
   Dim c As New FarPoint.Win.Spread.DrawingSpace.BurstShape
   c.Name = "shape-c"
   c.SetBounds(180, 10, 60, 60)
   FpSpread1.ActiveSheet.AddShape(a)
   FpSpread1.ActiveSheet.AddShape(b)
   FpSpread1.ActiveSheet.AddShape(c)

 End Sub

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   'シート上のシェイプオブジェクト数を取得します
   Console.WriteLine(FpSpread1.ActiveSheet.DrawingContainer.ContainedObjects.Count())

 End Sub

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

      Dim ps As FarPoint.Win.Spread.DrawingSpace.PSShape

      For Each obj As FarPoint.Win.Spread.DrawingSpace.PSShape In FpSpread1.ActiveSheet.DrawingContainer.ContainedObjects
         '各シェイプ名からGetShapeメソッド呼び出しによってオブジェクトを取得します
         ps = FpSpread1.ActiveSheet.GetShape(CType(obj, FarPoint.Win.Spread.DrawingSpace.PSShape).Name)
         '背景色を変更します
         ps.BackColor = Color.Red
      Next

 End Sub

 

 


© MESCIUS inc. All rights reserved.