Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Plot graph to form
Message
De
08/09/1999 01:30:06
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
 
À
07/09/1999 13:11:36
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00262026
Message ID:
00262279
Vues:
19
>How to plot a graph to a from from data from the table?
>
>Any idea?

Angela,
Hope this helps :
*!*	Below example is for Graph8. (Nearly same as Excel charting)
*!* If you cannot download wc0993.exe from microsoft site or UT
*!*	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

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 (graphtest g)
APPEND blank
APPEND general graphtest class "msgraph" data MCGDATA
CREATE report testgraph from testgen
MESSAGEBOX("Now you'll see a report designer window."+chr(13)+;
  "Pls add an OLEBoundControl and size big enough." ;
  +chr(13)+"Use [graphtest] as fieldname")
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.graphtest"

    .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
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
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform