通过修改共通,统一调整报表ActiveReport12右下移动
通过修改共通,统一调整报表右下移动。
1.方案1
float fTop = rpt.PageSettings.Margins.Top;
float fLeft = rpt.PageSettings.Margins.Left;
rpt.PageSettings.Margins.Top = fTop + GrapeCity.ActiveReports.SectionReport.CmToInch(m_dTopHeight);
rpt.PageSettings.Margins.Left = fLeft + GrapeCity.ActiveReports.SectionReport.CmToInch(m_dLeftWitdh);
此方案,会导致原来现实在一页内容,分两页显示。同样影响打印预览页(有可能出现红线)
2.方案2
// 我尝试下面方式不起作用,但是在debug中修改Margin的数据有效。猜测内部在封装时候,赋值和使用的不是同一个东西。
// 所以尝试采用下面的方案,完美解决我的问题。
// argReport.Document.PrintOptions.Margin = new GrapeCity.ActiveReports.Extensibility.Printing.Margin(fLeft, 0, fTop, 0);
// 采用方案:通过反射修改私有属性的值。
// 左部余白
CallPrivateMethod(((SectionReport)argReport).Document.PrintOptions.Margin, "set_Left", new object[1] { fLeft });
// 上部余白
CallPrivateMethod(((SectionReport)argReport).Document.PrintOptions.Margin, "set_Top", new object[1] { fTop });
// 通过反射修改私有属性的值。
private void CallPrivateMethod(object instance, string propertyName, params object[] param)
{
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = instance.GetType();
MethodInfo method = type.GetMethod(propertyName, flag);
method.Invoke(instance, param);
}