交替行或文本框的背景颜色

时间:2011-08-19 19:37:26

标签: visual-studio crystal-reports

由于Crystal没有数据网格,我在SAP的水晶报告中使用VS2010 SQLServer的数据来自数据库,因为Crystal没有数据网格。

我怎样才能替换这些文本框的背景颜色?

3 个答案:

答案 0 :(得分:2)

我有两种方法可以做到这一点。第一个是最简单但最不稳健的。在详细信息部分中,您只需添加如下背景颜色格式公式:if recordnumber mod 2 = 0 then crgray else crnocolor

第二种情况是,如果您需要更多地控制格式,请说明您是否根本没有显示详细信息部分,只是组页脚/标题。它只涉及跟踪单个布尔变量。在您想要触发的部分中,将其添加到背景颜色格式公式中:

whileprintingrecords;
booleanvar fliprow;
fliprow := not fliprow;
if fliprow then crgray else crnocolor

答案 1 :(得分:2)

创建自定义公式;称之为'Colorize':

//Color every other row as light tan (alter RGB to suit tastes)
Function (Numbervar row, Optional Numbervar Color := RGB(239,235,220))

If Remainder(row,2)=0 Then
    Color
Else
    crNoColor

将以下内容添加到“细节”部分的“背景颜色”条件格式公式:

Colorize(RecordNumber)

//or over-ride color
Colorize(RecordNumber, crSilver)

您还可以通过传递GroupNumber关键字将其用于组标题部分:

Colorize(GroupNumber)

如果你正在做任何花哨的/分组,你可能想要使用一个运行总公式:

//{@G1}
WhilePrintingRecords;
Numbervar i;
i:=1+1;

将此公式添加到group-header部分,然后禁止它。

将石斑鱼标题的条件公式更改为:

WhilePrintingRecords;
Numbervar i;
Colorize(i);

答案 2 :(得分:0)

为文本框实现此目的。您将要创建一个自定义公式,我创建了“切换”

WhilePrintingRecords;

Global booleanVar g_bGreyRow := Not(g_bGreyRow);

然后插入一个文本框并添加“切换公式”字段。然后,您将要选择文本框并设置文本格式。选择边框标签并选中背景框,然后在自定义公式编辑器中添加

Global booleanVar g_bGreyRow;
If g_bGreyRow
Then color(231, 231, 231)
Else crNoColor

现在,您的文本框将打开和关闭背景色。不过,有一个小问题,那就是您会看到文本True或False。我先选择“编辑文本...”,然后选择文本并右键单击以设置文本格式,以解决此问题。我将文本的颜色设置为白色,大小设置为1,然后将“切换”文本的格式从true和false更改为T和F,这基本上使它不可见。另外,请确保将文本框移到后面。当我不想或不需要更改整个部分的背景而只是一部分时,我使用此方法。