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

    //此为调用过程,可以任意指定要移动的Item,下面是当前(Selected)Item
    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;


       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;

     引用内容
    不过在Delphi7中,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;
  • 相关阅读:
    TypeScript-基础-09-声明文件
    TypeScript-基础-08-类型断言
    TypeScript-基础-07-函数的类型
    TypeScript-基础-06-数组的类型
    TypeScript-基础-05-对象的类型—接口
    TypeScript-基础-04-联合类型
    TypeScript-工程
    小白学前端03
    小白学前端02
    小白学前端
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/1343843.html
Copyright © 2020-2023  润新知