?? mdllistview.bas
字號:
Attribute VB_Name = "mdlListView"
Option Explicit
'添加單一對象到列表視圖
Public Sub ShowObjInLvw(ByRef obj As Object, Optional Flag As Boolean = True)
'參數說明:obj是在列表視圖中顯示的對象,Flag是添加或更新的標識(True為添加,False為更新)
On Error Resume Next
Dim lvw As ListView
Dim Itm As ListItem '列表視圖的項目
'設置列表視圖為主界面的視圖
'這里可以把lvw作為該過程的一個參數來提升可移植性
'請參照mdlTreeView模塊InitTvwEx函數的實現
Set lvw = frmMain.ListView
'根據標識來確定列表項目是新添加項目還是當前選擇項目
If Flag Then
Set Itm = lvw.ListItems.Add(, "K" & obj.ID)
Else
Set Itm = lvw.SelectedItem
End If
'按照當前操作狀態添加對象的屬性到列表視圖
Select Case CurrentOperation
Case BrowseUser:
Itm.Icon = 5
Itm.SmallIcon = IIf(obj.UserType = 0, 2, 1)
Itm.Text = obj.UserName
Itm.ForeColor = IIf(obj.UserType = 0, vbBlack, vbRed)
Itm.SubItems(1) = obj.TrueName
Itm.SubItems(2) = IIf(obj.LastLoginTime = #1/1/1900#, "尚未登錄過", obj.LastLoginTime)
Itm.SubItems(3) = IIf(obj.UserType = 0, "普通用戶", "系統管理員")
Case BrowseSupplier:
Itm.Icon = 1
Itm.SmallIcon = 1
Itm.Text = obj.SupplierName
Itm.SubItems(1) = obj.Contact
Itm.SubItems(2) = obj.Introduce
Itm.SubItems(3) = obj.Remark
Case BrowseType:
Itm.Icon = 3
Itm.SmallIcon = 1
Itm.Text = obj.TypeName
Itm.SubItems(1) = obj.Remark
Case BrowseGoods:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.Amount > 10, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.Amount
Itm.SubItems(2) = obj.UnitName
Itm.SubItems(3) = obj.TypeName
Itm.SubItems(4) = obj.SupplierName
Itm.SubItems(5) = obj.Introduce
Itm.SubItems(6) = obj.Remark
Case BrowseBuy, QueryBuy:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.Amount > 10, 3, 4)
Itm.Text = Format(obj.ID, "000000")
Itm.SubItems(1) = obj.GoodsName
Itm.SubItems(2) = obj.UnitPrice
Itm.SubItems(3) = obj.Amount
Itm.SubItems(4) = obj.UnitName
Itm.SubItems(5) = obj.TotalPrice
Itm.SubItems(6) = obj.Deliverer
Itm.SubItems(7) = obj.Transactor
Itm.SubItems(8) = obj.RegistrarName
Itm.SubItems(9) = obj.RegDate
Itm.SubItems(10) = obj.TypeName
Itm.SubItems(11) = obj.SupplierName
Itm.SubItems(12) = obj.Remark
Case BrowseSale:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.Amount > 10, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.UnitPrice
Itm.SubItems(2) = obj.Amount
Itm.SubItems(3) = obj.UnitName
Itm.SubItems(4) = obj.TotalPrice
Itm.SubItems(5) = obj.RegistrarName
Itm.SubItems(6) = obj.RegDate
Itm.SubItems(7) = obj.TypeName
Itm.SubItems(8) = obj.SupplierName
Itm.SubItems(9) = obj.Remark
Case BrowseSpoilage:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.Amount > 10, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.Amount
Itm.SubItems(2) = obj.UnitName
Itm.SubItems(3) = obj.Reportor
Itm.SubItems(4) = obj.RegistrarName
Itm.SubItems(5) = obj.RegDate
Itm.SubItems(6) = obj.TypeName
Itm.SubItems(7) = obj.SupplierName
Itm.SubItems(8) = obj.Reason
Case BuyStat:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.TotalBuyAmount > 100, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.TypeName
Itm.SubItems(2) = obj.AverageBuyPrice
Itm.SubItems(3) = obj.TotalBuyTimes
Itm.SubItems(4) = obj.TotalBuyAmount
Itm.SubItems(5) = obj.UnitName
Itm.SubItems(6) = obj.GrossBuyPrice
Case SaleStat:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.TotalSaleAmount > 100, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.TypeName
Itm.SubItems(2) = obj.AverageSalePrice
Itm.SubItems(3) = obj.TotalSaleTimes
Itm.SubItems(4) = obj.TotalSaleAmount
Itm.SubItems(5) = obj.UnitName
Itm.SubItems(6) = obj.GrossSalePrice
Case SpoilageStat:
Itm.Icon = 7
Itm.SmallIcon = IIf(obj.TotalRegAmount > 100, 3, 4)
Itm.Text = obj.GoodsName
Itm.SubItems(1) = obj.TypeName
Itm.SubItems(2) = obj.TotalRegTimes
Itm.SubItems(3) = obj.TotalRegAmount
Itm.SubItems(4) = obj.UnitName
Case Else:
End Select
End Sub
'添加對象集合到列表視圖
Public Sub AddObjsToLvw(ByRef objs As Variant, Optional Flag As Boolean = True)
'參數說明:objs是要添加的對象集合
' Flag是當前操作狀態提示標簽的文字是否設置為瀏覽所有信息,True為設置,False為不設置
' 由于單擊樹形視圖的節點調用該過程時,需要設置當前操作狀態提示標簽為瀏覽商品分類信息
' 故此處不有選擇設置當前操作狀態提示標簽的文字,則會先顯示瀏覽所有信息再顯示為瀏覽商
' 品分類信息,從而產生閃爍感
Dim i As Long
'添加列表視圖的列首
InitLvw frmMain.ListView
DoEvents
'標識為True則設置當前操作狀態提示標簽的文字為瀏覽所有信息
If Flag Then SetLbl frmMain.lblDescribe
'添加對象集合內的每一對象到列表視圖
For i = 1 To objs.Count
ShowObjInLvw objs.Item(i)
Next
'設置提示信息
frmMain.lblCount = Space(5) & frmMain.ListView.ListItems.Count & "個項目"
frmMain.SBar.Panels(1) = frmMain.lblDescribe
End Sub
'初始化列表視圖
Public Sub InitLvw(ByRef lvw As ListView)
frmMain.picAbout.Visible = False
frmMain.lblCount = ""
'清空并按照當前操作狀態重新添加列首
With lvw
.ColumnHeaders.Clear
.ListItems.Clear
Select Case CurrentOperation
Case BrowseUser:
.ColumnHeaders.Add , , "用戶名", 1500
.ColumnHeaders.Add , , "真實姓名", 1500
.ColumnHeaders.Add , , "上次登錄時間", 2100
.ColumnHeaders.Add , , "用戶類型", 1200
Case BrowseSupplier:
.ColumnHeaders.Add , , "供應商名稱", 3500
.ColumnHeaders.Add , , "聯系方式", 3000
.ColumnHeaders.Add , , "簡要介紹", 3000
.ColumnHeaders.Add , , "備注", 4000
Case BrowseType:
.ColumnHeaders.Add , , "類型名稱", 1500
.ColumnHeaders.Add , , "備注", 12000
Case BrowseBuy, QueryBuy:
.ColumnHeaders.Add , , "進貨編號", 1000
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "單價(元)", 1000
.ColumnHeaders.Add , , "數量", 750
.ColumnHeaders.Add , , "單位", 750
.ColumnHeaders.Add , , "總金額(元)", 1200
.ColumnHeaders.Add , , "送貨員", 800
.ColumnHeaders.Add , , "辦理員", 800
.ColumnHeaders.Add , , "登記員", 800
.ColumnHeaders.Add , , "登記時間", 2000
.ColumnHeaders.Add , , "商品類型", 1000
.ColumnHeaders.Add , , "供貨商", 1250
.ColumnHeaders.Add , , "備注", 3000
Case BrowseSale:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "單價(元)", 1000
.ColumnHeaders.Add , , "數量", 750
.ColumnHeaders.Add , , "單位", 750
.ColumnHeaders.Add , , "總金額(元)", 1200
.ColumnHeaders.Add , , "登記員", 800
.ColumnHeaders.Add , , "登記時間", 2000
.ColumnHeaders.Add , , "商品類型", 1000
.ColumnHeaders.Add , , "供貨商", 1250
.ColumnHeaders.Add , , "備注", 3000
Case BrowseGoods:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "庫存量", 1000
.ColumnHeaders.Add , , "單位", 750
.ColumnHeaders.Add , , "商品類型", 1200
.ColumnHeaders.Add , , "供貨商", 2000
.ColumnHeaders.Add , , "商品介紹", 2000
.ColumnHeaders.Add , , "備注", 3000
Case BrowseSpoilage:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "報損數量", 1000
.ColumnHeaders.Add , , "單位", 750
.ColumnHeaders.Add , , "報損人", 800
.ColumnHeaders.Add , , "登記員", 1000
.ColumnHeaders.Add , , "登記時間", 2000
.ColumnHeaders.Add , , "商品類型", 1000
.ColumnHeaders.Add , , "供貨商", 1250
.ColumnHeaders.Add , , "報損原因", 2200
Case BuyStat:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "商品類型", 1250
.ColumnHeaders.Add , , "平均單價(元)", 1500
.ColumnHeaders.Add , , "進貨次數", 1000
.ColumnHeaders.Add , , "進貨總量", 1000
.ColumnHeaders.Add , , "單位", 1000
.ColumnHeaders.Add , , "進貨總金額(元)", 1600
Case SaleStat:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "商品類型", 1250
.ColumnHeaders.Add , , "平均單價(元)", 1500
.ColumnHeaders.Add , , "銷售次數", 1000
.ColumnHeaders.Add , , "銷售總量", 1000
.ColumnHeaders.Add , , "單位", 1000
.ColumnHeaders.Add , , "銷售總金額(元)", 1600
Case SpoilageStat:
.ColumnHeaders.Add , , "商品名稱", 3500
.ColumnHeaders.Add , , "商品類型", 1250
.ColumnHeaders.Add , , "報損次數", 1000
.ColumnHeaders.Add , , "報損總量", 1000
.ColumnHeaders.Add , , "單位", 1000
Case Else:
End Select
End With
End Sub
'設置用戶操作狀態提示標簽
Private Sub SetLbl(ByRef lbl As Label)
Select Case CurrentOperation
Case BrowseUser:
lbl = "瀏覽所有用戶"
Case BrowseSupplier:
lbl = "瀏覽所有供貨商"
Case BrowseType:
lbl = "瀏覽所有商品類型"
Case BrowseBuy, QueryBuy:
lbl = IIf(CurrentOperation = BrowseBuy, "瀏覽所有進貨", "查詢進貨信息")
Case BrowseSale:
lbl = "瀏覽所有商品銷售"
Case BrowseGoods:
lbl = "瀏覽所有商品"
Case BrowseSpoilage:
lbl = "瀏覽所有商品報損"
Case BuyStat:
lbl = "商品進貨統計"
Case SaleStat:
lbl = "商品銷售統計"
Case SpoilageStat:
lbl = "商品報損統計"
Case Else:
End Select
'設置標簽的位置
frmMain.lblCount.Left = lbl.Left + lbl.Width
End Sub
'從列表視圖獲取選擇項目的ID值
Public Function GetIDFromLvw() As Long
GetIDFromLvw = Mid(frmMain.ListView.SelectedItem.Key, 2)
End Function
'從列表視圖刪除單一對象
Public Sub DelObjFromLvw()
On Error Resume Next
frmMain.ListView.ListItems.Remove frmMain.ListView.SelectedItem.Index
frmMain.lblCount = Space(5) & frmMain.ListView.ListItems.Count & "個項目"
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -