📄 maincontrols.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "MainControls"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 主控集合类
' 作者:黄涛
' 日期:1998.02.21
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
'主控对象集合
Private mcolMainControls As New Collection
Private mcolUnloadForm As New Collection
'添加方法,在集合中创建一个新的主控对象
Public Function Add(ByVal frmForm As Form) As MainControl
Dim clsMainControl As MainControl
Dim lnghWnd As Long
Dim intCount As Integer
Dim frmTemp As Form
'完全卸载已 Unload 的窗体
For intCount = 1 To mcolUnloadForm.Count
Set frmTemp = mcolUnloadForm.Item(1)
mcolUnloadForm.Remove 1
Set frmTemp = Nothing
Next intCount
lnghWnd = frmForm.hwnd
Set clsMainControl = New MainControl
clsMainControl.Form = frmForm
'在上机日志中,登录进入窗体时间
clsMainControl.LogID = SysLog.LogIn(frmForm.Caption)
'发出上机日志更新消息
gclsSys.SendMessage lnghWnd, Message.msglog
'装载窗体图片资源
LoadFormResPicture frmForm
'从系统注册表中加载窗体位置、大小
LoadFormSetting frmForm
'加入主控对象集合
mcolMainControls.Add clsMainControl, CStr(lnghWnd)
Set Add = clsMainControl
End Function
'返回集合中按照参数vntIndex指定的元素
Public Property Get Item(vntIndex As Variant) As MainControl
Attribute Item.VB_UserMemId = 0
'参数vntIndexKey可以是集合元素的索引或关键字
On Error Resume Next
Set Item = mcolMainControls(vntIndex)
End Property
' 返回集合中元素数目
Public Function Count() As Long
Count = mcolMainControls.Count
End Function
'删除集合中按照参数lnghWnd指定的元素
Public Sub Remove(ByVal frmForm As Form)
Dim clsMainControl As MainControl
On Error Resume Next
'把窗体位置、大小存储到系统注册表
SaveFormSetting frmForm
'从主控对象集合中返回主控
Set clsMainControl = gclsSys.MainControls.Item(CStr(frmForm.hwnd))
'在上机日志中,登录退出窗体时间
SysLog.LogOut clsMainControl.LogID
'向上机日志窗体frmLog,发出上机日志更新消息
gclsSys.SendMessage frmForm.hwnd, Message.msglog
'RemoveRes
Utility.UnLoadFormResPicture frmForm
'加入已 Unload 的窗体集合,以便完全卸载
mcolUnloadForm.Add frmForm, CStr(frmForm.hwnd)
'从主控对象集合中清除
mcolMainControls.Remove CStr(frmForm.hwnd)
UpdateMenuStatus
End Sub
'本属性允许用 For...Each 语法枚举该集合。
Public Function NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
Set NewEnum = mcolMainControls.[_NewEnum]
End Function
'更新与子窗体相关的菜单项的可用性
Private Sub UpdateMenuStatus()
With frmMain
' 设置MDI主窗口菜单可用标志
.mnuEditUndo.Enabled = False
.mnuFilePrintSetup.Enabled = False
.mnuEditCut.Enabled = False
.mnuEditCopy.Enabled = False
.mnuEditPaste.Enabled = False
.mnuEditInsLine.Enabled = False
.mnuEditDelLine.Enabled = False
.mnuEditEdit.Enabled = False
.mnuEditNew.Enabled = False
.mnuEditDel.Enabled = False
.mnuEditInActive.Enabled = False
.mnuEditShowAll.Enabled = False
.mnuEditShowList.Enabled = False
.mnuEditUse.Enabled = False
.mnuEditNotepad.Enabled = False
.mnuEditFilter.Enabled = False
.mnuEditColumn.Enabled = False
.mnuFilePrintSetup.Enabled = False
.mnuFilePrint.Enabled = False
.mnuFilePrintReceipt.Enabled = False
.mnuReportQuick.Enabled = False
.mnuToolRefresh.Enabled = False
.mnuEditSearch.Enabled = True
.SetToolBar
End With
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -