将武 發表於 2020-12-12 12:27:00

ListView在delphi中的常用用法

<div>ListView在delphi中的常用用法</div>
<div>//增加&nbsp;</div>
<div>
<div class="cnblogs_code">
<pre>i :=<span style="color: rgba(0, 0, 0, 1)"> ListView1.Items.Count;
</span><span style="color: rgba(0, 0, 255, 1)">with</span> ListView1 <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
    ListItem:</span>=<span style="color: rgba(0, 0, 0, 1)">Items.Add;
    ListItem.Caption:</span>=<span style="color: rgba(0, 0, 0, 1)">IntToStr(i);
    ListItem.SubItems.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">第</span><span style="color: rgba(128, 0, 0, 1)">'</span>+IntToStr(i)+<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> 行</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
    ListItem.SubItems.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">第三列内容</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p>//按标题删除&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">for</span> i:=ListView1.Items.Count-<span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">downto</span> <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> Do&nbsp;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> ListView1.Items.Caption = Edit1.Text <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">&nbsp;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">&nbsp;
    ListView1.Items.Item.Delete(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除当前选中行&nbsp;</span>
<span style="color: rgba(0, 0, 255, 1)">end</span>;&nbsp;</pre>
</div>
<p>//选中一行&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">if</span> ListView1.Selected &lt;&gt; <span style="color: rgba(0, 0, 255, 1)">nil</span> <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">
Edit1.Text :</span>=<span style="color: rgba(0, 0, 0, 1)"> ListView1.Selected.Caption;

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> listview1.Items.Selected := True;</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> listview1.Items.MakeVisible(True); </span></pre>
</div>
<p>//选择第一条&nbsp;<br>procedure&nbsp;TForm1.Button2Click(Sender:&nbsp;TObject);&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp; listview1.SetFocus;&nbsp;<br>&nbsp;&nbsp;&nbsp; listview1.Items.Selected&nbsp;:=&nbsp;True;&nbsp;<br>end;&nbsp;<br><br>//选择最后一条&nbsp;<br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp; listview1.SetFocus;&nbsp;<br>&nbsp;&nbsp;&nbsp; listview1.Items.Selected&nbsp;:=&nbsp;True;&nbsp;<br>end;&nbsp;<br><br>//此为调用过程,可以任意指定要移动的Item,下面是当前(Selected)Item&nbsp;<br>procedure&nbsp;ListViewItemMoveUpDown(lv&nbsp;:&nbsp;TListView;&nbsp;Item&nbsp;:&nbsp;TListItem;&nbsp;MoveUp,&nbsp;SetFocus&nbsp;:&nbsp;Boolean);&nbsp;<br>var&nbsp;<br>DestItem&nbsp;:&nbsp;TListItem;&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp; if&nbsp;(Item&nbsp;=&nbsp;nil)&nbsp;or&nbsp;<br>&nbsp;&nbsp;&nbsp; ((Item.Index&nbsp;-&nbsp;1&nbsp;&lt;&nbsp;0)&nbsp;and&nbsp;MoveUp)&nbsp;or&nbsp;<br>&nbsp;&nbsp;&nbsp; ((Item.Index&nbsp;+&nbsp;1&nbsp;&gt;=&nbsp;lv.Items.Count)&nbsp;and&nbsp;(not&nbsp;MoveUp))&nbsp;<br>&nbsp;&nbsp;&nbsp; then&nbsp;Exit;&nbsp;<br>&nbsp;&nbsp;&nbsp; lv.Items.BeginUpdate;&nbsp;<br>&nbsp;&nbsp;&nbsp; try&nbsp;<br>&nbsp; &nbsp; &nbsp;&nbsp; if&nbsp;MoveUp&nbsp;then&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; DestItem&nbsp;:=&nbsp;lv.Items.Insert(Item.Index&nbsp;-&nbsp;1)&nbsp;<br>&nbsp; &nbsp; &nbsp;&nbsp; else&nbsp;<br>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; DestItem&nbsp;:=&nbsp;lv.Items.Insert(Item.Index&nbsp;+&nbsp;2);&nbsp;<br>&nbsp; &nbsp; &nbsp;&nbsp; DestItem.Assign(Item);&nbsp;<br>&nbsp; &nbsp;&nbsp; &nbsp; lv.Selected&nbsp;:=&nbsp;DestItem;&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; Item.Free;&nbsp;<br>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; finally&nbsp;<br>&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; lv.Items.EndUpdate;&nbsp;<br>&nbsp;&nbsp;&nbsp; end;&nbsp;<br>&nbsp;&nbsp;&nbsp; if&nbsp;SetFocus&nbsp;then&nbsp;lv.SetFocus;&nbsp;<br>&nbsp;&nbsp;&nbsp; DestItem.MakeVisible(False);&nbsp;<br>end;&nbsp;<br><br><br>ListViewItemMoveUpDown(ListView1,&nbsp;ListView1.Selected,&nbsp;True,&nbsp;True);//上移&nbsp;<br>ListViewItemMoveUpDown(ListView1,&nbsp;ListView1.Selected,&nbsp;False,&nbsp;True);//下移&nbsp;<br><br><br>TListView组件使用方法&nbsp;<br><br>引用CommCtrl单元&nbsp;<br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);&nbsp;<br>begin&nbsp;<br>ListView_DeleteColumn(MyListView.Handle,&nbsp;i);//i是要删除的列的序号,从0开始&nbsp;<br>end;&nbsp;<br><br>用LISTVIEW显示表中的信息:&nbsp;<br>procedure&nbsp;viewchange(listv:tlistview;table:tcustomadodataset;var&nbsp;i:integer);&nbsp;<br>begin&nbsp;<br>tlistview(listv).Items.BeginUpdate;&nbsp;{listv:listview名}&nbsp;<br>try&nbsp;<br>tlistview(listv).Items.Clear;&nbsp;<br>with&nbsp;table&nbsp;do&nbsp;{table&nbsp;or&nbsp;query名}&nbsp;<br>begin&nbsp;<br>active:=true;&nbsp;<br>first;&nbsp;<br>while&nbsp;not&nbsp;eof&nbsp;do&nbsp;<br>begin&nbsp;<br>listitem:=tlistview(listv).Items.add;&nbsp;<br>listitem.Caption:=trim(table.fields.asstring);&nbsp;<br>//&nbsp;listitem.ImageIndex:=8;&nbsp;<br>next;&nbsp;<br>end;&nbsp;<br>end;&nbsp;<br>finally&nbsp;<br>tlistview(listv).Items.EndUpdate;&nbsp;<br>end;&nbsp;<br>end;&nbsp;<br><br><br>ListView使用中的一些要点。以下以一个两列的ListView为例。&nbsp;<br>→增加一行:&nbsp;<br>with&nbsp;ListView1&nbsp;do&nbsp;<br>begin&nbsp;<br>ListItem:=Items.Add;&nbsp;<br>ListItem.Caption:='第一列内容';&nbsp;<br>ListItem.SubItems.Add('第二列内容');&nbsp;<br>end;&nbsp;<br>→清空ListView1:&nbsp;<br>ListView1.Items.Clear;&nbsp;<br>→得到当前被选中行的行的行号以及删除当前行:&nbsp;<br>For&nbsp;i:=0&nbsp;to&nbsp;ListView1.Items.Count-1&nbsp;Do&nbsp;<br>If&nbsp;ListView1.Items.Selected&nbsp;then&nbsp;//i=ListView1.Selected.index&nbsp;<br>begin&nbsp;<br>ListView1.Items.Delete(i);&nbsp;//删除当前选中行&nbsp;<br>end;&nbsp;<br>当然,ListView有OnSelectItem事件,可以判断选择了哪行,用个全局变量把它赋值出来。&nbsp;<br>→读某行某列的操作:&nbsp;<br>Edit1.Text&nbsp;:=&nbsp;listview1.Items.Caption;&nbsp;//读第i行第1列&nbsp;<br>Edit2.Text&nbsp;:=&nbsp;listview1.Items.SubItems.strings;&nbsp;//读第i行第2列&nbsp;<br>Edit3.Text&nbsp;:=&nbsp;listview1.Items.SubItems.strings;&nbsp;//读第i行第3列&nbsp;<br>以次类推,可以用循环读出整列。&nbsp;<br>→将焦点上移一行:&nbsp;<br>For&nbsp;i:=0&nbsp;to&nbsp;ListView1.Items.Count-1&nbsp;Do&nbsp;<br>If&nbsp;(ListView1.Items.Selected)&nbsp;and&nbsp;(i&gt;0)&nbsp;then&nbsp;<br>begin&nbsp;<br>ListView1.SetFocus;&nbsp;<br>ListView1.Items.Item.Selected&nbsp;:=&nbsp;True;&nbsp;<br>end;&nbsp;</p>
<div>
<div>引用内容</div>
<div>
<p>不过在Delphi7中,ListView多了一个ItemIndex属性,所以只要<br>ListView1.SetFocus;<br>ListView1.ItemIndex:=3;<br>就能设定焦点了。</p>
<p>&nbsp;&nbsp;&nbsp;delphi中ListView的某项某列的值必须先定义然后才能使用。比如你用ListView控件建立了一个表,严格说来这个表就好比一个二维数组。如果我们新建一行,只是第一行Caption有值,其它列为空,那也必须对后面的列执行Add(''),这相当于把空串赋给了后面的列,这样以后才能像操作二维数组一样直接访问任意行的任意列,否则的话访问caption后面的列时会报错。这相当于对于ListView中的每一个值(某项某列的值)都必须初始化。</p>

</div>

</div>
</div>

</div>
<div id="MySignature" role="contentinfo">
    好的代码像粥一样,都是用时间熬出来的<br><br>
来源:https://www.cnblogs.com/jijm123/p/14124261.html
頁: [1]
查看完整版本: ListView在delphi中的常用用法