TListView使用方法1(转)

ListView1.Items 为标准 Tlistitems类
ListView1.Items
(1)赋值
with ListView1.Items.Add do
begin
Caption:=caption; //加入第一项
SubItems.add(aaaaa); //加入后面数据
SubItems.add(1234);
SubItems.add(1234);
end; //一定要使用WITH结构.
(2)取值
listview1.Items.Item[i].Caption 取得某条数据标题
listview1.Items.Item[i].SubItems.Strings[j] 取得某条数据内容
listview1.Items.Item[i].SubItems.CommaText 一条记录的所有内容,
格式: "标题","内容1","内容2",....
listview1.Items.Item[i].SubItems.Text 一条记录的所有内容,
格式: 标题,内容,内容2....

(3)删除
listview1.Items.Item[i].Delete; 删除一条数据
(4)数据类型(长度)定义
i:=ListView1.Items.Count 数据条数
listview1.Items.Item[i].Selected 该条数据选中否(MultiSelect决定单选复选)
(5)其它
ListView1.Items.Clear; 清除数据

Delphi ListView的使用方法(经常使用技巧)

//添加
             i := ListView1.Items.Count;
             with ListView1 do
             begin
               ListItem:=Items.Add;
               ListItem.Caption:= IntToStr(i);
               ListItem.SubItems.Add(‘第 ‘+IntToStr(i)+‘ 行‘);
               ListItem.SubItems.Add(‘第三列内容‘);
             end;

//按标题删除
             for i:=ListView1.Items.Count-1 downto 0 Do
               if ListView1.Items[i].Caption = Edit1.Text then
               begin
                 ListView1.Items.Item[i].Delete();             //删除当前选中行
               end;

//选中一行
             if ListView1.Selected <> nil then
             Edit1.Text := ListView1.Selected.Caption;

//              listview1.Items[Listview1.Items.Count -1].Selected := True;
//              listview1.Items[Listview1.Items.Count -1].MakeVisible(True);  
procedure TForm1.Button2Click(Sender: TObject); // 选择第一条
begin
             listview1.SetFocus;
             listview1.Items[0].Selected := True;
end;

procedure TForm1.Button1Click(Sender: TObject);             // 选择最后一条
begin
             listview1.SetFocus;
             listview1.Items[Listview1.Items.Count -1].Selected := True;
end;

//这是个通用的过程
procedure ListViewItemMoveUpDown(lv : TListView; Item : TListItem; MoveUp, SetFocus : Boolean);
var
             DestItem : TListItem;
begin
             if (Item = nil) or
                ((Item.Index - 1 < 0) and MoveUp) or
                ((Item.Index + 1 >= lv.Items.Count) and (not MoveUp))
               then Exit;
             lv.Items.BeginUpdate;
             try
               if MoveUp then
                 DestItem := lv.Items.Insert(Item.Index - 1)
               else
                 DestItem := lv.Items.Insert(Item.Index + 2);
               DestItem.Assign(Item);
               lv.Selected := DestItem;
               Item.Free;
             finally
               lv.Items.EndUpdate;
             end;
             if SetFocus then lv.SetFocus;
             DestItem.MakeVisible(False);
end;

//此为调用过程,能够随意指定要移动的Item,以下是当前(Selected)Item
             ListViewItemMoveUpDown(ListView1, ListView1.Selected, True, True);//上移
             ListViewItemMoveUpDown(ListView1, ListView1.Selected, False, True);//下移

TListView组件用法

引用CommCtrl单元

procedure TForm1.Button1Click(Sender: TObject);
begin
             ListView_DeleteColumn(MyListView.Handle, i);//i是要删除的列的序号,从0開始

end;

用LISTVIEW显示表中的信息:
procedure viewchange(listv:tlistview;table:tcustomadodataset;var i:integer);
             begin
               tlistview(listv).Items.BeginUpdate;              {listv:listview名}
               try
                 tlistview(listv).Items.Clear;
                 with table do                    {table or query名}
                 begin
                   active:=true;
                   first;
                   while not eof do
                   begin
                     listitem:=tlistview(listv).Items.add;
                     listitem.Caption:=trim(table.fields[i].asstring);
//                     listitem.ImageIndex:=8;
                     next;
                   end;
                 end;
               finally
                 tlistview(listv).Items.EndUpdate;
               end;
end;

ListView使用中的一些要点。下面以一个两列的ListView为例。
            →添加一行:
with ListView1 do
            begin
              ListItem:=Items.Add;
              ListItem.Caption:=‘第一列内容‘;
              ListItem.SubItems.Add(‘第二列内容‘);
            end;
            →清空ListView1:
