行中的一个字段高度因为内容太长而自动换行时,高度增加。
因为是表格样式,增高的字段的边框和其他的字段的边框不能形成表格行。
在Detail的事件中写入:
    With ActiveReport1
        Dim C As Object
        For Each C In .Detail.Controls
            If Left(C.Name, 3) = "txt" Then
                C.Height = .Detail.Height
            End If
        Next
    End With
不管是在Event Format,BefortPrint,AfterPrint中这段代码都毫无作用。晕啊.............................................................有没有象Excel那样不用画边框,会自动缩小或换行的报表啊?
感觉ActiveReport已经最接近我的要求了。
水晶报表好差啊,基本上是不适合作中国报表的。

解决方案 »

  1.   

    你上面的代码是有问题的,因为你的理解有误,.Detail.Height的高度并非等于改记录行的最大高度,你可以做个实验,你会发现.Detail.Height可以比其中的控件高度小.要达到你的目的,你可以这样:在上面的循环中先找到最大的高度,然后再赋值给每个字段,就是说要执行两次循环.
     .Detail.Height你可以不用管它,因为它的值在小于其中控件的高度时就不起作用了.
      

  2.   

    这个我一开始就试过的,也是不行啊。
    代码如下:
        With ArPackBargainOut
            Dim i As Integer, B As Boolean
            Dim hMax As Long, h As Long
            h = 0
            hMax = 0
            B = False   'B用来判断是否有字段GROW。
            
            i = 1
            Dim C As Object
            For Each C In .Detail.Controls
                If Left(C.Name, 3) = "txt" Then
                    h = C.Height
                    If h > hMax Then
                        If hMax > 0 Then B = True
                        hMax = h
                    End If
                End If
            Next
            
            If B = True Then
                For Each C In .Detail.Controls
                    If Left(C.Name, 3) = "txt" Then
                        C.Height = hMax
                    End If
                Next
            End If
        End With
      

  3.   

    To:lsr66(瑞丽.com员工) 
    正在用FRAME组件解决中,很不好用但是可以解决问题,无奈。
    你有用过AtiveReprot吗?如果有,请到帖子:
    http://expert.csdn.net/Expert/topic/2925/2925047.xml?temp=.8449518
    中指点一下。
      

  4.   

    TO zerg2001(刺蛇):

                    If h > hMax Then
                        If hMax > 0 Then B = True
                        hMax = h
                    End If
    该成:
                    If h > hMax Then
                        B = True
                        hMax = h
                    End If
    然后在BefortPrint事件中写代码试试看
      

  5.   

    HEHE,之前试过了。
    应该是C.Height = hMax不起作用的原因。
      

  6.   

    在新的项目中我使用Active Report做了三十多份报表,都是使用以下方式,可以自动增高设置 每个Txt控件 的 CanGrow=true
    在Detail 的 BefortPrint 事件中加入 以下代码: With ActiveReport1
            Dim C As Object
            For Each C In .Detail.Controls
                If Left(C.Name, 3) = "txt" Then
                    C.Height = .Detail.Height
                End If
            Next
        End With
      

  7.   

    晕啊,你这段代码和上边我写的一模一样,是复制的吧。我试过没反应的。
    CanGrow=True是默认设置。