Visual Basic NETissä voi käyttää hyväksi Microsoft Officen käyttämiä kaavioita. Tällä voi tehdä kätevästi mm. lämpötilakäyrät. Toimii myös VB6:ssa, mutta vaatii hivenen muutoksia koodiin.
Alla on lyhyt esimerkki, kopsattu melkein suoraan helpeistä. Aloita uusi projekti. Valitse Tools / Choose Toolbox items... / COM components, ja valitse sieltä Microsoft Office Charts (jos on useita versioita, niin valitse vaan kaikki)
Valitse sitten vasemman reunan Toolboxista Microsoft Office Chart, ja piirrä sillä Formiin neliö. Muuta sen nimeksi ChartSpace1
Sitten Kopioi / Liitä oheinen ohjelma Form Loadiin.
Ohjelman käynnistyksen jälkeen pitäisi tulla pylväskaavio näkyviin.
Tällä systeemillä voi tehdä vaikka kuinka monimutkaisia käyriä, viivakaavioita jne, mutta valitettavasti ohjeiden ja esimerkkien löytäminen on työlästä, ja kaikki on vaan kokeiltava.
Edellytyksenä on siis, että Microsoft Office on asennettu koneeseen. Näitä Chart versioita voi olla useampia, viimeisin lienee versio 11.
Kysymys kuuluu, että miksi tuo viimeisenä oleva ExportPicture-käsky ei toimi versioissa 10 ja 11, kun se toimii versiossa 9?
' Osa ulkomaankielisistä kommenteista omatekemiä ' Begin new program ' ' Form1 ' Add Office Web Components: ' Tools / Choose Toolbox items... ' COM Components / Select Microsoft Office Chart 11.0 ' ' In the Form Design: ' Select from Toolbox Microsoft Office Chart 11.0 ' Draw a chart to the form ' change the name to ChartSpace1 Dim categories(3) Dim values(3) Dim chConstants ' Create an array of strings representing the categories. ' The categories will be the same for all three series. categories(0) = "Car" categories(1) = "Sport-Utility" categories(2) = "Truck" categories(3) = "Minivan" ' Clear the contents of the chart workspace. This removes ' any old charts that may already exist and leaves the chart workspace ' completely empty. One chart object is then added. ChartSpace1.Clear() ChartSpace1.Charts.Add() chConstants = ChartSpace1.Constants ' Add three series to the chart. ChartSpace1.Charts(0).SeriesCollection.Add() ChartSpace1.Charts(0).SeriesCollection.Add() ChartSpace1.Charts(0).SeriesCollection.Add() ' Series one contains sales growth data for 1998. ' Set the series caption (the text that appears in the legend). 'ChartSpace1.Charts(0).SeriesCollection(0).Caption = "1998" ' Set the categories for the first series (this collection is zero-based) 'ChartSpace1.Charts(0).SeriesCollection(0).SetData(chConstants.chDimCategories, chConstants.chDataLiteral, categories) values(0) = 0.2 values(1) = 0.06 values(2) = 0.17 values(3) = 0.13 ChartSpace1.Charts(0).SeriesCollection(0).Caption = "1998" ChartSpace1.Charts(0).SeriesCollection(0).SetData(chConstants.chDimCategories, chConstants.chDataLiteral, categories) ChartSpace1.Charts(0).SeriesCollection(0).SetData(chConstants.chDimValues, chConstants.chDataLiteral, values) ' Series two contains sales growth data for 1999. ' Update the values array, then set the chart data. values(0) = 0.38 values(1) = 0.82 values(2) = 0.28 values(3) = 0.62 ChartSpace1.Charts(0).SeriesCollection(1).Caption = "1999" ChartSpace1.Charts(0).SeriesCollection(1).SetData(chConstants.chDimCategories, chConstants.chDataLiteral, categories) ChartSpace1.Charts(0).SeriesCollection(1).SetData(chConstants.chDimValues, chConstants.chDataLiteral, values) ' Series two contains sales growth data for 2000. ' Update the values array, and then set the chart data. values(0) = 0.42 values(1) = 0.12 values(2) = 0.55 values(3) = 0.25 ChartSpace1.Charts(0).SeriesCollection(2).Caption = "2000" ChartSpace1.Charts(0).SeriesCollection(2).SetData(chConstants.chDimCategories, chConstants.chDataLiteral, categories) ChartSpace1.Charts(0).SeriesCollection(2).SetData(chConstants.chDimValues, chConstants.chDataLiteral, values) ' Make the chart legend visible, format the left value axis as percentage, ' and specify that value gridlines are at 10% intervals. ChartSpace1.Charts(0).HasLegend = True ChartSpace1.Charts(0).Axes(chConstants.chAxisPositionLeft).NumberFormat = "0%" ChartSpace1.Charts(0).Axes(chConstants.chAxisPositionLeft).MajorUnit = 0.1 ' This does not work in versions 10 and 11, it works in version 9 ChartSpace1.ExportPicture("c:\test.gif", "gif", 400, 200)
Minun koneellani oli versiot 9 ja 10, ja molemmilla kuvan tallennus tuntui toimivan. Tuleeko sinulla jokin virheilmoitus?
Kokeilin kahdella eri koneella, ja molemmissa tuli virheilmoitus. (Virheilmoituksen tarkkaa sisältöä en pysty nyt tarkistamaan) Nyt kokeilin kolmannella, ja toimi...
Mutta tässä koneessa onkin vain versiot 9 ja 10 kuten sinulla. Niissä toimimattomissa oli lisäksi versio 11???
Vai lieneekö kyse taas auringonpilkuista tms epäoleellisesta.
Oikeasti tällä Chartilla on helppo tehdä esim lämpötilakäyriä yms. Täälläkin on ollut joitakin koodeja, mutta yllämainitulla pääsee ehkä helpommalla.
Jos on tarvetta, niin voin pläjäyttää tänne lämpötilakäppyröiden esimerkkiohjelman.
Juuri tällaisten ongelmien takia joutuu ikävän usein kuitenkin lopuksi tekemään kaiken itse alusta alkaen. Tavallisia käyriä on onneksi aika helppo piirtää valmiilla piirtokomennoilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.