ListView1.Items.Clear;
            →得到当前被选中行的行的行号以及删除当前行:
For i:=0 to ListView1.Items.Count-1 Do
            If ListView1.Items[i].Selected then            //i=ListView1.Selected.index
              begin
                ListView1.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列
以次类推,能够用循环读出整列。
            →将焦点上移一行:
For i:=0 to ListView1.Items.Count-1 Do
            If (ListView1.Items[i].Selected) and (i>0) then
              begin
                ListView1.SetFocus;
                ListView1.Items.Item[i-1].Selected := True;
              end;
只是在Delphi6中,ListView多了一个ItemIndex属性,所以仅仅要
ListView1.SetFocus;
ListView1.ItemIndex:=3;
就能设定焦点了。

Delphi的listview能实现交替颜色么?
procedure TForm1.ListView1CustomDrawItem(
       Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
       var DefaultDraw: Boolean);
var
       i: integer;
begin
       i:= (Sender as TListView).Items.IndexOf(Item);
       if odd(i) then sender.Canvas.Brush.Color:= $02E0F0D7
       else sender.Canvas.Brush.Color:= $02F0EED7;
       Sender.Canvas.FillRect(Item.DisplayRect(drIcon));
end;

时间: 2024-10-14 14:39:46

TListView使用方法1(转)的相关文章

listview 参考

Delphi ListView快速操作通用实现 众所周知,Delphi ListView类直接进行Add.Update.Delete操作的速度是比较慢的,尤其是当数据量较大时,比如数据量达到5000.10000.50000时,速度真是可以说是“慢得惊人”.其实快速操作的方法非常简单,就当大家都知道了.在本人的工作中,很多项目都用到ListView,并且对速度的响应要求比较高,于是发生了快速操作ListView的代码散布于多个项目大量模块中的问题,并且,当界面层数据显示要求发生改变时,自然发生“重

[转]Delphi 常用控件之TlistView总结

TlistView组件功能: (1) TListView 控件可以用来显示各项带图标的列表,包括大图标和小图标的:也可以用来显示带有子项的列表,Windows操作系统的资源管理器中文件夹窗口就是最好的应用例子,就是我们打开"我的电脑"后能够看到各个盘符的界面 ( 2) TListView控件基本能实现和DBGrid控件一样的功能,很多时候根据程序需要可以完全用TListView来替换DBGrid:只要将TListView的ViewStyle属性设为vsReport,然后再配合其他几个属

delphi -----TListView的用法(转载)

1.TListView方法: procedure Clear; override; //从列表控件中删除所有的项目 2.TListView属性: property Column[Index: Integer]: TListColumn;//通过参数 Index 指明一列property Columns: TListColumns;//记录列表中列的属性property Items: TListItems;//包含列表中的所有项目Contains the list of items display

vcl控件经常使用属性和方法

TTabControl属性 DisplayRect:仅仅定该控件客户区的一个矩形 HotTrack:设置当鼠标经过页标签时,它的字是否有变化.假设为True,是字会变成蓝色Images:为每一个页标签加入一个图片MultiLine:假设总页标签的长度大于该控件的宽度时,是否同意多行显示MultiSelect:是否同意多选页标签.该属性仅仅有当Style为tsFlatButtons或tsButtons时才有效OwnerDraw:是否同意自己绘画该控件RaggedRight:指定是否同意标签页伸展到

FMX TListView 动态添加Item和Item里面的Object

FMX TListView比较复杂,功能也比较强大.如果是比较简单的列表,可以用TListBox代替,运用比较简单.FMX TListView的设计时运用和一般的控件也不一样,不是严格的"可视即可得",这和其它的控件使用方式差别比较大,比如,如果没有和Living binding控件配合,设计时是不能直接创建Item的,设计时只是设计了Item的外观样式,Item是运行时添加的(Demo里的例子基本是和Living Binding配合的,所以有设计时的Item).而且,Custom的样

Unity 崩溃问题解决方法——之一

友情提示:工作随记,不喜勿喷 注意:文艺青年可以略过,暴力青年欢迎采纳 Library文件夹 Unity每次编译都会生成这个东西,不用担心丢失的问题.所以,干掉他! 选中 + Delete   或者  选中 + Shift  + Delete 网上看了很多方法,就觉得这个简单,粗暴,是我喜欢的类型. 优点:上面说了 缺点:如果工程过大,重新编译时间会比较长.(但是对于查Log日志来说,相对快点)

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

C#与数据库访问技术总结(八)之ExecuteNonQuery方法

ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为该命令所影响的行数. 对于所有其他类型的语句,返回值为-1. Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下: (1)创建数据库连接. (2)创建Command对象,并指定一个SQL Insert.Update