Selbst gemalte Diagramme sehen ja erst mal sehr nüchtern aus. Wie kann man sie anhübschen?
Das Chart-Steuerelement bietet eine Anzahl professionell gestalteter Diagrammtypen, 3D-Diagramme, die beliebten Torten usw. Die Möglichkeiten, die Diagramme zu verändern, sie zu drehen, schattieren etc. sind sehr reichhaltig und sehr entbehrlich, aber für langweilige Regenabende allemal unterhaltsamer als gewisse Fernsehprogramme...
Es folgt eine "Erste Hilfe".
Dabei soll ein möglichst einfacher Fall der Nutzung des Steuerelements demonstriert werden. Von Hand einstellbare Werte sollen sofort in ein Tortendiagramm eingetragen und angezeigt werden.
Im Menü unter <Projekt>, <Komponenten>, <Steuerelemente> anwählen, auf der Karte sucht man "Microsoft Chart Control 6.0 (OLEDB)" und übernimmt. Es erscheint im Werkzeugfenster das Chart-Symbol:
Jetzt wird es ernst.
In üblicher Weise wird das Chart-Steuerelement eingefügt und auf die gewünschte Größe gezogen. Man sieht bunte Diagramme, die den gewollten nicht unbedingt entsprechen. Das stört aber nicht. Hier im Beispiel soll ein Tortendiagramm erzeugt werden. Das kann im Eigenschaftenfenster schon so ausgewählt werden.
Also: Die Eigenschaft "chartType" wird auf den Wert 14 (=VtChChartType2DPie) eingestellt. Pie heißt Torte, 2D steht für 2 dimensional. Mehr ist hier nicht erforderlich. Wer mag, nutze die Karten unter "Benutzerdefiniert", hier im Beispiel ist die Hintergrundfarbe des Diagramms, die Schriftgröße der Überschrift und der Schatten des Diagramms dort ausgewählt worden.
Um anzeigbare und variable Daten zu haben, sind zusätzlich drei Scroll-Elemente eingefügt. Um die Programmtexte einfach zu halten, ein Steuerelementefeld. (Scrollelement einfügen, kopieren und wieder einfügen. Die Frage nach dem Steuerelementefeld bejahen), ein drittes folgen lassen. Die Scroll-Elemente sind im Eigenschaftsfeld auf max=100 eingestellt worden. Auch die drei Label sind als Steuerelementefeld definiert, um die Programmierung (und evtl. Erweiterung) zu erleichtern.
Schließlich der obligatorische Button zur Beendigung des Programms.
Zum Schluß kann man die "Caption"-Eigenschaft von Form1 setzen, die Inschrift der Kopfzeile des Fensters.
So sieht das fertige Programm später aus:

Es muß eine Aufbewahrungsmöglichkeit für die anzuzeigenden Daten geben, ein Variant-Array, das nennen wir a(), dazu gleich mehr, und das Programm muß beendbar sein:
| Option Explicit Dim a(1, 3) As Variant Private Sub Command1_Click() End End Sub |
Das Chart-Steuerelement greift auf eine Datenbasis zu, die man hier eigens anlegt und die von anderen Programmteilen frei manipuliert werden kann. Das ist das Array a(i,j), das oben schon dimensioniert worden ist. Weil es Zahl- und Texteinträge enthalten soll, muß es vom Typ Variant sein.
| a(0,0): | a(0,1):Wölfe | a(0,2):Füchse | a(0,3):Dachse |
| a(1,0): | a(1,1):44 | a(1,2):49 | a(1,3):23 |
Erste Zeile und erste Spalte sind für Beschriftungen reserviert, der Rest dient der Datenaufnahme. Dieses Array wird dem Chart-Steuerelement zugewiesen, zuvor sind allerdings noch einige Vorbereitungen nötig.
Schritt 5: Programmcode Teil 2
Hier geht es um die Form_Load-Prozedur, die nur Ausgangsdaten und notwendige Voreinstellungen zum Diagramm enthält.
Interessanter ist die zweite Prozedur. Sie nimmt die Scrollerwerte in das Array a() auf und zeigt sie an, dann wird die Summe der Tiere ermittelt und dem Feld a(1,0) zugewiesen. Dann wird das ganze Array an MSChart1 übergeben (zugewiesen) und dann gemalt.
| Private Sub Form_Load() Dim i As Integer a(1, 1) = 44 'Tabelle füllen a(0, 1) = " Wölfe" a(1, 2) = 49 a(0, 2) = " Füchse" a(1, 3) = 23 a(0, 3) = " Dachse" For i = 1 To 3 'Anfangswerte einstellen HScroll1(i - 1).Value = a(1, i) Label1(i - 1).Caption = a(1, i) & a(0, i) Next With MSChart1 'Diagramm konfigurieren .Repaint = False 'warte noch! .ColumnCount = 3 '3 Datenspalten .ColumnLabelCount = 1 '1 Textspalte .RowCount = 1 '1 Datenreihe .RowLabelCount = 1 .Title.Text = "Einheimische Räuber" 'Überschrift End With End SubHScroll1_Change (1) 'Zeichnen provozieren Private Sub HScroll1_Change(Index As Integer) Dim i As Integer, h As Integer a(1, Index + 1) = HScroll1(Index).Value 'Scrollerwert ermitteln Label1(Index) = a(1, Index + 1) & a(0, Index + 1) 'Label beschriften h = 0 For i = 1 To 3 'Summe ermitteln h = h + a(1, i) Next End Suba(1, 0) = h & " Tiere gesamt" 'Summe ins Array MSChart1.ChartData = a 'Array zuweisen MSChart1.Repaint = True 'Diagramm malen |
Fertig!