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

📄 maincontrols.cls

📁 金算盘软件代码
💻 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 + -