Crystal reports 如何在Crystal Reports 2008中垂直堆叠字段

Crystal reports 如何在Crystal Reports 2008中垂直堆叠字段,crystal-reports,alignment,crystal-reports-2008,Crystal Reports,Alignment,Crystal Reports 2008,我正在使用Crystal Reports 2008开发一些报告(在oracle数据库上) 在我的设计/布局中有许多文本字段,我希望将它们放置在垂直堆栈中,中间没有空格 使用Oracle reports,我可以选择字段并执行align->stackvertical,但CR2008中似乎没有类似的选项 “对齐”选项有顶部、中间、底部、基线、左侧、中心、右侧和网格。这些都不是我想要的 有没有一个简单的方法可以做到这一点?还是我只需要手动定位它们?(可能使用对齐网格)如果从头开始创建报告,则应该能够使用

我正在使用Crystal Reports 2008开发一些报告(在oracle数据库上)

在我的设计/布局中有许多文本字段,我希望将它们放置在垂直堆栈中,中间没有空格

使用Oracle reports,我可以选择字段并执行align->stackvertical,但CR2008中似乎没有类似的选项

“对齐”选项有顶部、中间、底部、基线、左侧、中心、右侧和网格。这些都不是我想要的


有没有一个简单的方法可以做到这一点?还是我只需要手动定位它们?(可能使用对齐网格)

如果从头开始创建报告,则应该能够使用邮件标签向导,该向导将垂直堆叠所选字段


除此之外,唯一的选择是手动执行。我发现,在“选项”菜单中启用“捕捉到网格”有助于实现这一点,就像在每列中插入一条垂直参考线,然后拖放字段,使其捕捉到网格上一样。

手动方法效果最好。正如Mark所建议的,除了对齐网格和垂直准则外,还应该使用多个详细信息和组标题部分。多个部分可以使事情更有条理

我尽可能避免使用Crystal Reports的“向导”——这是在使用该产品15年之后(从v4开始)。

打开Crystal Report 选择要垂直显示其数据的字段, 转到格式字段->文本旋转 设置90(如果您需要从下至上的数据) 设置270(如果您需要从上到下的数据)。
:-)

作为手动对齐字段以使其边框接触的替代方法,您可以使用“对象大小和位置”对话框。您可以通过打开“格式”菜单或字段的上下文菜单,然后选择菜单项“大小和位置…”来访问它

按照以下步骤将新字段添加到垂直堆叠字段列的底部:

  • 在列中选择当前底部字段
  • 打开“大小和位置”对话框
  • 向下复制其X值
  • 将Y值添加到高度,然后向下复制
  • 关闭对话框
  • 选择要移动到列底部的新字段
  • 打开“大小和位置”对话框
  • 输入复制的X值作为X值,输入复制的总和作为Y值
  • 关闭对话框
  • 如果更简单,可以使用命令“Format”>“Align”>“Lefts”(或“Centers”或“Rights”)替换关于X值的步骤

    这种方法比用鼠标拖动字段更容易实现自动化。如果必须对齐多个字段,则可以使用或自动化此过程的大部分内容。事实上,我最终实现了自动化——我写道。

    我知道如何使用“对象大小和位置”对话框手动对齐字段。我现在已经编写了一个脚本来自动使用该对话框。我成功地使用该脚本在现有的堆叠字段下堆叠了大约70个新字段

    要使用此脚本,请将其内容复制并粘贴到IDE中。打开Crystal Reports并在现有堆栈的底部找到字段。确保要添加到堆栈底部的新字段存在并且在屏幕上可见。选择堆栈底部的字段。然后切换到Sikuli并点击CtrlR以启动脚本。它将切换到Crystal Reports并打开“大小和位置”对话框,读取堆栈底部字段的现有值,然后关闭对话框。您现在有1.5秒(可配置)时间通过单击新字段来选择它。现在,脚本将再次打开“大小和位置”对话框,并设置X、Y、宽度和高度,以便将选定字段放置在上一个字段的下方。具体来说,X、宽度和高度设置为与上述字段相同,Y设置为如中所述。如果需要,可以更改配置变量
    VERTICAL\u SPACE\u-BETWEEN\u FIELDS
    ,在每个字段之间添加空格或使其重叠

    脚本大约需要5秒钟来对齐一个字段。如果太慢,可以尝试减少或删除一些
    wait()
    调用中的时间。我添加了
    wait()

    这个脚本的一个优点是它是可链接的。完成后,仍将选择新对齐的字段。因此,如果您希望在该字段中添加另一个字段,则可以只使用CtrlR再次运行脚本,并准备单击中间的下一个字段。如果计划多次链接,可以在
    范围(1)
    中增加1,并在
    mainAction()
    下面添加
    wait()
    ,以便脚本自动重复。请记住,链接要求下一个要添加的字段在屏幕上可见,这样您就可以用鼠标选择它

    我将脚本文件保存为“在Crystal Reports.sikuli中对齐字段”

    #Crystal Reports:开始选定字段下的堆栈提示选定字段
    字段之间的垂直间距=0.000
    等待\u时间\u等待\u用户\u选择\u新建\u字段=1.5
    def mainAction():
    #读取堆栈底部的大小和位置
    上面=dict()
    openSizeAndPositionDialog()
    高于['x']=copySelectedText()
    moveToNextField(2)
    高于['y']=copySelectedText()
    moveToNextField()
    高于['width']=copySelectedText()
    moveToNextField(2)
    高于['height']=copySelectedText()
    打印(“上方”,上方)
    等待(0.05)
    类型(Key.ESC)
    #计算堆栈中下一个字段的大小和位置
    新字段=dict()
    新的_字段['x']=高于['x']
    新建_字段['y']=str(浮动(高于['y'])+浮动(高于['height'])+垂直_字段之间的空间_)
    新的_字段['width']=高于['width']
    新的_字段['height']=高于['height']
    打印(“新字段”,新字段)
    waitForUserToSelectNewField()
    #设置大小和