| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | using System;using System.Collections;using System.Drawing;using System.ComponentModel;using FastReport.Utils;namespace FastReport{  /// <summary>  /// This class represents a child band.  /// </summary>  /// <remarks>  /// Typical use of child band is to print several objects that can grow or shrink. It also can be done  /// using the shift feature (via <see cref="ShiftMode"/> property), but in some cases it's not possible.  /// </remarks>  public partial class ChildBand : BandBase  {    private bool fillUnusedSpace;    private int completeToNRows;    private bool printIfDatabandEmpty;        /// <summary>    /// Gets or sets a value indicating that band will be used to fill unused space on a page.    /// </summary>    /// <remarks>    /// If you set this property to <b>true</b>, the band will be printed several times to fill     /// unused space on a report page.    /// </remarks>    [Category("Behavior")]    [DefaultValue(false)]    public bool FillUnusedSpace    {      get { return fillUnusedSpace; }      set { fillUnusedSpace = value; }    }    /// <summary>    /// Gets or sets a value that determines the overall number of data rows printed by the data band.    /// </summary>    /// <remarks>    /// Using this property, you may complete the data band upto N data rows.    /// If the data band has less number of rows, this band will be used to print empty rows.    /// </remarks>    [Category("Behavior")]    [DefaultValue(0)]    public int CompleteToNRows    {      get { return completeToNRows; }      set { completeToNRows = value; }    }    /// <summary>    /// Gets or sets a value indicating that the band will be printed if its parent databand is empty.    /// </summary>    /// <remarks>    /// The child band with this property set to true, connected to a databand can be used to print "No data"     /// text if the databand has no rows.    /// </remarks>    [Category("Behavior")]    [DefaultValue(false)]    public bool PrintIfDatabandEmpty    {      get { return printIfDatabandEmpty; }      set { printIfDatabandEmpty = value; }    }    internal BandBase GetTopParentBand    {      get      {        BandBase band = this;        while (band is ChildBand)        {          band = band.Parent as BandBase;        }                return band;      }    }    /// <inheritdoc/>    public override void Assign(Base source)    {      base.Assign(source);      ChildBand src = source as ChildBand;      FillUnusedSpace = src.FillUnusedSpace;      CompleteToNRows = src.CompleteToNRows;      PrintIfDatabandEmpty = src.PrintIfDatabandEmpty;    }    /// <inheritdoc/>    public override void Serialize(FRWriter writer)    {      ChildBand c = writer.DiffObject as ChildBand;      base.Serialize(writer);      if (FillUnusedSpace != c.FillUnusedSpace)        writer.WriteBool("FillUnusedSpace", FillUnusedSpace);      if (CompleteToNRows != c.CompleteToNRows)        writer.WriteInt("CompleteToNRows", CompleteToNRows);      if (PrintIfDatabandEmpty != c.PrintIfDatabandEmpty)        writer.WriteBool("PrintIfDatabandEmpty", PrintIfDatabandEmpty);    }  }}
 |