⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmchart.frm

📁 地理信息系统工程案例精选程序,本书所有案例均需要单独配置
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Object = "{4932CEF1-2CAA-11D2-A165-0060081C43D9}#2.0#0"; "Actbar2.OCX"
Object = "{65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCHRT20.OCX"
Begin VB.Form frmChart 
   Caption         =   "统计图表"
   ClientHeight    =   7290
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   10155
   Icon            =   "frmChart.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   7290
   ScaleWidth      =   10155
   StartUpPosition =   1  '所有者中心
   Begin ActiveBar2LibraryCtl.ActiveBar2 abTools 
      Align           =   1  'Align Top
      Height          =   495
      Left            =   0
      TabIndex        =   1
      Top             =   0
      Width           =   10155
      _LayoutVersion  =   1
      _ExtentX        =   17912
      _ExtentY        =   873
      _DataPath       =   ""
      Bands           =   "frmChart.frx":08A6
   End
   Begin MSChart20Lib.MSChart Chart1 
      Height          =   6720
      Left            =   120
      OleObjectBlob   =   "frmChart.frx":1C02
      TabIndex        =   0
      Top             =   495
      Width           =   9975
   End
End
Attribute VB_Name = "frmChart"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Type cusRange
    NumberBegin As Double
    NumberEnd As Double
End Type
Private Type cusPeriod
    DateBegin As Date
    DateEnd As Date
End Type

Private Sub abTools_TextChange(ByVal Tool As ActiveBar2LibraryCtl.Tool)
'------------------------------------------------------------------
'工具栏文字改变
'------------------------------------------------------------------
If Tool.Name = "cmbX" Then
    With abTools.Bands("barTools").Tools("cmbX")
    Select Case frmTrackSearch.GetFieldType(.CBList(.CBListIndex))
        Case 2
            '数值类型字段
            'Double or Long
            frmChSet.OptMethod(2).Value = True
            frmChSet.OptMethod(0).Enabled = False
            frmChSet.OptMethod(1).Enabled = False
            frmChSet.txtDay.Enabled = False
            frmChSet.txtMonth.Enabled = False
            frmChSet.OptMethod(2).Enabled = True
            frmChSet.txtRange.Enabled = True
        Case 1
            '日期类型字段
            'Date
            frmChSet.OptMethod(1).Value = True
            frmChSet.OptMethod(0).Enabled = True
            frmChSet.OptMethod(1).Enabled = True
            frmChSet.txtDay.Enabled = True
            frmChSet.txtMonth.Enabled = True
            frmChSet.OptMethod(2).Enabled = False
            frmChSet.txtRange.Enabled = False
        
        Case 0
            '字符串类型字段
            'String
            frmChSet.OptMethod(0).Value = True
            frmChSet.OptMethod(0).Enabled = True
            frmChSet.OptMethod(1).Enabled = False
            frmChSet.txtDay.Enabled = False
            frmChSet.txtMonth.Enabled = False
            frmChSet.OptMethod(2).Enabled = False
            frmChSet.txtRange.Enabled = False
        
    End Select
    End With
End If

End Sub

Private Sub abTools_ToolClick(ByVal Tool As ActiveBar2LibraryCtl.Tool)
'------------------------------------------------------------------
'工具栏按钮单击事件
'------------------------------------------------------------------
Select Case Tool.Name
    Case "cmdExit"
        '退出
        Unload Me
    Case "cmdGenerate"
        '生成统计图表
        Call GenerateChart
    Case "cmdSetup"
        '设置
        frmChSet.Show vbModal
End Select

End Sub

Private Sub Chart1_DblClick()
    '显示标注窗口
    frmChAnn.Show
End Sub

Private Sub Form_Resize()
'控件大小随着窗口大小变动
If frmChart.WindowState <> 1 Then
    Chart1.Height = frmChart.ScaleHeight - abTools.Height - 100
    Chart1.Width = frmChart.ScaleWidth - 250
End If

End Sub

Public Sub InitForm()
'------------------------------------------------------------------
'窗体初始化代码
'------------------------------------------------------------------
Dim lpField As Long

'初始化工具栏
With abTools.Bands("barTools")
    
    .Tools("cmbY").CBClear
    .Tools("cmbX").CBClear
    .Tools("cmbType").CBClear
    .Tools("cmbY").CBAddItem "记录数量"
     
    .Tools("cmbType").CBAddItem "1-二维条形图"
    .Tools("cmbType").CBAddItem "3-二维折线图"
    .Tools("cmbType").CBAddItem "5-二维域型图"
    .Tools("cmbType").CBAddItem "7-二维阶梯图"
    .Tools("cmbType").CBAddItem "9-二维组合图"
    .Tools("cmbType").CBListIndex = 0

