Bar Graph
Description
This example shows how to use the Microsoft Office Chart ActiveX Control.
To run this sample Xdialog script, you must have Microsoft Office installed on your machine.
Example
Dimension variables and provide chart data.
dim categories[3] as C dim shipping[3] as N dim marketing[3] as N dim accounting[3] as N dim vl as P dim shared Chart as P dim Graph as P dim Graph.object as P dim Graph.class as C categories[1] = "1999" categories[2] = "2000" categories[3] = "2001" shipping[1] = 100 'value for 'shipping' department in 1999 shipping[2] = 211 'value for 'shipping' department in 2000 shipping[3] = 173 marketing[1] = 234 marketing[2] = 456 marketing[3] = 111 accounting[1] = 222 accounting[2] = 345 accounting[3] = 132 vl = local_variables()
Define the dialog display code.
Graph.class="owc.chart"
dlg_title = "Stacked Bar Chart"
type = 1 'Refer to Complete List of Supported Chart Types
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};
{lf};
(type:Bar!type_change) (type:Column!type_change);
{endregion002}
%dlg%Define the dialog event handler code.
dlg_event = <<%code%
if (a_dlg_button = "type_change") then
if type = 1 then 'bar
Chart.Type = 4 ' Stacked Bar - Refer to Complete List of Supported Chart Types
Chart.Title.Caption = "Stacked Bar Graph"
else if type = 2 then 'column
Chart.Type = 1 ' Stacked Column- See the list at the bottom for other types.
Chart.Title.Caption = "Stacked Column Graph"
end if
end if
if (a_dlg_button = "close") .or. (a_dlg_button = "") then
ui_modeless_dlg_close(dlg_title)
end ifCreate the chart on the init event. SetData()is a chart method.
if (a_dlg_button = "init") then
a_dlg_button = ""
' Add a chart to the graph object
Chart = Graph.object.Charts.Add()
Chart.HasTitle = .t.
Chart.Title.Caption = "Stacked Bar Graph"
Chart.Type = 4 ' Stacked Bar - refer to Complete List of Supported Chart Types.
Chart.HasLegend = .t.
' Add the two series
dim series[3] as P
Series[1] = Chart.SeriesCollection.Add()
Series[1].Caption = "Shipping"
Series[1].SetData(1, -1, categories) 'Only need to set 'categories' for the first data series
Series[1].SetData(2, -1, shipping) ' Refer to XY Graph
Series[2] = Chart.SeriesCollection.Add()
Series[2].Caption = "Marketing"
Series[2].SetData(2, -1, marketing) ' Refer to XY Graph
Series[3] = Chart.SeriesCollection.Add()
Series[3].Caption = "Accounting"
Series[3].SetData(2, -1, accounting) ' Refer to XY Graph
Graph.object.Refresh()
end if
%code%
ui_modeless_dlg_box(dlg_title, dlg_source, dlg_event)Limitations
Desktop applications only.
See Also
