ReportObjectController.Modify中的错误?

2020-08-25 16:08发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正尝试如下更改ISCRTextObject的颜色。

 CrystalDecisions.CrystalReports.Engine.ReportDocument rd =新的CrystalDecisions.CrystalReports.Engine.ReportDocument();
 rd.Load(fileName);

 ISCDReportClientDocument rcd = rd.ReportClientDocument;
 ReportObjects allObjects = rcd.ReportDefController.ReportObjectController.GetAllReportObjects();
 foreach(allObjects中的ReportObject o)
 {
    如果(o.Kind == CrReportObjectKindEnum.crReportObjectKindText)
    {
        ISCRTextObject为=(ISCRTextObject)o;
        to.FontColor.Color = 255;
        rcd.ReportDefController.ReportObjectController.Modify(o,to);
    }
 }

 

这很好! 但是,如果ISCRTextObject的文本包含强制换行符,则仅第一行的颜色为255,所有后续行均保持黑色! 请参阅ISCRTextObject1。 有想法吗?

(5.3 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正尝试如下更改ISCRTextObject的颜色。

 CrystalDecisions.CrystalReports.Engine.ReportDocument rd =新的CrystalDecisions.CrystalReports.Engine.ReportDocument();
 rd.Load(fileName);

 ISCDReportClientDocument rcd = rd.ReportClientDocument;
 ReportObjects allObjects = rcd.ReportDefController.ReportObjectController.GetAllReportObjects();
 foreach(allObjects中的ReportObject o)
 {
    如果(o.Kind == CrReportObjectKindEnum.crReportObjectKindText)
    {
        ISCRTextObject为=(ISCRTextObject)o;
        to.FontColor.Color = 255;
        rcd.ReportDefController.ReportObjectController.Modify(o,to);
    }
 }

 

这很好! 但是,如果ISCRTextObject的文本包含强制换行符,则仅第一行的颜色为255,所有后续行均保持黑色! 请参阅ISCRTextObject1。 有想法吗?

(5.3 kB)
付费偷看设置
发送
7条回答
代楠1984
1楼 · 2020-08-25 16:54.采纳回答

嗨,唐,我找到了解决方案! 每个ISCRTextObject具有段落,而每个Paragraph具有ParagraphElements。 因此解决方案是:

如果(o.Kind == CrReportObjectKindEnum.crReportObjectKindText)
 {
     ISCRTextObject为=(ISCRTextObject)o;
     to.FontColor.Color = 255;
     对于(Int32 pgNr = 0; pgNr   
Alawn_Xu
2楼-- · 2020-08-25 16:43

嗨,Joerg,

如果使用公式执行相同的操作,那么在CR Designer中会发生什么? 我认为这可能是设计使然。

通常情况下,退货通常意味着换行,因此它将结束所有格式并默认为规范。

看看是否使用.Clone可以正常工作, 要使用.Clone,请使用Old.Object和一个空的New.Object,然后更新属性,然后从报表中删除旧对象,然后添加新克隆的对象。

如果有机会,我会 我也会做一些测试...

Don

compass1988
3楼-- · 2020-08-25 16:57

我确认这是它的工作方式。 我将对R&D进行ping操作,然后看看他们怎么说。

您可能必须使用公式来设置对象的颜色。

Don

DafaDDDa
4楼-- · 2020-08-25 17:05

嗨Joerg,

R&D认为这可能是一个回归问题,因此我创建了"事件"并逐步升级以解决问题:

事件VS的事件21318/2020/CR- 当在文本对象中遇到回车符时,Change Color API将停止

修正应在SP 27中到期(在3 +/-个月内到期)。

目前的解决方法是使用 格式化公式并在SDK中更改公式中的颜色代码。

再次感谢

Don

Tong__Ming
5楼-- · 2020-08-25 17:09

嗨,唐,非常感谢 为了您的研究和升级事件。

不幸的是,当ISCRTextObject的文本包含参数时,也会出现此问题。 例如 如果ISCRTextObject.Text =" Location" + {?PARAMETER_CITY},则参数值也保持黑色。 如果可能,请将此案例添加到事件中。 预先非常感谢。

6楼-- · 2020-08-25 16:50

再次感谢!

我认为该事件可以解决。

xfwsx85
7楼-- · 2020-08-25 16:45

感谢Joerg,

酷,我一直在考虑使用Paragraph集合。 很好,您找到了答案。

还请注意KBA:

2880823-VS的CR-在.NET应用程序中发现回车符时,Change Color API停止

我将添加您找到的工作。

一周热门 更多>