• 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;

  • 相关阅读:
    第十七节(is-a 、is-like-a 、has-a,包和 import )
    第十六节(Object类(toString() 、finalize、equals方法)
    第十五节(多态,接口和抽象类的区别,类之间的关系)
    第十四节(接口(行为))
    第十三节(super关键字、final关键字、抽象类))
    .gitignore立即生效
    find & xargs 参数传递
    zsh: command not found: j
    将文件转化为源代码
    C读文件相关的调用
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4028546.html
Copyright © 2020-2023  润新知