XY Graph
Description
This example shows how to use the Microsoft Office Chart ActiveX Control.
Example
dim vl as P dim shared Chart as P dim Graph as P dim Graph.object as P dim Graph.class as C vl = local_variables() 'Define the Microsoft Office Chart ActiveX Control Graph.class="owc.chart" dlg_title = "X/Y Line Chart" dlg_source = <<%dlg% {can_exit=close} {startup=init} {lf}; {region001} {stretch=height,width} {sp}{activex=100,25Graph}; {stretch=} {stickto=right,top} {endregion001} {region002} {sp}<%i=$a5_window_close;O={J=C} {I=1} Close; %18,1.5&Close!close>{sp}; {endregion002} %dlg%
Add the event handlers for the buttons.
dlg_event = <<%code% if (a_dlg_button = "close") .or. (a_dlg_button = "") then ui_modeless_dlg_close(dlg_title) end if if (a_dlg_button = "init") then a_dlg_button = ""
Build the chart on the init event. Series[2] is an array of pointers. each element in the array contains information about a data series that is plotted on the graph.
dim Series[2] as P dim Rows as N Rows = 25 dim XValueRows as N dim YValue1Rows as N dim YValue2Rows as N ' Add a chart to the graph object Chart = Graph.object.Charts.Add() Chart.HasTitle = .T. Chart.Title.Caption = "X/Y Graph" Chart.Type = 25 ' Scatter Line - See the Complete List of Supported Chart Types. Chart.HasLegend = .T. ' Create some random data for the graph for i = 1 to Rows XValue[i] = i ' Just a sequence 1..25 YValue1[i] = rand()* i + i ' A random number greater than i YValue2[i] = rand()* i / 2 ' A random number smaller than i next i ' Add the two series to the chart Series[1] = Chart.SeriesCollection.Add() Series[1].Caption = "Greater Values"
SetData() is a method call of the chart object. The arguments passed in the first call to .SetData() are:
4, indicating that we are setting an X value (see Complete List of Supported Data Types )
-1, indicating that the data is being supplied directly, rather than from a data source
XValue, containing the name of the array that contains the actual values.
Series[1].SetData(4, -1, XValue) ' X Values for Series 1
The arguments passed in the second call to .SetData() are:
3, indicating that we are setting an Y value (see Complete List of Supported Data Types )
-1, indicating that the data is being supplied directly, rather than from a data source
YValue, containing the name of the array that contains the actual values.
Series[1].SetData(4, -1, XValue) ' X Values for Series 1 Series[2] = Chart.SeriesCollection.Add() Series[2].Caption = "Lesser Values" Series[2].SetData(4, -1, XValue) ' X Values Series[2].SetData(3, -1, YValue2) ' Y Values Graph.object.Refresh() end if %code% ui_modeless_dlg_box(dlg_title, dlg_source, dlg_event)
Complete List of Supported Chart Types
'chChartTypeColumnClustered = 0, 'chChartTypeColumnStacked = 1, 'chChartTypeColumnStacked100 = 2, 'chChartTypeBarClustered = 3, 'chChartTypeBarStacked = 4, 'chChartTypeBarStacked100 = 5, 'chChartTypeLine = 6, 'chChartTypeLineStacked = 8, 'chChartTypeLineStacked100 = 10, 'chChartTypeLineMarkers = 7, 'chChartTypeLineStackedMarkers = 9, 'chChartTypeLineStacked100Markers = 11, 'chChartTypeSmoothLine = 12, 'chChartTypeSmoothLineStacked = 14, 'chChartTypeSmoothLineStacked100 = 16, 'chChartTypeSmoothLineMarkers = 13, 'chChartTypeSmoothLineStackedMarkers = 15, 'chChartTypeSmoothLineStacked100Markers = 17, 'chChartTypePie = 18, 'chChartTypePieExploded = 19, 'chChartTypePieStacked = 20, 'chChartTypeScatterMarkers = 21, 'chChartTypeScatterLine = 25, 'chChartTypeScatterLineMarkers = 24, 'chChartTypeScatterLineFilled = 26, 'chChartTypeScatterSmoothLine = 23, 'chChartTypeScatterSmoothLineMarkers = 22, 'chChartTypeBubble = 27, 'chChartTypeBubbleLine = 28, 'chChartTypeArea = 29, 'chChartTypeAreaStacked = 30, 'chChartTypeAreaStacked100 = 31, 'chChartTypeDoughnut = 32, 'chChartTypeDoughnutExploded = 33, 'chChartTypeRadarLine = 34, 'chChartTypeRadarLineMarkers = 35, 'chChartTypeRadarLineFilled = 36, 'chChartTypeRadarSmoothLine = 37, 'chChartTypeRadarSmoothLineMarkers = 38, 'chChartTypeStockHLC = 39, 'chChartTypeStockOHLC = 40, 'chChartTypePolarMarkers = 41, 'chChartTypePolarLine = 42, 'chChartTypePolarLineMarkers = 43, 'chChartTypePolarSmoothLine = 44, 'chChartTypePolarSmoothLineMarkers = 45
Complete List of Supported Data Types
SetData(type, datasourceindex, array) ' Values for type of data being set 'chDimSeriesNames = 0, 'chDimCategories = 1, 'chDimValues = 2, 'chDimYValues = 3, 'chDimXValues = 4, 'chDimOpenValues = 5, 'chDimCloseValues = 6, 'chDimHighValues = 7, 'chDimLowValues = 8, 'chDimBubbleValues = 9, 'chDimRValues = 10, 'chDimThetaValues = 11
See Also