代码之家  ›  专栏  ›  技术社区  ›  Seth Spearman

是否有方法以编程方式访问ActiveReports详细信息部分的列?

  •  0
  • Seth Spearman  · 技术社区  · 14 年前

    我在.NET的数据动态活动报表中有一个报表。在此报表中,我以编程方式将详细信息部分的ColumnCount属性设置为X。详细信息部分有一个数据绑定文本框。

    详细信息部分的ColumnDirection属性设置为AcrossDown,数据绑定机制在设置数据源和数据成员后自动填充数据。

    这是密码……

    Public Sub RunReport
            Dim count As Integer = 0
    
            ' ...    get count
    
            Detail1.ColumnCount = count
    
            Me.DataSource = ds
            Me.DataMember = ds.Tables(0).TableName
    
    End Sub
    

    该代码工作正常,数据会自动填充到整个报告中。

    现在,我需要更改报表并圈出或突出显示报表中跨列自动填充的项目之一。

    我找不到任何方法以编程方式访问自动生成的列,因此我可以打开边框或绘制圆或其他内容。你知道我该怎么做吗?

    塞思

    1 回复  |  直到 14 年前
        1
  •  2
  •   Scott Willeke    14 年前

    可以通过在“格式”事件中设置控件的属性来打开边框。例如,如果要在文本框的值小于零时设置其边框,可以使用以下代码:

     private void detail_Format(object sender, System.EventArgs eArgs)
     {
          if (this.TextBox1.Value < 0) {
               this.TextBox1.Border.BottomColor = System.Drawing.Color.Blue;
               this.TextBox1.Border.BottomStyle = BorderLineStyle.DashDot;
               this.TextBox1.Border.LeftColor = System.Drawing.Color.Blue;
               this.TextBox1.Border.LeftStyle = BorderLineStyle.DashDot;
               this.TextBox1.Border.RightColor = System.Drawing.Color.Blue;
               this.TextBox1.Border.RightStyle = BorderLineStyle.DashDot;
               this.TextBox1.Border.TopColor = System.Drawing.Color.Blue;
               this.TextBox1.Border.TopStyle = BorderLineStyle.DashDot;
          }
     }
    

    here 有关border属性的详细信息。

    在结果页面上获取控件的位置并不是那么容易。您可以基于某些内容计算位置,但我建议使用控件本身突出显示所需的数据,而不是在页面上绘制。这会让你的生活更轻松。)

    如果圆形对您很重要,则可以使用ActiveReports中的“形状”控件,通过根据条件设置其位置和可见性来完成此操作。只需确保形状的Z顺序在文本框下面。使用形状的代码将类似于我如何构造上面的代码,但您可以设置形状控件的顶部/左侧/宽度/高度和可见属性,而不是设置边框属性。有关形状控件的详细信息是 here .

    希望这有帮助。

     Scott Willeke
     GrapeCity