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

📄 frmcodelib.frm

📁 vb控件代码大全
💻 FRM
📖 第 1 页 / 共 5 页
字号:
'
    ExportCodeItems
End Sub

Private Sub mnuImport_Click()
'
' Import a list of codeitems at the selected Node
'
    ImportCodeItems
End Sub

Private Sub mnuOpenDatabase_Click()
'
' Open a different VBCodeLibrary Database
'
    SelectDataBase
End Sub

Private Sub mnuRename_Click()
'
' Change the Label - remember, we only allow 50 Characters
'
    tvCodeItems.StartLabelEdit
End Sub

Private Sub mnuSettings_Click()
'
' Show Application settings
'
    ShowSettings
End Sub

Private Sub mnuViewBookMarks_Click()
'
' View the Bookmarks control
'
    ShowBookmarks Not (mbShowBookmarks)
    mnuViewBookMarks.Checked = mbShowBookmarks
End Sub

Private Sub picSysBar_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
'
' Here's where we handle the Icon Tray Messages
'
    Dim lMsg As Long
    Static bInHere As Boolean
    
    On Error GoTo vbErrorHandler
    
    lMsg = x / Screen.TwipsPerPixelX
    
    If bInHere Then Exit Sub
    
    bInHere = True
    Select Case lMsg
        Case WM_LBUTTONDBLCLK:
'
' On Mouse DoubleClick - Restore the window
'
            On Error Resume Next
            Me.Show
            
            If Me.WindowState = vbMinimized Then
                Me.WindowState = vbDefault
            End If
            Me.ZOrder
    End Select
    
    bInHere = False
    
    Exit Sub
    
vbErrorHandler:
    MsgBox Err.Number & " " & Err.Description & "  " & Err.Source & " frmCodeLib::picSysBar_MouseMove", , App.ProductName
End Sub


Private Sub tbTools_ButtonClick(ByVal Button As ComctlLib.Button)
'
' Handle a toolbar button click
'
On Error GoTo vbErrorHandler

    Dim oNodeTarget As Node
    
    Select Case UCase$(Button.Tag)
        Case "OPENDB"
            SelectDataBase
        Case "PRINT", "FIND"
            MsgBox "This will be implemented in a later version", vbInformation, App.ProductName
                        
        Case "NEW"
            AddCode
        Case "VIEWBOOKMARKS"
            ShowBookmarks Not (mbShowBookmarks)
            
        Case "BOOKMARK"
            AddBookMark
            
        Case "DELETE"
            DeleteCodeItem
        
        Case "PREVIOUS"
            Set oNodeTarget = tvCodeItems.SelectedItem.Previous
            If Not (oNodeTarget Is Nothing) Then
                Set tvCodeItems.SelectedItem = oNodeTarget
                SelectCodeItem oNodeTarget.Key
            Else
                Set oNodeTarget = tvCodeItems.SelectedItem.Parent
                If Not (oNodeTarget Is Nothing) Then
                    Set tvCodeItems.SelectedItem = oNodeTarget
                    SelectCodeItem oNodeTarget.Key
                End If
            End If
        
        Case "NEXT"
            SendMessageLong tvCodeItems.hwnd, TVM_SELECTITEM, TVGN_NEXT, 0&
            Set oNodeTarget = tvCodeItems.SelectedItem.Next
            If Not (oNodeTarget Is Nothing) Then
                Set tvCodeItems.SelectedItem = oNodeTarget
                SelectCodeItem oNodeTarget.Key
            Else
                Set oNodeTarget = tvCodeItems.SelectedItem.Child
                If Not (oNodeTarget Is Nothing) Then
                    Set tvCodeItems.SelectedItem = oNodeTarget
                    SelectCodeItem oNodeTarget.Key
                End If

            End If
        
        Case "SETTINGS"
            ShowSettings
            
    End Select
    

    Exit Sub

vbErrorHandler:
    MsgBox Err.Number & " " & Err.Description & " " & Err.Source, "frmCodeLib::tbTools_ButtonClick", , App.ProductName

End Sub

Private Sub DeleteCodeItem()

