/// <inheritdoc/> public override bool Break(BreakableComponent breakTo) { using (Graphics g = FRichTextBox.CreateGraphics()) { // determine number of characters fit in the bounds. Set less height to prevent possible data loss. RectangleF textRect = new RectangleF(0, 0, Width - Padding.Horizontal, Height - Padding.Vertical - 20); Graphics measureGraphics = Report == null ? g : Report.PrintSettings.MeasureGraphics; if (measureGraphics == null) { measureGraphics = g; } int textStart = ActualTextStart; int textLength = ActualTextLength != 0 ? ActualTextLength : FRichTextBox.TextLength - textStart; int charsFit = FRichTextBox.FormatRange(g, measureGraphics, textRect, textStart, textStart + textLength, true) - textStart; if (charsFit <= 0) { return(false); } // perform break if (breakTo != null) { RichObject richTo = breakTo as RichObject; richTo.Text = Text; richTo.ActualTextStart = textStart + charsFit; ActualTextLength = charsFit; } return(true); } }
/// <inheritdoc/> public override void Assign(Base source) { base.Assign(source); RichObject src = source as RichObject; DataColumn = src.DataColumn; ActualTextStart = src.ActualTextStart; ActualTextLength = src.ActualTextLength; }
/// <inheritdoc/> public override void Serialize(FRWriter writer) { RichObject c = writer.DiffObject as RichObject; base.Serialize(writer); if (ActualTextStart != c.ActualTextStart) { writer.WriteInt("ActualTextStart", ActualTextStart); } if (ActualTextLength != c.ActualTextLength) { writer.WriteInt("ActualTextLength", ActualTextLength); } if (writer.SerializeTo != SerializeTo.Preview) { if (DataColumn != c.DataColumn) { writer.WriteStr("DataColumn", DataColumn); } } }