📄 mdimain.frm
字号:
End
Begin VB.Menu mPreviewItemFileBar
Caption = "&V 打印预览..."
End
Begin VB.Menu mPrintItemFileBar
Caption = "&P 打印..."
End
Begin VB.Menu mSepPrintExitFileBar
Caption = "-"
End
Begin VB.Menu mExitItemFileBar
Caption = "&X 退出"
End
End
Begin VB.Menu mViewBar
Caption = "&V 数据处理"
Begin VB.Menu mAndataItemViewBar
Caption = "&A 输出模拟量数据"
End
Begin VB.Menu mAnwaveItemViewBar
Caption = "&W 模拟量波形"
End
Begin VB.Menu mSepAnDiViewBar
Caption = "-"
End
Begin VB.Menu mDidataItemViewBar
Caption = "&D 输出开关量数据"
End
Begin VB.Menu mDisequItemViewBar
Caption = "&S 开关量波形"
End
End
Begin VB.Menu mWindowBar
Caption = "&W 窗口"
Begin VB.Menu mTileHorzItemWindowBar
Caption = "&H 横向平铺"
End
Begin VB.Menu mTileVerticalItemWindowBar
Caption = "&V 纵向平铺"
End
Begin VB.Menu mCascadeItemWindowBar
Caption = "&A 层叠"
End
Begin VB.Menu mIconItemWindowBar
Caption = "&I 排列图标"
End
End
Begin VB.Menu mHelpBar
Caption = "&A 帮助"
Begin VB.Menu mHelpItemHelpBar
Caption = "&H 使用说明"
End
Begin VB.Menu mSepHelpComHelpBar
Caption = "-"
End
Begin VB.Menu mToolItemHelpBar
Caption = "&D 关于COMTRADE数据处理工具"
End
Begin VB.Menu mSepComWebHelpBar
Caption = "-"
End
Begin VB.Menu mAccessWebItemHelpBar
Caption = "&W 访问公司主页"
End
Begin VB.Menu mTechSupportItemHelpBar
Caption = "&T 需要技术支持"
End
Begin VB.Menu mWebMeHelpBar
Caption = "-"
End
Begin VB.Menu mApexItemHelpBar
Caption = "&M 关于成都艾派科斯科技有限公司"
End
End
End
Attribute VB_Name = "mdiMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Const cnEquipNameStatusBar = 1 ' 状态栏:记录装置名称
Const cnEquipIdStatusBar = 2 ' 状态栏:记录装置ID
Const cnAnDIChnsStatusBar = 3 ' 状态栏:模拟量/开关量通道数
Const cnTotalPointsStatusBar = 4 ' 状态栏:采样总点数
Const cnTotalTimeStatusBar = 5 ' 状态栏:采样总时间
Const cnFreqSegStatusBar = 6 ' 状态栏:不同采样频率的数据段数
Const cnAcqTimeStatusBar = 7 ' 状态栏:采样时刻
Const cnFileTypeStatusBar = 8 ' 状态栏:文件格式
Const cnFileSizeStatusBar = 9 ' 状态栏:文件尺寸
' 刷新状态栏显示
Sub subRefreshStatusBar()
rComtradeFileHeadInfor.sCfgFileName = Trim(rComtradeFileHeadInfor.sCfgFileName)
If rComtradeFileHeadInfor.sCfgFileName = "" Then ' 当前配置文件名称
' 未选择文件
mdiMain.Caption = csProgramTitle
StatusBar1.Panels(cnEquipNameStatusBar) = "空闲..." ' 状态栏:记录装置名称
StatusBar1.Panels(cnEquipIdStatusBar) = "" ' 状态栏:记录装置ID
StatusBar1.Panels(cnAnDIChnsStatusBar) = "" ' 状态栏:模拟量/开关量通道数
StatusBar1.Panels(cnTotalPointsStatusBar) = "" ' 状态栏:采样总点数
StatusBar1.Panels(cnTotalTimeStatusBar) = "" ' 状态栏:采样总时间
StatusBar1.Panels(cnFreqSegStatusBar) = "" ' 状态栏:不同采样频率的数据段数
StatusBar1.Panels(cnAcqTimeStatusBar) = "" ' 状态栏:采样时刻
StatusBar1.Panels(cnFileTypeStatusBar) = "" ' 状态栏:文件格式
StatusBar1.Panels(cnFileSizeStatusBar) = "" ' 状态栏:文件尺寸
Else
If rComtradeFileHeadInfor.blFileValid = True Then
' 当前配置文件有效
mdiMain.Caption = csProgramTitle + " - [" + Trim(rComtradeFileHeadInfor.sCfgFileName) + "]" ' 窗口标题
StatusBar1.Panels(cnEquipNameStatusBar) = Trim$(rComtradeFileHeadInfor.sEquipName) ' 状态栏:记录装置名称
StatusBar1.Panels(cnEquipIdStatusBar) = rComtradeFileHeadInfor.lEquipId ' 状态栏:记录装置ID
StatusBar1.Panels(cnAnDIChnsStatusBar) = Format(rComtradeFileHeadInfor.lTotalAnalogChs, "0") + "A/" + Format(rComtradeFileHeadInfor.lTotalSwitchChs, "0") + "D" ' 状态栏:模拟量/开关量通道数
StatusBar1.Panels(cnTotalPointsStatusBar) = rComtradeAcqSegInfor(rComtradeFileHeadInfor.iNumberOfAcqSeg).lEndPointOffset ' 状态栏:采样总点数
StatusBar1.Panels(cnFreqSegStatusBar) = rComtradeFileHeadInfor.iNumberOfAcqSeg ' 状态栏:不同采样频率的数据段数
StatusBar1.Panels(cnAcqTimeStatusBar) = Format(rComtradeFileHeadInfor.dAcqZeroTime, "YYYY-MM-DD HH:MM:SS") + "." + Format(rComtradeFileHeadInfor.lAcqZeroUsec, "000000") ' 状态栏:采样时刻
StatusBar1.Panels(cnFileTypeStatusBar) = Trim$(rComtradeFileHeadInfor.sFileFormat) ' 状态栏:文件格式
StatusBar1.Panels(cnFileSizeStatusBar) = FileLen(rComtradeFileHeadInfor.sDatFileName) ' 状态栏:文件尺寸
' 计算采样总时间:Σ(各采样频率段采样点数/采样频率)
Dim i As Integer, fTotalTime As Single
fTotalTime = 0# ' 秒
For i = 1 To rComtradeFileHeadInfor.iNumberOfAcqSeg
If i = 1 Then
fTotalTime = rComtradeAcqSegInfor(i).lEndPointOffset / rComtradeAcqSegInfor(i).fPointsPerSec
Else
fTotalTime = fTotalTime + (rComtradeAcqSegInfor(i).lEndPointOffset - rComtradeAcqSegInfor(i - 1).lEndPointOffset) / rComtradeAcqSegInfor(i).fPointsPerSec
End If
Next i
StatusBar1.Panels(cnTotalTimeStatusBar) = Format(fTotalTime, "0.000000") + "s" ' 状态栏:采样总时间
Else
' 当前配置文件无效
mdiMain.Caption = csProgramTitle + " - [" + Trim(rComtradeFileHeadInfor.sCfgFileName) + "]" ' 窗口标题
StatusBar1.Panels(cnEquipNameStatusBar) = "" ' 状态栏:记录装置名称
StatusBar1.Panels(cnEquipIdStatusBar) = "" ' 状态栏:记录装置ID
StatusBar1.Panels(cnAnDIChnsStatusBar) = "" ' 状态栏:模拟量/开关量通道数
StatusBar1.Panels(cnTotalPointsStatusBar) = "" ' 状态栏:采样总点数
StatusBar1.Panels(cnTotalTimeStatusBar) = "" ' 状态栏:采样总时间
StatusBar1.Panels(cnFreqSegStatusBar) = "" ' 状态栏:不同采样频率的数据段数
StatusBar1.Panels(cnAcqTimeStatusBar) = "" ' 状态栏:采样时刻
StatusBar1.Panels(cnFileTypeStatusBar) = "" ' 状态栏:文件格式
StatusBar1.Panels(cnFileSizeStatusBar) = "" ' 状态栏:文件尺寸
End If
End If
End Sub
Private Sub mAccessWebItemHelpBar_Click()
'Opens users default web browser and navigates to the selected URL
Dim strURL As String
strURL = "http://www.apextech.com.cn"
Call ShellExecute(Me.hwnd, "Open", strURL, "", "", SW_SHOWMAXIMIZED)
End Sub
Private Sub mAndataItemViewBar_Click()
If rComtradeFileHeadInfor.lTotalAnalogChs < 1 Then
MsgBox "对不起,数据文件中没有模拟量信息", vbInformation + vbOKOnly, "操作失误"
Exit Sub
End If
If rComtradeFileHeadInfor.blFileValid = False Then
MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
Exit Sub ' 当前数据文件是否有效
End If
frmOutputAnalog.Show vbNormal
End Sub
Private Sub mAnwaveItemViewBar_Click()
If rComtradeFileHeadInfor.lTotalAnalogChs < 1 Then
MsgBox "对不起,数据文件中没有模拟量信息", vbInformation + vbOKOnly, "操作失误"
Exit Sub
End If
If rComtradeFileHeadInfor.blFileValid = False Then
MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
Exit Sub ' 当前数据文件是否有效
End If
End Sub
Private Sub mApexItemHelpBar_Click()
If Dir(App.Path + "\gongsijieshao.htm") = "" Then
frmAboutApexTechDialog.Show vbNormal
Else
frmAboutApexTech.Show vbNormal ' 加载网页方式
End If
End Sub
Private Sub mCascadeItemWindowBar_Click()
Me.Arrange vbCascade
End Sub
' 关闭可能的子窗口
Sub CloseAllChildWindows()
Unload frmOutputAnalog ' ANDATA
Unload frmOutputSwitch ' DIDATA
End Sub
Private Sub mCloseItemFileBar_Click()
CloseAllChildWindows ' 关闭可能的子窗口
rComtradeFileHeadInfor.sCfgFileName = ""
rComtradeFileHeadInfor.sDatFileName = ""
rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
subRefreshStatusBar ' 刷新状态栏显示
End Sub
Private Sub mDidataItemViewBar_Click()
If rComtradeFileHeadInfor.lTotalSwitchChs < 1 Then
MsgBox "对不起,数据文件中没有开关量信息", vbInformation + vbOKOnly, "操作失误"
Exit Sub
End If
If rComtradeFileHeadInfor.blFileValid = False Then
MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
Exit Sub ' 当前数据文件是否有效
End If
frmOutputSwitch.Show vbNormal
End Sub
Private Sub MDIForm_Load()
Me.WindowState = vbMaximized ' 窗口最大化
' 初始化对话框
CommonDialog1.Filter = "COMTRADE配置文件(*.CFG)|*.CFG|所有文件格式(*.*)|*.*"
subRefreshStatusBar ' 刷新状态栏显示
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
If MsgBox("确认退出程序吗", vbYesNo + vbQuestion, "退出程序") = vbYes Then
End
End If
Cancel = 1
End Sub
Private Sub mDisequItemViewBar_Click()
If rComtradeFileHeadInfor.lTotalSwitchChs < 1 Then
MsgBox "对不起,数据文件中没有开关量信息", vbInformation + vbOKOnly, "操作失误"
Exit Sub
End If
If rComtradeFileHeadInfor.blFileValid = False Then
MsgBox "请先打开有效的数据文件", vbCritical + vbOKOnly, "操作失误"
Exit Sub ' 当前数据文件是否有效
End If
End Sub
Private Sub mExitItemFileBar_Click()
If MsgBox("确认退出程序吗", vbYesNo + vbQuestion, "退出程序") = vbYes Then
End
End If
End Sub
Private Sub mIconItemWindowBar_Click()
Me.Arrange vbArrangeIcons
End Sub
Private Sub mOpenItemFileBar_Click()
CommonDialog1.DialogTitle = "请选择COMTRADE格式的数据文件"
CommonDialog1.ShowOpen
Dim sCfgFileName As String, sOldCfgFileName As String
sCfgFileName = UCase$(Trim$(CommonDialog1.filename)) ' 当前数据文件名称
If sCfgFileName = "" Then Exit Sub ' 未选择文件
'保存原来的数据文件,以避免重复调用同一个文件,这样可以提高处理效率
sOldCfgFileName = rComtradeFileHeadInfor.sCfgFileName
' 取得重新选择的文件名称
rComtradeFileHeadInfor.sCfgFileName = sCfgFileName
' 配置文件的扩展名是否正确: 必须为CFG
If UCase$(Trim$(sGetExtOrNameOfFile(rComtradeFileHeadInfor.sCfgFileName, True))) <> "CFG" Then
rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
MsgBox "文件" + rComtradeFileHeadInfor.sCfgFileName + "扩展名错误! 文件名必须符合*.CFG格式。", vbOKOnly + vbCritical, "文件选择错误"
Exit Sub
End If
If Dir(rComtradeFileHeadInfor.sCfgFileName) = "" Then
rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
MsgBox "文件" + rComtradeFileHeadInfor.sCfgFileName + "不存在!", vbOKOnly + vbCritical, "文件选择错误"
Exit Sub
End If
' 得到数据文件名称
rComtradeFileHeadInfor.sDatFileName = sGetExtOrNameOfFile(rComtradeFileHeadInfor.sCfgFileName, False) + ".DAT" ' 当前数据文件名称
If Dir(rComtradeFileHeadInfor.sDatFileName) = "" Then
rComtradeFileHeadInfor.blFileValid = False ' 当前数据文件是否有效
MsgBox "文件" + rComtradeFileHeadInfor.sDatFileName + "不存在! 配置文件Name.CFG和数据文件Name.DAT必须配套。", vbOKOnly + vbCritical, "文件选择错误"
Exit Sub
End If
' 是否选择了相同的文件
' If UCase$(Trim$(sOldCfgFileName)) <> UCase$(Trim$(rComtradeFileHeadInfor.sCfgFileName)) Then
CloseAllChildWindows ' 关闭可能的子窗口
rComtradeFileHeadInfor.blFileValid = True ' 当前数据文件是否有效
Dim iMousePointer As Integer
iMousePointer = mdiMain.MousePointer ' 保存鼠标形状
mdiMain.MousePointer = vbHourglass ' 11 Hourglass (wait).
subGetFileInfor ' 得到数据文件信息
mdiMain.MousePointer = iMousePointer ' 恢复鼠标形状
' End If
subRefreshStatusBar ' 刷新状态栏显示
End Sub
Private Sub mPrinterItemFileBar_Click()
CommonDialog1.ShowPrinter
End Sub
Private Sub mTechSupportItemHelpBar_Click()
'Opens users default web browser and navigates to the selected URL
Dim strEmail As String
strEmail = "mailto:apextech@apextech.com.cn"
Call ShellExecute(Me.hwnd, "Open", strEmail, "", "", SW_SHOWMAXIMIZED)
End Sub
Private Sub mTileHorzItemWindowBar_Click()
Me.Arrange vbTileHorizontal
End Sub
Private Sub mTileVerticalItemWindowBar_Click()
Me.Arrange vbTileVertical
End Sub
Private Sub mToolItemHelpBar_Click()
frmAboutComtradeTool.Show vbNormal
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case UCase$(Trim(Button.Key))
Case "OPEN"
mOpenItemFileBar_Click
Case "ANDATA"
mAndataItemViewBar_Click
Case "ANWAVE"
mAnwaveItemViewBar_Click
Case "DIDATA"
mDidataItemViewBar_Click
Case "DIWAVE"
mDisequItemViewBar_Click
Case "PREVIEW"
Case "PRINT"
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -