using System.Drawing; using System.ComponentModel; using System.Drawing.Printing; using FastReport.Utils; namespace FastReport { partial class ReportPage { #region Fields private int firstPageSource; private int otherPagesSource; private int lastPageSource; private Duplex duplex; #endregion #region Properties /// /// Gets or sets the paper source for the first printed page. /// /// /// /// This property represents the paper source (printer tray) that will be used when printing /// the first page. To set the source for other pages, use /// and properties. /// /// /// Note: This property uses the raw number of the paper source. /// /// [DefaultValue(7)] [Category("Print")] public int FirstPageSource { get { return firstPageSource; } set { firstPageSource = value; } } /// /// Gets or sets the paper source for all printed pages except the first one. /// /// /// /// This property represents the paper source (printer tray) that will be used when printing /// all pages except the first one and the last one. To set source for first and last pages, use /// and properties. /// /// /// Note: This property uses the raw number of the paper source. /// /// [DefaultValue(7)] [Category("Print")] public int OtherPagesSource { get { return otherPagesSource; } set { otherPagesSource = value; } } /// /// Gets or sets the paper source for the last printed page. /// /// /// /// This property represents the paper source (printer tray) that will be used when printing /// the last page. To set the source for other pages, use /// and properties. /// /// /// Note: This property uses the raw number of the paper source. /// /// [DefaultValue(7)] [Category("Print")] public int LastPageSource { get { return lastPageSource; } set { lastPageSource = value; } } /// /// Gets or sets the printer duplex mode that will be used when printing this page. /// [DefaultValue(Duplex.Default)] [Category("Print")] public Duplex Duplex { get { return duplex; } set { duplex = value; } } #endregion #region Public Methods internal void DrawSearchHighlight(FRPaintEventArgs e, int objIndex, CharacterRange range) { IGraphics g = e.Graphics; float leftMargin = LeftMargin * Units.Millimeters * e.ScaleX; float topMargin = TopMargin * Units.Millimeters * e.ScaleY; ObjectCollection allObjects = AllObjects; if (objIndex < 0 && objIndex >= allObjects.Count) return; ISearchable obj = allObjects[objIndex] as ISearchable; if (obj != null) { g.TranslateTransform(leftMargin, topMargin); try { obj.DrawSearchHighlight(e, range); } finally { g.TranslateTransform(-leftMargin, -topMargin); } } } internal void Print(FRPaintEventArgs e) { try { SetPrinting(true); SetDesigning(false); Draw(e); } finally { SetPrinting(false); } } internal ReportComponentBase HitTest(PointF mouse) { mouse.X -= LeftMargin * Units.Millimeters; mouse.Y -= TopMargin * Units.Millimeters; ObjectCollection allObjects = AllObjects; for (int i = allObjects.Count - 1; i >= 0; i--) { ReportComponentBase c = allObjects[i] as ReportComponentBase; if (c != null) { if (c.PointInObject(mouse)) return c; } } return null; } #endregion private void AssignPreview(ReportPage src) { FirstPageSource = src.FirstPageSource; OtherPagesSource = src.OtherPagesSource; LastPageSource = src.LastPageSource; Duplex = src.Duplex; } private void WritePreview(FRWriter writer, ReportPage c) { if (FirstPageSource != c.FirstPageSource) writer.WriteInt("FirstPageSource", FirstPageSource); if (OtherPagesSource != c.OtherPagesSource) writer.WriteInt("OtherPagesSource", OtherPagesSource); if (LastPageSource != c.LastPageSource) writer.WriteInt("LastPageSource", LastPageSource); if (Duplex != c.Duplex) writer.WriteValue("Duplex", Duplex); } private void InitPreview() { firstPageSource = 7; otherPagesSource = 7; lastPageSource = 7; duplex = Duplex.Default; } } }