Hi,
ich habe folgendes vor:
Ich habe 2 Flexgrid Tabellen (möchte es später auf ca 6 erweitern) und pro Tabelle 15 Spalten die grafisch dargestellt werden sollen. Die Spalten bestehen aus min 30 bis max 370 Zeilen.
Die x-Achse ist immer die gleiche und ist in jeder Tabelle in der 1.Spalte(Datum).
Jetzt möchte ich in einem Graph die Möglichkeit haben per CheckBox die Spalten auszuwählen welche ich dargestellt haben möchte. Mehr als 15 Graphen werden aber nicht gleichzeitig angezeigt.
Ich habe das jetzt (s. unten) erstmal so realisiert, dass alle Spalten aller Tabellen beim öffnen des Graphen geladen werden und per .SetTransparent = True "unsichtbar" gemacht werden und anschließend per jeweiliger CheckBox auf .SetTransparent = False gesetzt werden, dass man sie sieht.
Das klappt bis jezt auch sehr gut mit 2 Tabellen und insgesamt 30 Spalten. Allerdings bin ich mir nicht sicher ob das die richtige Vorghensweise ist und ob sevGraph, später wenn ich 6 Tabellen laden möchte, so viel überhaupt verarbeiten kann, da nach meinem Verständnis ja alle Graphen geladen werden, und ich mal irgendwo was von 18 Datensets gelesen habe. Die habe ich aber mit 30 Graphen schon überschritten, oder?
Vielleicht gibt es ja da noch eine einfachere oder bessere Methode, das "Problem" hatten doch bestimmt schon mehrere?!
Hier mal ein Code Ausschnitt:
Private Sub ch_33_134_d_Click() '1. CheckBox Tabelle 1
With Graph1
If Me.ch_33_134_d.Value = 0 Then
.SetTransparent(1) = True
Else
.SetTransparent(1) = False
End If
End With
End Sub
'....hier normal CheckBoxen 2-15 von Tabelle 1....
Private Sub ch_44_134_d_Click() '1. CheckBox Tabelle 2
With Graph1
If Me.ch_44_134_d.Value = 0 Then
.SetTransparent(16) = True
Else
.SetTransparent(16) = False
End If
End With
End Sub
'....hier normal CheckBoxen 2-15 von Tabelle 2....
'....erweiterbar auf ca 6 Tabellen?
Private Sub Form_Load()
Me.Caption = Mid(FormMenü.CommonDialog1.FileTitle, 1, Len( _
FormMenü.CommonDialog1.FileTitle) - 4) & " - Enercon E33"
Dim j As Integer
Dim i As Long
With Graph1
' autom. Neuzeichnen ausschalten
.LockUpdate True
' alte Werte löschen
.Clear
' Anzahl Datenreihen (Sets)
.NumSets = 30
'Platzierung der Legende
'.LegendType = gLegendRight
'Diagramm Typ
.GraphType = gLine
'Liniendicke
.LineWidth = gThin
' Gitternetzlinien anzeigen
'.GridLines = 2
' Anzahl Werte festlegen
.Count = FormTab_E33.FGrid1.Rows
' Werte aus Tabellen auslesen und anzeigen
For i = 1 To .Count - 1
' X-Achsenbeschriftung
If .Count - 1 <= 31 Then
For j = 1 To .Count - 1 Step 2
.Data(j).Text = Format(CDate(FormTab_E33.FGrid1.TextMatrix(j, 0)), _
"dd.mmm.")
Next j
ElseIf .Count - 1 > 31 And .Count - 1 <= 120 Then
For j = 1 To .Count - 1 Step 7
.Data(j).Text = Format(CDate(FormTab_E33.FGrid1.TextMatrix(j, 0)), _
"dd.mmm.")
Next j
Else
For j = 1 To .Count - 1 Step 20
.Data(j).Text = Format(CDate(FormTab_E33.FGrid1.TextMatrix(j, 0)), _
"dd.mmm.")
Next j
End If
'Datensetnr. 1 Tabelle 1
.CurSet = 1
.Data(i).Value = Val(FormTab_E33.FGrid1.TextMatrix(i, 2)) 'E33 134d
.Data(i).ToolTipText = "E33 134m D"
'Beim laden transparent anzeigen
.SetTransparent(1) = True
'....hier normal noch Daten von Spalten 2 - 15, Tabelle 1
'Datensetnr. 1 Tabelle 2
.CurSet = 16
.Data(i).Value = Val(FormTab_E44.FGrid1.TextMatrix(i, 2)) 'E44 134d
'Beim laden transparent anzeigen
.SetTransparent(16) = True
'....hier normal noch Daten von Spalten 2 - 15, Tabelle 2
'....erweiterbar auf ca 6 Tabellen?
Next i
' Fußzeile
.Footer = "Auswertungszeitraum: " & FormTab_E33.FGrid1.TextMatrix(1, 0) & "" & _
"bis " & FormTab_E33.FGrid1.TextMatrix(FormTab_E33.FGrid1.Rows - 1, 0)
.FooterFont.Size = 8
.FooterFont.Bold = False
' autom. Neuzeichnen einschalten
.LockUpdate False
' Graph anzeigen
.Refresh
End With
End Sub Das ganze sollte dann so aussehen (erstmal für 2 Tabellen):
http://www.bilder-hochladen.net/files/hgk3-a-jpg.html
Würde mich über ein paar Tipps sehr freuen!
Gruß Martin
Beitrag wurde zuletzt am 18.03.11 um 13:52:29 editiert. |