Professionelles Diagramm zeichnen


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.

Schritt 1: Das Steuerelement "besorgen"

buttonIm 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.

Schritt 2: Formular anlegen

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:

bild

Schritt 3: Programmcode, Teil 1

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

Schritt 4: Daten organisieren und dem Diagramm zuordnen

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ölfea(0,2):Füchsea(0,3):Dachse
a(1,0):a(1,1):44a(1,2):49a(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
HScroll1_Change (1) 'Zeichnen provozieren
End Sub
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
a(1, 0) = h & " Tiere gesamt" 'Summe ins Array
MSChart1.ChartData = a 'Array zuweisen
MSChart1.Repaint = True 'Diagramm malen
End Sub

Fertig!

zum Anfang

© R. Hirte * 2001