• 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;
  • 相关阅读:
    idea设置全局ignore
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable. Please ins
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistr
    kafka 删除 topic
    java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
    Centos中使用yum安装java时,没有jps的问题的解决
    Spring 整合Junit
    Spring纯注解配置
    Spring 基于注解的 IOC 配置
    打印java系统的信息
  • 原文地址:https://www.cnblogs.com/china1/p/3395162.html
Copyright © 2020-2023  润新知