Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
MS Graph riddle
Message
From
17/11/1998 01:35:52
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Reports & Report designer
Title:
Miscellaneous
Thread ID:
00156885
Message ID:
00158143
Views:
70
>Hi,
>
>Anybody out there who can divulge the secret of printing a pie graph using msgraph, via a general field in a report?
>
>I understand how to put the data in field, and I understand how to get the field displayed on the report. But I'm stuck with standard bar graphs, and I'd like sooo much to see them as a pies.
>
>TIA,
>
>Marc
Marc,
Just for pies, charttype is 4 in MSGraph5 & 5 in MSGraph8. In MSGraph5 types are enumerated from 1 to 14 and each have subtypes. If MSGraph5 then use autoformat(MainType,SubType). You can use autoformat with MSgraph8 too. For version 8 all VBA constants are in wc0993.exe. If you can't get it from MSSite inform me and I'll email. Well enough words, here is some code regarding graph formatting :
*!*	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
*!* cetin@neptune.imst.deu.edu.tr

*** 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 - Slower *
* MCGDATA = " " && Initialize with one empty cell - if will fill in object.Datasheet
* Data prepare - Slower *

* VFP preparing data is much faster
* Try commenting this part (between * Data prepare * labels)
* and uncommenting the commented part (between * Data prepare - Slower * labels)

* 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
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"

* Data prepare - Slower *
*!* FILLING DATA IN OBJECT DATASHEET
*!* wait window nowait "Filling cell values..."
*!* with .object.application.datasheet
*!* select test
*!* nRows = reccount()+1
*!* nCols = fcount()
*!* for ix = 1 to nCols
*!* .Cells(1,ix).Value = field(ix)
*!* endfor
*!* scan
*!* for ix = 1 to nCols
*!* if !isnull(evaluate(field(ix)))
*!* .Cells(recno()+1,ix).Value = evaluate(field(ix))
*!* endif
*!* endfor
*!* endscan
*!* endwith
* Data prepare - Slower *

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
* Testgraph prepared manually containing gen field and sized
report form testgraph preview
endproc
enddefine
Cetin

Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform