VB 版 (精华区)

发信人: student (earth), 信区: VB
标  题: 怎样弥补mschart中的一些不足之处
发信站: 哈工大紫丁香 (2001年06月15日18:21:13 星期五), 站内信件

:用MSchart控件来绘制统计数据图形,虽然其功能不如我前面所写的利用VB生成EXCEL图
形,但其也有其简单实用的一面,不占用多少系统内存,数据转换图形速度快,不过有
一点就是,当点击曲线时出现小方格时,不象生成EXCEL图形时有数字出现,不知是不是
我没有钻研透,如果是还望高手指教,现在我用一个简单的方法,就是用ListBox控件来
替代,使用方法是当双击Mschart的图形时ListBox控件出现数字,当双击ListBox控件时
,ListBox控件隐没,当这个作为软件的一个模块给我的老总看时,老总看了直点头。当
月加了奖金,让我打牙祭,你说好不好。闲话少说为妙,言归正传。就把上篇文章生成
EXCEL图形改为生成MSCHART,但不计算累计,由网友自建,新建工程1,本工程用到如下
两个类库,在“工程/引用”选:
  
  Microsoft ActiveX Data Objects 2.0 Library
  其中的部件有:
  microsoft Chart Control 6.0 (OLEDB 6.0)
  Microsoft Windows Common Controls-2 5.0(SP2)
  在表单中添加两个控件Dtpicker1,Dtpicker2分别用来确定销售起始日期数据和终止
日期数据添加命令按钮 Command1,MSchart控件,ListBox控件.把表单Name属性改为“X
SJE"
  
  Dim cn As New ADODB.Connection
  Dim xs As New ADODB.Recordset
  Private Sub Command1_Click()
   Dim daycy As Integer
   daycy = DTPicker2.Value - DTPicker1.Value
   If daycy < 0 Then
   MsgBox "您选取的时间范围计算机不能处理...(" & DTPicker2.Value & " <" & 
DTPicker1.Value & ")", vbOKOnly, "错误信息窗口"
   Exit Sub
  End If
   Dim day, dayf As String
   Dim yn As Boolean
   ReDim arrayzypxs(daycy, 3)
   If Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) = Mid(Format(DTPicker2.
Value, "yymmdd"), 3, 2) Then
   daystr = Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) & "月"
   Else
   daystr = Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) & "月" & Mid(Form
at(DTPicker2.Value, "yymmdd"), 3, 2) & "月 "
   End If
   cn.ConnectionString = "DSN=FoxPro Files;DBQ=g:xs;DefaultDir=g:xs;Driver
Id=536;MaxBufferSize=512;PageTimeout=5;"
   cn.Provider = "msdasql.1"
   cn.CursorLocation = adUseClient
   cn.Open
   For i = 0 To daycy
   day = CStr(Format(DTPicker1.Value + i, "yy-mm-dd"))
   day1 = Format(DTPicker1.Value, "yy-mm-dd")
   xs.Source = "select sum(je1) from xslbb where xslbb.date=#" & day & "#"

   Set xs.ActiveConnection = cn
   xs.Open
   arrayzyp(i, 0) = IIf(Mid(day, 3, 1) = "0", Mid(day, 4, 3), Mid(day, 3, 
4)) + "D"
   arrayzyp(i, 1) = xs.Fields(0) / 10000
   List1.AddItem arrayzyp(i, 0) & Space(3) & arrayzyp(i, 1)
   Set xs.ActiveConnection = Nothing
   xs.Close
  Next i
  With xsje
   .Top = 150
   .Left = 500
   .Height = 6700
   .Width = 11000
  End With
  MSChart1.ChartType = VtChChartType2dLine
  MSChart1.ChartData = arrayzyp
  MSChart1.Plot.Axis(VtChAxisIdY).AxisScale.Type = VtChScaleTypeLinear
  MSChart1.Plot.Axis(VtChAxisIdY).CategoryScale.Auto = True
  MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 30000
  With MSChart1.Plot.Axis(VtChAxisIdY)
   .AxisTitle.VtFont.Size = 12
   .AxisTitle.VtFont.Name = "楷体_gb2312"
   .AxisTitle.Text = "销售金额(万元)"
   .AxisScale.Type = VtChScaleTypeLinear
   .CategoryScale.LabelTick = True
   .CategoryScale.DivisionsPerTick = 6000
   .Intersection.Point = 12
  End With
  End Sub
  Private Sub MSChart1_DblClick()
   List1.Visible = True
  End Sub
  Private Sub Form_Load()
   With xsje
   .Top = 3500
   .Left = 2500
   .Height = 2000
   .Width = 8000
   End With
   DTPicker1.Value = Now - day(Now) + 1
   DTPicker1.MaxDate = Now
   DTPicker2.Value = Now
  End Sub
  Private Sub List1_DblClick()
   List1.Visible = False
  End Sub

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.170.186]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.388毫秒