📄 passing data.frm
字号:
VERSION 5.00
Object = "{8996B0A4-D7BE-101B-8650-00AA003A5593}#4.0#0"; "CFX4032.OCX"
Begin VB.Form Form1
Caption = "Chart FX. Passing data to different chart types"
ClientHeight = 5040
ClientLeft = 60
ClientTop = 345
ClientWidth = 8925
LinkTopic = "Form1"
ScaleHeight = 5040
ScaleWidth = 8925
StartUpPosition = 3 'Windows Default
Begin ChartfxLibCtl.ChartFX ChartFX1
Height = 5055
Left = 0
TabIndex = 4
Top = 0
Width = 7095
_cx = 1710371043
_cy = 1710367444
_Version = 262144
Build = 6
TypeMask = 109576194
Axis(0).MinorStep= -10
Axis(2).MinorStep= -1
End
Begin VB.CheckBox Check2
Caption = "Cluster"
Height = 375
Left = 7320
TabIndex = 2
Top = 4320
Width = 855
End
Begin VB.CheckBox Check1
Caption = "3D"
Height = 375
Left = 7320
TabIndex = 1
Top = 3960
Width = 615
End
Begin VB.Frame Frame1
Caption = "Chart Types"
Height = 3735
Left = 7200
TabIndex = 3
Top = 120
Width = 1575
Begin VB.OptionButton Option2
Caption = "Pie/Doughnut"
Height = 375
Left = 120
TabIndex = 12
Top = 2520
Width = 1335
End
Begin VB.OptionButton Option3
Caption = "Bubble "
Height = 375
Left = 120
TabIndex = 11
Top = 1800
Width = 1215
End
Begin VB.OptionButton Option4
Caption = "OHLC "
Height = 375
Left = 120
TabIndex = 10
Top = 1440
Width = 1335
End
Begin VB.OptionButton Option5
Caption = "Pyramid"
Height = 375
Left = 120
TabIndex = 9
Top = 2880
Width = 1335
End
Begin VB.OptionButton Option6
Caption = "Line/Step"
Height = 375
Left = 120
TabIndex = 8
Top = 720
Width = 1215
End
Begin VB.OptionButton Option8
Caption = "Scatter (X/Y)"
Height = 375
Left = 120
TabIndex = 7
Top = 2160
Width = 1335
End
Begin VB.OptionButton Option1
Caption = "Gantt "
Height = 375
Left = 120
TabIndex = 6
Top = 1080
Width = 1335
End
Begin VB.OptionButton Option9
Caption = "Radar"
Height = 375
Left = 120
TabIndex = 5
Top = 3240
Width = 975
End
Begin VB.OptionButton Option7
Caption = "Bar/Column"
Height = 375
Left = 120
TabIndex = 0
Top = 360
Width = 1335
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim i, j As Integer
Const CHART_HIDDEN = 1E+308
Private Sub Check1_Click()
If Check1.Value Then
ChartFX1.Chart3D = True
Else
ChartFX1.Chart3D = False
End If
End Sub
Private Sub Check2_Click()
If Check2.Value Then
ChartFX1.Cluster = True
Else
ChartFX1.Cluster = False
End If
End Sub
Private Sub Form_Load()
' Save initial status
ChartFX1.Export CHART_CFXOLEFILE, "original.chd"
End Sub
Private Sub Option1_Click()
Dim dFrom As Double
Dim dTo As Double
' Gantt chart
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = GANTT
.RGB2DBk = RGB(255, 255, 255)
.RGBBk = RGB(255, 255, 255)
.AxesStyle = CAS_FLATFRAME
' Y-Axis format
With .Axis(AXIS_Y)
.Grid = True
.GridColor = RGB(192, 192, 192)
.ResetScale
.Format = "DMMM, yy"
.Style = (.Style Or AS_CENTERED Or AS_INTERLACED) And Not AS_SHOWENDS
.LabelAngle = 90
.ResetScale
.STEP = 30 ' Monthly
End With
' x-Axis format
With .Axis(AXIS_X)
.Grid = True
.GridColor = RGB(192, 192, 192)
.Style = .Style Or AS_CENTERED
End With
' Set data and colors
' Starting point
.OpenDataEx COD_INIVALUES Or COD_REMOVE, 2, 8
' Ending point point
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 8
' Series legend
.Series(0).Legend = "Projected" ' White
.Series(1).Legend = "Actual" ' Black
.SerLegBox = True
' Bottom right
.SerLegBoxObj.Docked = TGFP_BOTTOM
.SerLegBoxObj.BorderStyle = BBS_MONOLINE
' Activities
ChartFX1.Title(CHART_TOPTIT) = "My Project"
dFrom = CDate("01/01/98")
For i = 0 To 7
' Projected
dFrom = dFrom + (Rnd * 60)
dTo = dFrom + (Rnd * 60)
.Series(0).YFrom(i) = dFrom
.Series(0).Yvalue(i) = dTo
' Actual
.Series(1).YFrom(i) = dFrom + (Rnd - 0.5) * 15
.Series(1).Yvalue(i) = dTo + (Rnd - 0.5) * 15
' Label
.Legend(i) = "Activity " + Str(i + 1)
Next i
' Adjust Min and Max
With .Axis(AXIS_Y)
.Min = CDate("01/01/98")
.Max = CDate("12/31/98")
End With
.CloseData COD_INIVALUES
.CloseData COD_VALUES
End With
End Sub
Private Sub Option2_Click()
' PIE Chart
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = PIE
'show point labels
.PointLabels = True
' Initialize data for 2 pies
' Each value represents a slice
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 10
For i = 0 To 9
.ValueEx(0, i) = 20 + Rnd * 100 ' First PIE
.ValueEx(1, i) = 40 + Rnd * 200 ' Second PIE
.Legend(i) = "Slice " + Str(i + 1)
Next i
.CloseData COD_VALUES
'to separate the same slice in both the pies
.SeparateSlice(2) = 25 ' First pie 3rd slice
.SeparateSlice(12) = 25 ' Second pie
'to assign the series legend (PIE TITLES)
.Series(0).Legend = "Male"
.Series(1).Legend = "Female"
'to assign colors to the slices (10 slices per pie)
.Palette = "Spring"
.OpenDataEx COD_COLORS, 10, 0
For j = 0 To 9
.Color(j) = CHART_PALETTECOLOR Or Rnd * 40
Next j
.CloseData COD_COLORS
'to show the values legend box
.LegendBox = True
.LegendBoxObj.Docked = TGFP_BOTTOM
End With
End Sub
Private Sub Option3_Click()
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = BUBBLE
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 6
For i = 0 To 5
.ValueEx(0, i) = 10 + Rnd * 80 ' Bubble position (Y)
.ValueEx(1, i) = 60 + Rnd * 40 ' Bubble size
Next i
.CloseData COD_VALUES
End With
End Sub
Private Sub Option4_Click()
Dim d As Double
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = OPENHILOWCLOSE
.Volume = 20 ' Thin bars
' Init data
.OpenDataEx COD_VALUES Or COD_REMOVE, 4, 30
For i = 0 To 29
d = 60 + (Rnd * 40)
.ValueEx(OHLC_LOW, i) = d - (Rnd * 60)
.ValueEx(OHLC_HIGH, i) = d
.ValueEx(OHLC_OPEN, i) = d - (Rnd * 20)
.ValueEx(OHLC_CLOSE, i) = d - (Rnd * 20)
Next i
.CloseData COD_VALUES
' Format X-Axis
With .Axis(AXIS_X)
.Format = AF_DATE
.Min = Now + 30
.STEP = 7 ' Weekly
.FirstLabel = 1 ' Show first day
End With
' Init colors
.OpenDataEx COD_COLORS, 3, 0
.Color(0) = RGB(0, 255, 0) ' Went down !
.Color(1) = RGB(255, 0, 0) ' Went up !
.Color(2) = RGB(0, 0, 0)
.Color(3) = RGB(0, 0, 0)
.CloseData COD_COLORS
End With
End Sub
Private Sub Option5_Click()
' PYRAMID
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = PYRAMID
' Init data. This is similar to PIE. Each series is a separate pyramid
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 5
For i = 0 To 4
.ValueEx(0, i) = 10 + Rnd * 100 ' First pyramid
.ValueEx(1, i) = 10 + Rnd * 100 ' Second pyramid
.Legend(i) = "Slice " + Str(i + 1)
Next i
.CloseData COD_VALUES
'Assign the series legend (PYRAMID TITLES)
.Series(0).Legend = "Male"
.Series(1).Legend = "Female"
End With
End Sub
Private Sub Option6_Click()
' Line/Step
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = STEP
' Init data. Each series is a separate line
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 10
For i = 0 To 9
.ValueEx(0, i) = Rnd * 50 ' First line
.ValueEx(1, i) = 50 + Rnd * 50 ' Second line
.Legend(i) = "Label" + Str(i + 1)
Next i
.CloseData COD_VALUES
' Hide one point
.ValueEx(0, 5) = CHART_HIDDEN
' Set color for each line
.OpenDataEx COD_COLORS, 2, 0
.Series(0).Color = CHART_PALETTECOLOR Or 44
.Series(1).Color = CHART_PALETTECOLOR Or 45
.CloseData COD_COLORS
' Series legend
.Series(0).Legend = "Yes"
.Series(1).Legend = "No"
.SerLegBox = True
.SerLegBoxObj.Docked = TGFP_FLOAT
End With
End Sub
Private Sub Option7_Click()
' Bars
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = BAR
' Init data. 2 Series and 6 points means
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 6
For i = 0 To 5
.ValueEx(0, i) = Rnd * 50 ' First Bar in the group
.ValueEx(1, i) = 50 + Rnd * 50 ' Second Bar in the group
Next i
.CloseData COD_VALUES
' Set color for each series
.OpenDataEx COD_COLORS, 2, 0
.Series(0).Color = RGB(0, 255, 0)
.Series(1).Color = RGB(255, 0, 0)
.CloseData COD_COLORS
' Series legend
.Series(0).Legend = "YES"
.Series(1).Legend = "NO"
.SerLegBox = True
.SerLegBoxObj.Docked = TGFP_TOP
End With
End Sub
Private Sub Option8_Click()
' SCATTER (X/Y)
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = SCATTER
.MarkerSize = 5
' Set X/Y data
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 10
.OpenDataEx COD_XVALUES, 2, 10
' Double scale
.Series(0).YAxis = AXIS_Y
.Series(1).YAxis = AXIS_Y2
For i = 0 To 9
.ValueEx(0, i) = Rnd * 100
.XValueEx(0, i) = i * i
.ValueEx(1, i) = Rnd * 100000
.XValueEx(1, i) = i * i + i
Next i
.CloseData COD_VALUES
.CloseData COD_XVALUES
' make second series a line
.Series(0).Gallery = LINES
' Format X-Axis
With .Axis(AXIS_X)
.STEP = 10
.MinorStep = 5
.Grid = True
End With
' Format Primary Y-Axis
With .Axis(AXIS_Y)
.Min = 0
.Max = 100
End With
' Format Secondary Y-Axis
With .Axis(AXIS_Y2)
.Min = 0
.Max = 100000
End With
' Colors
.OpenDataEx COD_COLORS, 2, 0
.Series(0).Color = RGB(255, 0, 0)
.Series(1).Color = RGB(0, 255, 0)
.CloseData COD_COLORS
End With
End Sub
Private Sub Option9_Click()
' radar chart
With ChartFX1
' Start from original chart
.Import CHART_CFXOLEFILE, "original.chd"
.Gallery = RADAR
.MarkerShape = MK_NONE
.LineWidth = 2
' Init Y-Axis (Radius)
With .Axis(AXIS_Y)
.ResetScale
.Decimals = 0
End With
' Init data. Each series is a line (color)
' The chart is drawn clockwise. The first point is at 12:00
' There are as many radius lines as points (60 in this case)
.OpenDataEx COD_VALUES Or COD_REMOVE, 2, 60
For i = 0 To 59
.ValueEx(0, i) = i ' Distance from center (first line)
.ValueEx(1, i) = i * 2 ' Distance from center (second line)
.Legend(i) = Str(i)
Next i
.CloseData COD_VALUES
' Format X axis (around)
With .Axis(AXIS_X)
.STEP = 5 ' A radius line every 45 points
.Grid = True
.FirstLabel = 1 ' First label at 12:00
End With
End With
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -