*Graphtest.prg *!* Below example is for Graph8. (Nearly same as Excel charting) *!* If you cannot download wc0993.exe from microsoft site *!* xlConstants can be found by : *!* -Open Excel *!* -Select tools\macro\VB editor *!* -Press F2 to bring up "Object browser" *!* -Find needed xlConstant type ie:xlChartType *!* -On right window click needed Constant ie: xl3DArea *!* -Below the window constant value is displayed *** set the LOCALEID to English nlLocaleId=sys(3004) && Save local id =sys(3006,1033) && We will be sending instructions in English * Part of xlChartType constants #define xl3DArea -4098 #define xl3DColumn -4100 #define xl3DLine -4101 #define xl3DPie -4102 #define xlArea 1 #define xlBubble3DEffect 87 #define xlLine 4 #define xlPie 5 #define xlRadar -4151 #define xlSurface 83 #DEFINE TAB CHR(9) #DEFINE CRLF CHR(13)+CHR(10) create cursor test (degree i, sine n(8,4) NULL, cosine n(8,4)) for ix = 1 to 90 insert into test ; values ; (ix,cos(ix)*ix,sin(ix)*ix) endfor 45 scan next 30 && Nullify 30 degrees replace sine with .null. && Nullify some values to see effect endscan * Data prepare * wait window nowait "Filling cell values..." MCGDATA = "" nCols = fcount() for ix = 1 to nCols MCGDATA = MCGDATA + iif(empty(MCGDATA),"",TAB)+field(ix) endfor MCGDATA = MCGDATA + CRLF scan for ix = 1 to nCols MCGDATA = MCGDATA + iif(ix=1,"",TAB)+nvl(str(evaluate(field(ix))),"") endfor MCGDATA = MCGDATA + CRLF endscan * Data prepare * create cursor testgen (genfld1 g) append blank append general genfld1 class "msgraph" data MCGDATA create report testgraph from testgen MESSAGEBOX("Pls add an OLEBoundControl to report that will be shown and size big enough." ; +chr(13)+"Field name is [genfld1]") modi report testgraph *** * Now we have Graph object in gen field. (Graph8) * Play with it oForm = createobject("Form") with oForm .height = 400 .width = 600 .show .closable = .f. .addobject("myGraph","OleBoundControl") .addobject("myQuit1","myQuit") .addobject("myChanger1","myDataChanger") .addobject("myChanger2","myTypeChanger") .addobject("myReport1","myReport") with .myGraph .height = oForm.height - 20 .width = oForm.width .left = 0 .top = 0 .ControlSource = "testgen.Genfld1" .hasdatatable = .t. .DataTable.HasBorderOutline = .T. with .datatable.font .name = "Arial" .size = 8 endwith wait window nowait "Plotting..." .hastitle = .t. .haslegend = .t. .ChartTitle.caption = "This is chart title" .ChartType=xl3DArea .object.application.plotby = 2 #define xlCategory 1 #define xlValue 2 #define xlSeriesAxis 3 With .Axes(xlCategory) .HasTitle = .t. with .AxisTitle .Caption = "This is category title" .Font.Name = "Arial" .Font.Size = 10 .Font.Bold = .t. endwith EndWith With .Axes(xlSeriesAxis) .HasTitle = .T. with .AxisTitle .Caption = "This is SeriesAxis title" .Font.Size = 8 .Font.Bold = .f. .Orientation = 90 && Show 90 degrees rotated endwith EndWith With .Axes(xlValue) .HasTitle = .T. with .AxisTitle .Caption = "This is Value title" .Font.Size = 10 .Font.Bold = .f. .Orientation = 90 && Show 90 degrees rotated - clockwise endwith EndWith wait clear .ChartArea.copy() .visible=.T. endwith .myQuit1.visible = .t. .myReport1.left = .myChanger2.left+.myChanger2.width + 5 .myReport1.visible = .t. .myChanger1.visible = .t. .myChanger2.visible = .t. endwith **** Set the LocaleId to the previous value =sys(3006,val(nlLocaleId)) read events define class myquit as commandbutton left=1 top=0 Autosize = .T. Caption="Close" procedure click release all clear events endproc enddefine define class myDataChanger as commandbutton left=150 top=0 Autosize = .T. Caption="Change some data" procedure click wait window nowait "Changing cell values..." with thisform.myGraph.object.application.datasheet select test scan if isnull(sine) .Cells(recno()+1,2).Value = sin(recno())*recno() endif endscan endwith select testgen thisform.myGraph.doverb(-6) wait clear endproc enddefine define class myTypeChanger as commandbutton left=300 top=0 Autosize = .T. Caption="Change Chart Type" procedure click thisform.myGraph.charttype = xlBubble3dEffect thisform.myGraph.doverb(-6) endproc enddefine define class myreport as commandbutton left=1 top=0 Autosize = .T. Caption="Report" procedure click * warning !!! - Testgraph prepared manually containing gen field and sized messagebox("If you changed graphtype click once to update."+chr(13)+"This is a quirk of MSGraph.") report form testgraph preview endproc enddefineCetin