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

📄 frmlist.frm

📁 游戏《家园》源码
💻 FRM
字号:
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "Comctl32.ocx"
Begin VB.Form frmList 
   Caption         =   "List"
   ClientHeight    =   3192
   ClientLeft      =   60
   ClientTop       =   348
   ClientWidth     =   4680
   Icon            =   "frmList.frx":0000
   MDIChild        =   -1  'True
   MinButton       =   0   'False
   ScaleHeight     =   3192
   ScaleWidth      =   4680
   Begin ComctlLib.ListView lvList 
      Height          =   2955
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   4395
      _ExtentX        =   7747
      _ExtentY        =   5207
      View            =   3
      LabelEdit       =   1
      Sorted          =   -1  'True
      LabelWrap       =   -1  'True
      HideSelection   =   -1  'True
      _Version        =   327682
      ForeColor       =   -2147483640
      BackColor       =   -2147483643
      BorderStyle     =   1
      Appearance      =   1
      NumItems        =   3
      BeginProperty ColumnHeader(1) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Name"
         Object.Width           =   2540
      EndProperty
      BeginProperty ColumnHeader(2) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         SubItemIndex    =   1
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Value"
         Object.Width           =   2540
      EndProperty
      BeginProperty ColumnHeader(3) {0713E8C7-850A-101B-AFC0-4210102A8DA7} 
         SubItemIndex    =   2
         Key             =   ""
         Object.Tag             =   ""
         Text            =   "Info"
         Object.Width           =   2540
      EndProperty
   End
End
Attribute VB_Name = "frmList"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
    
Dim aPos(4) As Single

Dim sParK As String
Dim sCurK As String
    
Sub GetList(ByVal sPKey As String, ByVal sCKey As String)
    Dim nType As Integer
    
    Dim sTxt As String
    Dim sVal As String
    
    'Check flag
    If Not fMainForm.mnuViewList.Checked Then Exit Sub
    
    'Clear tree
    lvList.ListItems.Clear
    
    'Set keys
    If sPKey <> "" Then sParK = sPKey
    sCurK = sCKey
    
    'Reset caption
    Me.Caption = "List"
    
    'Check DB
    If bDBFlag = False Then Exit Sub
    
    'Check parent
    If Left(sParK, 1) = "l" Then
        'Set caption
        Me.Caption = "List - " + frmLevels.GetName(Val(Mid(sParK, 2)))
    End If
    
    'Check parent
    If Left(sParK, 1) = "o" Then
        'Get name
        sTxt = frmObjects.GetName(Val(Mid(sParK, 2)))
    
        'Get type
        nType = frmObjects.GetType(Val(Mid(sParK, 2)))
        Call misGetVal(frmMission.GetPrefix + MIS_SEC_OBJ + Trim(Str(nType - 1)), MIS_KEY_TYPE, sVal, MIS_MOD_CFG)
        
        'Truncate type
        sVal = TruncStr(sVal)
        
        'Check type
        If sVal <> "" Then sTxt = sVal + ": " + sTxt
                
        'Set caption
        Me.Caption = "List - " + sTxt
    End If
    
    'Get attribs
    GetAttribs
    
    'Check count
    If lvList.ListItems.Count > 0 Then
        'Check key
        If sCurK = "" Then sCurK = lvList.ListItems.Item(1).Key
    
        'Set item
        lvList.ListItems.Item(sCurK).Selected = True
    
        'Sel in tree
        frmTree.SelTree (sCurK)
    End If
End Sub

Sub GetAttribs()
    Dim sQuery As String
    
    Dim rsTemp As Recordset
    
    Dim itmCur As ListItem
    
    'Check recordset
    If rsAttribs.BOF = True Then Exit Sub
    
    'Reset Query
    sQuery = ""
    
    'Check key
    If Left(sParK, 1) = "l" Then
        'Set query
        sQuery = "SELECT * FROM Attrib WHERE Level = " + Mid(sParK, 2) + " AND Object = 0 ORDER BY Key"
    End If
    
    'Check key
    If Left(sParK, 1) = "o" Then
        'Set query
        sQuery = "SELECT * FROM Attrib WHERE Level = 0 AND Object = " + Mid(sParK, 2) + " ORDER BY Key"
    End If
    
    'Check query
    If sQuery = "" Then Exit Sub
    
    'Open temporary recordset by query
    If OpenRecordSetByQuery(sQuery, rsTemp, "") = False Then Exit Sub
        
    'Get data from recordset
    rsTemp.MoveFirst
    Do Until rsTemp.EOF
        Set itmCur = lvList.ListItems.Add(, "a" + Trim(Str(rsTemp!Key)), rsTemp!Name)
        itmCur.SubItems(1) = rsTemp!Value
        itmCur.SubItems(2) = rsTemp!Info
        rsTemp.MoveNext
    Loop
    
    'Close temporary recordset
    rsTemp.Close
