Gibt es eine Möglichkeit, einen programmatischen Zugriff auf die Spalten eines ActiveReports -Detailabschnitts zu erhalten?

StackOverflow https://stackoverflow.com/questions/2899521

Frage

Ich habe einen Bericht in Data Dynamics ActiveReports für .NET. In diesem Bericht setze ich programmgesteuert die ColumnCount -Eigenschaft des Detailabschnitts in X. Der Detailabschnitt verfügt über ein Datenkästchen.

Die ColumnDirection -Eigenschaft des Detailabschnitts ist überdown und der und dann der Datenbindungsmechanismus automatisch mit Daten nach dem Einstellen der DataSource und des DataMember übertragen.

Hier ist der Code ...

Public Sub RunReport
        Dim count As Integer = 0

        ' ...    get count

        Detail1.ColumnCount = count

        Me.DataSource = ds
        Me.DataMember = ds.Tables(0).TableName

End Sub

Dieser Code funktioniert einwandfrei und die Daten werden automatisch über den Bericht gefüllt.

Jetzt muss ich den Bericht ändern und einen der Elemente hervorheben, die im Bericht über Spalten über Spalten gefüllt sind.

Ich kann keine Möglichkeit finden, programmgesteuert auf die automatisch generierten Spalten zugreifen zu können, damit ich einen Rand einschalten oder einen Kreis zeichnen kann oder so. Irgendwelche Ideen, wie ich das machen würde?

Seth

War es hilfreich?

Lösung

Sie können einen Rand einschalten, indem Sie die Eigenschaften der Steuerung im Formatereignis festlegen. Wenn Sie beispielsweise den Rand eines Textfelds festlegen möchten, wenn sein Wert weniger als Null ist, verwenden Sie möglicherweise so etwas wie den folgenden Code:

 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;
      }
 }

Lesen hier Weitere Informationen zum Grenzgut.

Es ist nicht so einfach, die Position einer Kontrolle auf der resultierenden Seite zu erhalten. Sie können die Position basierend auf einigen Dingen berechnen, aber ich würde empfehlen, die Steuerung selbst zu verwenden, um die gewünschten Daten hervorzuheben, anstatt auf der Seite zu zeichnen. Es wird dein Leben leichter machen :)

Wenn eine Kreisform für Sie wichtig ist, können Sie die "Form" -Kontrolle in activeReports verwenden, um dies zu tun, indem Sie ihre Position und Sichtbarkeit basierend auf einer Bedingung festlegen. Stellen Sie einfach sicher, dass sich die Z-Order der Form unter den Textboxen befindet. Der Code zur Verwendung einer Form wäre ähnlich wie ich den obigen Code strukturiert habe. Sie würden jedoch die obere/linke/breite/höhe und die sichtbare Eigenschaft der Formregelung festlegen, anstatt Randeigenschaften festzulegen. Weitere Informationen zur Formsteuerung sind hier.

Hoffe das hilft.

 Scott Willeke
 GrapeCity
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top