本帖最后由 KearneyOne 于 2020-9-14 16:34 编辑
通过修改共通,统一调整报表右下移动。
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);
- }
复制代码
|