VB6求教 listview和数组的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB6求教 listview和数组的使用相关的知识,希望对你有一定的参考价值。

我先将文本中的内容读取,然后使用split函数将内容赋值给一个一维数组
接着问题来了,怎么根据查询信息把数组中需要的部分加载到listview中,listview只有一列,同时隐藏columnheader。
不要说怎么不使用listbox?事实上MS的listview我也不想用,为什么?因为数组的ubound很大,即使不是全部加载,部分加载的ubound也很大,两三万都算是少的,所以你能想象下加载速度是有多慢吗?
===============================================================
如果可以的话,我觉得还是在我提供的程序里面修改,这个程序原来是一个virtual listview的demo,它的加载速度还是杠杠的,我来修改后还是有些问题:
1.是只显示了需要的item,但那些不需要的却依旧以空白字符占据了item。
2.该如何自适应需要加载的条数
===================================================================
===================================================================
地址:htt去p://pa掉n.bai汉du.c字om/s部/1eR分91g9k
----------------------------------------------------------------------------------------
vb若提示缺dbgwproc.dll可一并在给的地址下载

参考技术A 可以以数组下标访问。ListView.Items[i].text;//增加i:=ListView1.Items.Count;withListView1dobeginListItem:=Items.Add;ListItem.Caption:=IntToStr(i);ListItem.SubItems.Add('第'+IntToStr(i)+'行');ListItem.SubItems.Add('第三列内容');end;//按标题删除fori:=ListView1.Items.Count-1downto0DoifListView1.Items[i].Caption=Edit1.TextthenbeginListView1.Items.Item[i].Delete();//删除当前选中行end;//选中一行ifListView1.SelectednilthenEdit1.Text:=ListView1.Selected.Caption;//listview1.Items[Listview1.Items.Count-1].Selected:=True;//listview1.Items[Listview1.Items.Count-1].MakeVisible(True);procedureTForm1.Button2Click(Sender:TObject);//选择第一条beginlistview1.SetFocus;listview1.Items[0].Selected:=True;end;procedureTForm1.Button1Click(Sender:TObject);//选择最后一条beginlistview1.SetFocus;listview1.Items[Listview1.Items.Count-1].Selected:=True;end;//这是个通用的过程procedureListViewItemMoveUpDown(lv:TListView;Item:TListItem;MoveUp,SetFocus:Boolean);varDestItem:TListItem;beginif(Item=nil)or((Item.Index-1=lv.Items.Count)and(notMoveUp))thenExit;lv.Items.BeginUpdate;tryifMoveUpthenDestItem:=lv.Items.Insert(Item.Index-1)elseDestItem:=lv.Items.Insert(Item.Index+2);DestItem.Assign(Item);lv.Selected:=DestItem;Item.Free;finallylv.Items.EndUpdate;end;ifSetFocusthenlv.SetFocus;DestItem.MakeVisible(False);end;//此为调用过程,可以任意指定要移动的Item,下面是当前(Selected)ItemListViewItemMoveUpDown(ListView1,ListView1.Selected,True,True);//上移ListViewItemMoveUpDown(ListView1,ListView1.Selected,False,True);//下移TListView组件使用方法引用CommCtrl单元procedureTForm1.Button1Click(Sender:TObject);beginListView_DeleteColumn(MyListView.Handle,i);//i是要删除的列的序号,从0开始end;用LISTVIEW显示表中的信息:procedureviewchange(listv:tlistview;table:tcustomadodataset;vari:integer);begintlistview(listv).Items.BeginUpdate;listv:listview名trytlistview(listv).Items.Clear;withtabledotableorquery名beginactive:=true;first;whilenoteofdobeginlistitem:=tlistview(listv).Items.add;listitem.Caption:=trim(table.fields[i].asstring);//listitem.ImageIndex:=8;next;end;end;finallytlistview(listv).Items.EndUpdate;end;end;ListView使用中的一些要点。以下以一个两列的ListView为例。→增加一行:withListView1dobeginListItem:=Items.Add;ListItem.Caption:='第一列内容';ListItem.SubItems.Add('第二列内容');end;→清空ListView1:ListView1.Items.Clear;→得到当前被选中行的行的行号以及删除当前行:Fori:=0toListView1.Items.Count-1DoIfListView1.Items[i].Selectedthen//i=ListView1.Selected.indexbeginListView1.Items.Delete(i);//删除当前选中行end;当然,ListView有OnSelectItem事件,可以判断选择了哪行,用个全局变量把它赋值出来。→读某行某列的操作:Edit1.Text:=listview1.Items[i].Caption;//读第i行第1列Edit2.Text:=listview1.Items[i].SubItems.strings[0];//读第i行第2列Edit3.Text:=listview1.Items[i].SubItems.strings[1];//读第i行第3列以次类推,可以用循环读出整列。→将焦点上移一行:Fori:=0toListView1.Items.Count-1DoIf(ListView1.Items[i].Selected)and(i>0)thenbeginListView1.SetFocus;ListView1.Items.Item[i-1].Selected:=True;end;不过在Delphi6中,ListView多了一个ItemIndex属性,所以只要ListView1.SetFocus;ListView1.ItemIndex:=3;就能设定焦点了。追问

你好,能在我给的文件中修改吗?

以上是关于VB6求教 listview和数组的使用的主要内容,如果未能解决你的问题,请参考以下文章

vb的listview添加滚动条

android listview每一个item点击换个背景图或者背景色。要怎么做?求教

vb6.0用sql语句更新数据后listview控件数据怎么

请问VB6中ListView控件如何和数据库绑定,比如说ADODC控件

NestedScrollView嵌套ListView可行性总结

如何用文本图片和复选框过滤自定义listView?