最近在開發的時候用到listview,簡單總結一下它的用法。
1.讓listview像dbgrid資料庫那樣顯示資料:將listview的viewstyle設定為vsreport。
2.向listview中新增資料:我的資料是從資料庫中查詢得到的,比如我用的是adoquery, 先定義變數:
varmyitem:tlistitem
begin
adoquery1.first;
while not adoquery1.eof do
begin
myitem:= self.listview1.items.add;
myitem.caption:= adoquery1.fieldbyname('sfxm').asstring;
myitem.subitems.add(adoquery1.fieldbyname('qm').asstring);
myitem.subitems.add(adoquery1.fieldbyname('zm').asstring);
myitem.subitems.add(adoquery1.fieldbyname('sys').asstring);
myitem.subitems.add(adoquery1.fieldbyname('sfbz').asstring);
myitem.subitems.add(adoquery1.fieldbyname('ysje').asstring);
myitem.subitems.add(adoquery1.fieldbyname('yf').asstring);
myitem.subitems.add(adoquery1.fieldbyname('cbr').asstring);
myitem.subitems.add(adoquery1.fieldbyname('id').asstring);
adoquery1.next;
end;
end;
這樣listview就可以像dbgrid那樣顯示資料了。
3.設定listview顯示checkbox:只需在屬性中將checkboxes設定為true即可。
4.讓listview顯示checkbox後,或許需要得到listview哪一行被(打勾)選中。這個我是用乙個簡單的迴圈判斷。比如說我想實現這個功能:當listview某行被選中後,totall(tlable控制項)能夠動態的計算被選中行的第4列的值。我的**如下:
procedure tf_qfjf.listview1click(sender: tobject);
vari: integer;
total : double;
begin
label17.caption:= '';
total:= 0;
for i:= 0 to listview1.items.count - 1 do
if listview1.items.item[i].checked = true then
total:= total + strtofloat(listview1.items[i].subitems.strings[4]);
totall.caption:= floattostr(total) + ' ' + 'rmb';
end;
注:listview列的序號這樣計算,左側第一列是標籤,不做計算,第二列是0,第三列是1,依此類推
listview分塊顯示
關鍵在於共同特徵的第乙個出現的物件的位置確定 邏輯 接收乙個物件的在物件群中的位置,得到所具有 特徵值在特徵群中的位置 塊號 找到具有 特徵值在特徵群中的位置 塊號 的第乙個物件的在物件群中的位置 判斷在物件群中的位置是否相同,相同則顯示,不相同則隱藏 具體實現 adapter實現sectionin...
ListView顯示不同布局
在使用不同布局的時候,getitemviewtype和getviewtype不能少,通常是不用這兩個函式的過載的 listview.setadapter new baseadapter override public int getitemviewtype int position if posit...
listView 動態設定高亮
有時候,我們需要動態讓 listview 中的item高亮。比如如下場景。左邊是乙個listview 這個listview 的item是檔案列表 右邊是乙個imageview顯示。如下圖所示 實現方法 listview 的 adapter 繼承自 baseadapter 如下 public clas...