On Error GoTo vbErrorHandler
 
    Dim sKey As String
    Dim oNode As Node
    Dim sMessage As String
    Dim iDO As IDataObject
    Dim oCodeItem As CCodeItem
    Dim oParentNode As Node
    Dim oWait As CWaitCursor
    
    Set oNode = tvCodeItems.SelectedItem
    
    sKey = oNode.Key
    
    If sKey = "ROOT" Then Exit Sub
        
    If oNode Is Nothing Then
        MsgBox "No Selected Record", , App.ProductName
        Exit Sub
    End If
    
    sMessage = "Delete selected Code "
    
    If oNode.Children > 0 Then
        sMessage = sMessage & "and all child records ?"
    Else
        sMessage = sMessage & "?"
    End If
    
    If MsgBox(sMessage, vbYesNo + vbExclamation, "Delete Code Record") = vbNo Then
        Exit Sub
    End If
    
    Set oParentNode = oNode.Parent
    
    Set oWait = New CWaitCursor
    oWait.SetCursor
    
    BeginTrans
    
    RecursiveDeleteCode oNode
    
    CommitTrans
    
    tvCodeItems.Nodes.Remove sKey
    
    ctlBookMarkList.Initialise mDB
    
    SelectCodeItem tvCodeItems.SelectedItem.Key
    
    If oParentNode.Children = 0 Then
       oParentNode.Expanded = False
        If Not oParentNode.Key = "ROOT" Then
            oParentNode.Image = "CHILD"
        End If
        
    End If
    
    Set oWait = Nothing
    
    Exit Sub

vbErrorHandler:
    Set oWait = Nothing
    
    Rollback
    MsgBox Err.Number & " " & Err.Description & " " & Err.Source & " frmCodeLib::DeleteCodeItem", , App.ProductName

End Sub

Private Sub tmrDragTimer_Timer()
    Dim nHitNode As Node
    Static lCount As Long
'
' This timer has two functions :
'
' 1 - It will scroll the TreeView when the user is dragging
'
' 2 - It will auto-expand a node when the user drags over it for more than
'     half a second.
'
' Both pieces of code stolen from the MDSN.
'

    If mnDragNode Is Nothing Then
        tmrDragTimer.Enabled = False
        Exit Sub
    End If
    
    lCount = lCount + 1
    If lCount > 10 Then
    
        Set nHitNode = tvCodeItems.DropHighlight
        If nHitNode Is Nothing Then Exit Sub
        
        If nHitNode.Expanded = False Then
            nHitNode.Expanded = True
        End If
        lCount = 0
    End If
    
    If miScrollDir <> 0 Then
        If miScrollDir = -1 Then
            SendMessageLong tvCodeItems.hwnd, WM_VSCROLL, 0, 0
        Else
            SendMessageLong tvCodeItems.hwnd, WM_VSCROLL, 1, 0
        End If
    End If
    
    
End Sub

Private Sub tvCodeItems_AfterLabelEdit(Cancel As Integer, NewString As String)
    Dim iDO As IDataObject
    Dim oCodeItem As CCodeItem
    Dim sKey As String

On Error GoTo vbErrorHandler

    If Len(NewString) = 0 Then
        MsgBox "You must enter some text for a description", vbInformation, App.ProductName
        Cancel = True
        Exit Sub
    End If
    
    Set iDO = New CCodeItem
    Set oCodeItem = iDO
    
    sKey = tvCodeItems.SelectedItem.Key
    sKey = Right$(sKey, Len(sKey) - 1)
    
    iDO.Initialise mDB, sKey
    oCodeItem.Description = NewString
    StatusBar1.Panels(1).Text = NewString
    
    iDO.Commit
    
    SelectCodeItem tvCodeItems.SelectedItem.Key
    
    Exit Sub

vbErrorHandler:

    MsgBox Err.Number & " " & Err.Description & " " & Err.Source & "frmCodeLib::tvCodeItems_AfterLabelEdit", , App.ProductName

End Sub

Private Sub tvCodeItems_BeforeLabelEdit(Cancel As Integer)
    Dim lEditHWND As Long
'
' Limit the text entry size to 50 characters (as defined in our database
'
    
'
' Get the handle of the Edit Box on the treeview
'
    lEditHWND = SendMessageLong(tvCodeItems.hwnd, TVM_GETEDITCONTROL, 0, 0)
'
' Now limit the size to 50 characters
'
    If lEditHWND > 0 Then
        SendMessageLong lEditHWND, EM_LIMITTEXT, 50, 0
    End If
    
End Sub

Private Sub tvCodeItems_Collapse(ByVal Node As ComctlLib.Node)
    If Not Node.Key = "ROOT" Then
        Node.Image = "FOLDER"
    End If
    StatusBar1.Panels(1).Text = Node.Text
End Sub

Private Sub tvCodeItems_Expand(ByVal Node As ComctlLib.Node)
    If Not Node.Key = "ROOT" Then
        Node.ExpandedImage = "OPENFOLDER"
    End If
    StatusBar1.Panels(1).Text = Node.Text
End Sub

Private Sub tvCodeItems_KeyUp(KeyCode As Integer, Shift As Integer)
'
' Check for Delete Key pressed (Delete) and Insert (addNew)
'
    If tvCodeItems.SelectedItem.Key <> "ROOT" Then
        If KeyCode = vbKeyDelete Then
            DeleteCodeItem
            Exit Sub
        End If
    End If
    
    If KeyCode = vbKeyInsert Then
        AddCode
    End If
    
End Sub

Private Sub tvCodeItems_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Set mnDragNode = tvCodeItems.HitTest(x, y)
End Sub

Private Sub tvCodeItems_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    If mnDragNode Is Nothing Then Exit Sub
    
    If Button = vbLeftButton Then
        If mnDragNode.Key <> "ROOT" Then
'
' Start Dragging !
'
            Set tvCodeItems.SelectedItem = mnDragNode
            tmrDragTimer.Interval = 100
            tmrDragTimer.Enabled = True
            tvCodeItems.OLEDrag
        End If
    Else
        Set mnDragNode = Nothing
    End If
    
End Sub

Private Sub tvCodeItems_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim sKey As String
    Dim bIsRoot As Boolean
'
' Show Popup Menu
'
   
    If Button = vbRightButton Then
        bIsRoot = (StrComp(tvCodeItems.SelectedItem.Key, "ROOT", vbTextCompare) = 0)
        mnuRename.Enabled = Not (bIsRoot)
        mnuDeleteCode.Enabled = Not (bIsRoot)
        mnuBookMark.Enabled = Not (bIsRoot)
        PopupMenu mnuEdit
    End If
    
End Sub

Private Sub tvCodeItems_NodeClick(ByVal Node As ComctlLib.Node)
    SelectCodeItem Node.Key
End Sub

Private Sub DoToolBarLogic()
    Dim nNode As Node
    
    Set nNode = tvCodeItems.SelectedItem

    If nNode.Key = "ROOT" Then
        tbTools.Buttons("DELETE").Enabled = False
        tbTools.Buttons("BOOKMARK").Enabled = False
    Else
        tbTools.Buttons("DELETE").Enabled = True
        tbTools.Buttons("BOOKMARK").Enabled = True
    End If
    
End Sub

Private Sub InitControls()
'
' Make Toolbar Flat-Style
'

    Dim lStyle As Long
    Dim hToolbar As Long
    
    hToolbar = FindWindowEx(tbTools.hwnd, 0&, "ToolbarWindow32", vbNullString)
    
    lStyle = SendMessageLong(hToolbar, TB_GETSTYLE, 0&, 0&)
    
    If lStyle And TBSTYLE_FLAT Then
    '
    ' It's already flat
    '
    Else
        lStyle = lStyle Or TBSTYLE_FLAT
    End If
    
    SendMessageLong hToolbar, TB_SETSTYLE, 0, lStyle
    tbTools.Refresh
'
' Setup Track Select on the TreeView
'
    lStyle = GetWindowLong(tvCodeItems.hwnd, GWL_STYLE)
    
    lStyle = lStyle Or TVS_TRACKSELECT
    
    SetWindowLong tvCodeItems.hwnd, GWL_STYLE, lStyle
    
End Sub

Private Sub SelectCodeItem(ByVal sNodeKey As String)
    Dim iDO As IDataObject
    Dim sKey As String
    Dim oCodeItem As CCodeItem
'
' Select the relevant code item into our controls
'
    DoToolBarLogic
    
    If sNodeKey = "ROOT" Then
        ctlCodeItemDetails.Initialise mDB, Nothing
    Else
        Set iDO = New CCodeItem
        sKey = Right$(sNodeKey, Len(sNodeKey) - 1)
        iDO.Initialise mDB, sKey
        Set oCodeItem = iDO
        
'
' Setup our code window control
'
        StatusBar1.Panels(1).Text = oCodeItem.Description
        Set oCodeItem = Nothing
        
        ctlCodeItemDetails.Initialise mDB, iDO
'
' Setup our Bookmark list control
'
        ctlBookMarkList.FindBookmark tvCodeItems.SelectedItem.Text
        Set iDO = Nothing
    End If
    
End Sub

Private Sub GetLastDBName()
    Dim sDefaultDB As String
    Dim sDBName As String
'
' Get previously opened database name
'
    
    sDefaultDB = App.Path & "\" & DEFAULTDB
    
    sDBName = GetSetting("VBCodeLib", "Settings", "LastDB")
    
    If Len(sDBName) = 0 Then
        sDBName = sDefaultDB
        SaveSetting "VBCodeLib", "Settings", "LastDB", sDBName

⌨️ 快捷键说明

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