End Sub

Sub Reset()
    Dim aP(4) As Single
    
    'Set list view position and size
    aP(0) = 0
    aP(1) = 0
    aP(2) = fMainForm.ScaleWidth / 4
    aP(3) = fMainForm.ScaleHeight
    
    'Move form
    On Error Resume Next
    Me.WindowState = vbNormal
    Call Me.Move(aP(0), aP(1), aP(2), aP(3))
    On Error GoTo 0
End Sub
    
Private Sub Form_Load()
    Dim n As Integer
    Dim nCount As Integer
    
    Dim nPos As Long
        
    Dim sList As String

    'Set list view position and size
    aPos(0) = 0
    aPos(1) = 0
    aPos(2) = fMainForm.ScaleWidth / 4
    aPos(3) = fMainForm.ScaleHeight
    
    'Reset count
    nCount = 0
    
    'Get window
    Call misGetListByKey(MIS_SEC_COM, MIS_KEY_LISTV, sList, nCount, MIS_MOD_INI)
    
    'Check count
    If nCount > 0 Then
        'Truncate list
        sList = TruncStr(sList)

        'Loop thru list
        For n = 0 To 3
            'Get position of | character in string
            nPos = InStr(sList, "|")
        
            'If possible, truncate string at | character
            If nPos > 0 Then
                'Set position
                aPos(n) = Val(Left(sList, nPos - 1)) * fConvScale
                sList = Mid(sList, nPos + 1, Len(sList))
            Else
                'Set position
                aPos(n) = Val(sList) * fConvScale
            End If
        Next n
    End If
    
    'Initialize form
    On Error Resume Next
    Call Me.Move(aPos(0), aPos(1), aPos(2), aPos(3))
    On Error GoTo 0
    fMainForm.mnuViewList.Checked = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim n As Integer
    
    Dim sList As String
    
    'Cleanup form
    fMainForm.mnuViewList.Checked = False

    'Check position
    If aPos(0) = Me.Left And aPos(1) = Me.Top And aPos(2) = Me.Width And aPos(3) = Me.Height Then Exit Sub
    
    'Set position
    aPos(0) = Me.Left
    aPos(1) = Me.Top
    aPos(2) = Me.Width
    aPos(3) = Me.Height
    
    'Reset list
    sList = ""
    For n = 0 To 3
        'Append list
        sList = sList + "|" + Format(aPos(n) / fConvScale, "0.0;-0.0")
    Next n
    
    'Put window
    Call misPutListByKey(MIS_SEC_COM, MIS_KEY_LISTV, sList, MIS_MOD_INI)
End Sub

Private Sub Form_Resize()
    On Error Resume Next
    lvList.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
    lvList.ColumnHeaders.Item(3).Width = Me.ScaleWidth - lvList.ColumnHeaders.Item(2).Width - lvList.ColumnHeaders.Item(1).Width
    On Error GoTo 0
End Sub

Private Sub lvList_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        'Show form
        frmAttribs.Show
        Call frmAttribs.GetAttrib(sParK, sCurK)
        Exit Sub
    End If
    
    If KeyCode = vbKeyDelete Then
        'Commit
        Call CommitDB("Delete Attribute")
        
        'Delete item
        Call frmAttribs.DelAttrib(sParK, sCurK, "")
        Exit Sub
    End If
End Sub

Private Sub lvList_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then KeyAscii = 0
End Sub

Private Sub lvList_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim itmCur As ListItem
    
    ' Set error handler for node
    On Error GoTo ItemErr
    
    ' Get and check node
    Set itmCur = lvList.HitTest(X, Y)
        
    'Set keys
    sCurK = itmCur.Key
    
    If Button = 1 Then
        ' check node
        If itmCur.Selected = False Then
            ' Select node
            itmCur.Selected = True
    
            'Sel in tree
            frmTree.SelTree (sCurK)
            Exit Sub
        End If
    
        'Show form
        frmAttribs.Show
        Call frmAttribs.GetAttrib(sParK, sCurK)
        frmAttribs.SetFocus
        Exit Sub
    End If
    
    If Button = 2 Then
        ' Select node
        itmCur.Selected = True
        
        ' Show popup menu
        Call PopupMenu(fMainForm.mnuPUList, 2)
        Exit Sub
    End If
    Exit Sub
    
ItemErr:
    Exit Sub
End Sub

⌨️ 快捷键说明

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