VB6求教 listview和数组的使用 230

我先将文本中的内容读取,然后使用split函数将内容赋值给一个一维数组接着问题来了,怎么根据查询信息把数组中需要的部分加载到listview中,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可一并在给的地址下载
展开
 我来答
匿名用户
2016-07-30
展开全部
可以以数组下标访问。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;withtabledo{tableorquery名}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;就能设定焦点了。
追问
你好,能在我给的文件中修改吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式