End With

'初始化X轴和Y轴字段
With frmTrackSearch.lstInfo.ColumnHeaders

    For lpField = 2 To .Count
        abTools.Bands("barTools").Tools("cmbX").CBAddItem .Item(lpField).Key
        If bIsNumberic(.Item(lpField).Key) Then
            abTools.Bands("barTools").Tools("cmbY").CBAddItem .Item(lpField).Key
        End If
    Next lpField

End With

abTools.Bands("barTools").Tools("cmbX").CBListIndex = 0
abTools.Bands("barTools").Tools("cmbY").CBListIndex = 0

'清除Chart中已有数据
Chart1.ColumnCount = 1
Chart1.RowCount = 1
Chart1.Data = 1

End Sub

Private Sub GeneChart_Point()
'------------------------------------------------------------------
'生成单点统计的统计图表
'------------------------------------------------------------------
Dim stringx As New MapObjects2.Strings
Dim xField As String
Dim yField As String

Dim lpRecord As Long
Dim ListX As ListItem
Dim strTemp As String
Dim strArray() As String

'获取用户设置
With abTools.Bands("barTools")
    xField = .Tools("cmbX").CBList(.Tools("cmbX").CBListIndex)
    yField = .Tools("cmbY").CBList(.Tools("cmbY").CBListIndex)
    Chart1.ChartType = .Tools("cmbType").CBListIndex * 2 + 1
End With

With frmTrackSearch.lstInfo

    For lpRecord = 1 To .ListItems.Count
        Set ListX = .ListItems(lpRecord)
        stringx.Add ListX.ListSubItems(xField).text
    Next lpRecord
    
    If stringx.Count2 <= 0 Then Exit Sub
    
    '初始化用于存储x轴数据的数组
    
    ReDim strArray(stringx.Count2)
    Dim i As Long
    Dim J As Long
    
    For i = 0 To stringx.Count2 - 1
        strArray(i) = stringx(i)
    Next i
    
    '对数组排序
    
    For i = 0 To stringx.Count - 2
        For J = i + 1 To stringx.Count - 1
            
            If bCompare(strArray(i), strArray(J)) Then
                strTemp = strArray(i)
                strArray(i) = strArray(J)
                strArray(J) = strTemp
            End If
            
        Next J
    Next i
    
    Dim lFieldCount As Long
    
    Chart1.RowCount = stringx.Count2
    Chart1.ColumnCount = 1
    
    Dim ListX_1 As ListItem
    Dim ListX_2 As ListItem
    frmChAnn.lstAnnotation.ColumnHeaders.Clear
    frmChAnn.lstAnnotation.ListItems.Clear
    
    Call frmChAnn.lstAnnotation.ColumnHeaders.Add(Width:=1)
    Set ListX_1 = frmChAnn.lstAnnotation.ListItems.Add
    Set ListX_2 = frmChAnn.lstAnnotation.ListItems.Add
    
    For lpRecord = 1 To stringx.Count2
        
        Chart1.Row = lpRecord
        Chart1.RowLabel = CStr(lpRecord)
        '建立横轴标注
        frmChAnn.lstAnnotation.ColumnHeaders.Add
        ListX_1.ListSubItems.Add text:=CStr(lpRecord)
        ListX_2.ListSubItems.Add text:=strArray(lpRecord - 1)
        
        Chart1.Data = 0
    
    Next lpRecord
    
    '建立图表
    Chart1.Visible = False
    
    For lpRecord = 1 To .ListItems.Count
        Set ListX = .ListItems(lpRecord)
        For i = 1 To Chart1.RowCount
            Chart1.Row = i
            If ListX.ListSubItems(xField).text = strArray(i - 1) Then
                If yField = "记录数量" Then
                    Chart1.Data = Val(Chart1.Data) + 1
                Else
                    Chart1.Data = Val(Chart1.Data) + Val(ListX.ListSubItems(Chart1.ColumnLabel).text)
                End If
                Exit For
            End If
        Next i
        DoEvents
    Next lpRecord
End With

Chart1.Visible = True
End Sub

Private Function GetAddDate(ByVal CurrentDate As Date) As Date
'------------------------------------------------------------------
'获取指定间隔后的时间
'------------------------------------------------------------------
CurrentDate = DateAdd("m", Abs(Int(Val(frmChSet.txtMonth))), CurrentDate)
CurrentDate = DateAdd("d", Abs(Int(Val(frmChSet.txtDay))), currrentdate)
GetAddDate = CurrentDate
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -