131-3 調(diào)整Listview控件的行距 在使用Listview控件顯示數(shù)據(jù)列表時(shí),行距是由Listview控件所設(shè)置的字體大小決定的,,無(wú)法自定義行距,,即使調(diào)整了字體大小,行距還是很近,。 如果需要自定義Listview控件的行距,,可以在窗體中添加一個(gè)ImageList控件,,在ImageList控件中導(dǎo)入一張大小合適的空白圖片,,然后指定Listview控件的SmallIcons屬性為ImageList控件中的圖片,,代碼如下: Private Sub UserForm_Initialize() DimItm As ListItem Dimr As Integer Dimc As Integer DimImg As ListImage WithListView1 .ColumnHeaders.Add ,,,'人員編號(hào) ',,50,,0 .ColumnHeaders.Add ,,,'技能工資 ',,50,1 .ColumnHeaders.Add ,,,,'崗位工資 ',50,,1 .ColumnHeaders.Add ,,,'工齡工資 ',,50,,1 .ColumnHeaders.Add ,,,'浮動(dòng)工資 ',,50,1 .ColumnHeaders.Add ,,,,'其他 ',50,,1 .ColumnHeaders.Add ,,,'應(yīng)發(fā)合計(jì)',,50,,1 .View = lvwReport .Gridlines = True .FullRowSelect = True Set Img = ImageList1.ListImages.Add(,,,LoadPicture(ThisWorkbook.Path & '\' &'1×25.bmp')) .SmallIcons = ImageList1 For r = 2 To Sheet1.[A65536].End(xlUp).Row- 1 Set Itm = .ListItems.Add() Itm.Text = Space(2) & Sheet1.Cells(r,,1) For c = 1 To 6 Itm.SubItems(c) = Format(Sheet1.Cells(r,c + 1),,'##,,#,0.00') Next Next EndWith SetItm = Nothing SetImg = Nothing End Sub 代碼解析: 用戶窗體的Initialize事件過(guò)程,在窗體顯示時(shí)將工作表中數(shù)據(jù)顯示在Listview控件中并調(diào)整Listview控件的行距,。 第17行代碼使用Add方法在ImageList控件中添加圖片。ImageList控件是一個(gè)向其他控件提供圖像的資料中心,,它包含了一組ListImage對(duì)象即一組圖像的集合,,該集合中的每個(gè)對(duì)象都可以通過(guò)其索引或關(guān)鍵字被其他控件所引用,但控件本身并不能單獨(dú)使用,。 在運(yùn)行時(shí)給ImageList控件添加圖片需要使用Add方法,,語(yǔ)法如下: Add(index,key,,picture) 參數(shù)index是可選的,,整數(shù),指定要插入的ListImage對(duì)象的位置,。如果沒(méi)有指定index,,ListImage對(duì)象將被添加到ListImages集合的末尾。 參數(shù)key是可選的,,用來(lái)標(biāo)識(shí)ListImage對(duì)象的唯一字符串,。 參數(shù)picture是必需的,指定欲添加到集合中的圖片,。 也可以在設(shè)計(jì)時(shí)在ImageList控件中添加圖片,,這樣就無(wú)需在文件夾中保留圖片文件。在VBE中選擇ImageList控件屬性頁(yè)中的“自定義”,,在顯示的“屬性頁(yè)”對(duì)話框中插入圖片,。 第18行代碼,指定Listview控件的SmallIcons屬性為ImageList控件中的圖片,,使用圖片來(lái)調(diào)整行距,。運(yùn)行窗體,Listview控件顯示工作表中的內(nèi)容,,調(diào)整Listview控件的行距,。 131-4 在Listview控件中排序 在使用Listview控件顯示報(bào)表型的數(shù)據(jù)時(shí),可能通過(guò)單擊Listview控件的列標(biāo)題對(duì)列表數(shù)據(jù)進(jìn)行排序,,代碼如下: Private Sub ListView1_ColumnClick(ByVal ColumnHeaderAs MSComctlLib.ColumnHeader) WithListView1 .Sorted = True .SortOrder = (.SortOrder + 1) Mod 2 .SortKey = ColumnHeader.Index - 1 EndWith End Sub 代碼解析: Listview控件的ColumnClick事件過(guò)程,,單擊列標(biāo)題時(shí)觸發(fā),對(duì)列表數(shù)據(jù)進(jìn)行升序或降序排序,。 第3行代碼將Listview控件的Sorted屬性設(shè)置為True,。Sorted屬性返回或設(shè)置確定ListView控件中的ListItem對(duì)象是否排序,設(shè)置為False則不進(jìn)行排序,。 第4行代碼設(shè)置Listview控件的排序方式,。SortOrder屬性返回或設(shè)置一個(gè)值,決定ListView控件中的ListItem對(duì)象以升序或降序排序,設(shè)置為0以升序排序,,設(shè)置為1則以降序排序,。在設(shè)置SortOrder屬性值時(shí)使用Mod運(yùn)算符以達(dá)到第一次排序以降序排序,再次排序時(shí)以升序排序,,交替進(jìn)行的效果,。 第5行代碼設(shè)置Listview控件排序關(guān)鍵字的整數(shù),即指定Listview控件以當(dāng)前選定的列數(shù)據(jù)進(jìn)排序,。SortKey屬性返回或設(shè)置一個(gè)值,,此值決定ListView控件中的ListItem對(duì)象如何排序,語(yǔ)法如下: object.SortKey [=integer] 參數(shù)object是必需的,,對(duì)象表達(dá)式,,其值為ListView控件。 參數(shù)integer是必需的,,指定排序關(guān)鍵字的整數(shù),,設(shè)置為0使用ListItem對(duì)象的Text屬性排序,即第一列的數(shù)據(jù)進(jìn)行排序,。設(shè)置為大于0的整數(shù)則使用子項(xiàng)目的集合索引排序,。 運(yùn)行窗體,Listview控件顯示工作表中的內(nèi)容,,單擊列標(biāo)題對(duì)列表數(shù)據(jù)進(jìn)行升序或降序排序,。 131-5 Listview控件的圖標(biāo)設(shè)置 ListView 控件作為一個(gè)可以顯示圖標(biāo)或者子項(xiàng)的列表控件,可以在控件中顯示自定義的圖標(biāo),,它最重要的屬性就是View 屬性,,該屬性決定了以哪種視圖模式顯示控件的項(xiàng),請(qǐng)參閱▲131-1,。 在ListView 控件中顯示圖標(biāo),,需要在用戶窗體中添加一個(gè)ImageList控件用于保存圖像文件。關(guān)于ImageList控件的使用請(qǐng)參閱▲131-3,。 以大圖標(biāo)模式顯示ListView控件的代碼如下: Private Sub UserForm_Initialize() DimITM As ListItem Dimr As Integer WithListView1 .View = lvwIcon .Icons = ImageList1 For r = 2 To 6 Set ITM = .ListItems.Add() ITM.Text = Cells(r,,1) ITM.Icon = r - 1 Next EndWith SetITM = Nothing End Sub 代碼解析: 在用戶窗體中以大圖標(biāo)模式顯示ListView控件,可使用鼠標(biāo)拖放圖標(biāo),,并重新排列,。 第5行代碼將ListView控件的View屬性設(shè)置為lvwIcon,大圖標(biāo)視圖模式,。 第6行代碼使用ListView控件的Icons 屬性建立與ImageList控件的關(guān)聯(lián),。 第7行到第11行代碼在ListView控件中添加ListItem對(duì)象,其中第10行代碼設(shè)置使用ListItem對(duì)象的Icon屬性指定其圖像文件在ImageList控件中的編號(hào),。 ListView控件以大圖標(biāo)視圖模式顯示時(shí),。以小圖標(biāo)模式顯示ListView控件的代碼如下: Private Sub UserForm_Initialize() DimITM As ListItem Dimr As Integer WithListView1 .View = lvwSmallIcon .SmallIcons = ImageList1 For r = 2 To 6 Set ITM = .ListItems.Add() ITM.Text = Sheet1.Cells(r,,1) ITM.SmallIcon = r - 1 Next EndWith SetITM = Nothing End Sub 代碼解析: 在用戶窗體中以小圖標(biāo)模式顯示ListView控件,可使用鼠標(biāo)拖放圖標(biāo),,并重新排列,。 第5行代碼將ListView控件的View屬性設(shè)置為lvwSmallIcon,小圖標(biāo)視圖模式,。 與大圖標(biāo)視圖模式有所不同的是,,當(dāng)使用小圖標(biāo)視圖模式時(shí)需要使用ListView控件的SmallIcons屬性建立與ImageList控件的關(guān)聯(lián),使用ListItem對(duì)象的SmallIcon屬性指定其圖像文件在ImageList控件中的編號(hào),。 ListView控件以小圖標(biāo)視圖模式顯示時(shí)。 將ListView控件的View屬性設(shè)置為lvwList,,以列表視圖模式顯示,。 將ListView控件的View屬性設(shè)置為lvwReport,以報(bào)表視圖模式顯示,。 |
|