zoukankan      html  css  js  c++  java
  • 取listview 指定行 指定列的值 listview基本用法大全

    //增加项或列(字段)
    
    ListView1.Clear;
    ListView1.Columns.Clear;
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.Columns.Items[0].Caption:='id';
    ListView1.Columns.Items[1].Caption:='type';
    ListView1.Columns.Items[2].Caption:='title';
    ListView1.Columns.Items[2].Width:=300;
    Listview1.ViewStyle:=vsreport;
    Listview1.GridLines:=true;               //注:此处代码也可以直接在可视化编辑器中完成,
    
    也可写成以下这样
    
    begin
    with listview1 do
    begin
    Columns.Add;
    Columns.Add;
    Columns.Add;
    ViewStyle:=vsreport;
    GridLines:=true;
    columns.items[0].caption:='进程名';
    columns.items[1].caption:='进程ID';
    columns.items[2].caption:='进程文件路径';
    Columns.Items[0].Width:=100;
    Columns.Items[1].Width:=100;
    Columns.Items[2].Width:=150;
    end
    end;
    
    //增加记录
    with listview1.items.add do 
    begin 
    caption:='1212'; 
    subitems.add('hh1'); 
    subitems.add('hh2'); 
    end; 
    
    //删除 
    listview1.items.delete(0);
    
    //从数据库表里读取数据写入Listview
    
    var
    Titem:Tlistitem;       //此处一定要预定义临时记录存储变量.
    begin
    ListView1.Items.Clear;
    with adoquery1 do
    begin
    close;
    sql.Clear;
    sql.Add('select spmc,jg,sl from kcxs');
    Open;
    ListView1.Items.Clear;
    while not eof do
    begin
    Titem:=ListView1.Items.add;
    Titem.Caption:=FieldByName('spmc').Value;
    Titem.SubItems.Add(FieldByName('sl').Value);
    Titem.SubItems.Add(FieldByName('jg').Value);
    next;
    end;
    
    //删除 
    ListView1.DeleteSelected;
    
    //如何取得ListView中选中行的某一列的值
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    ShowMessage(ListView1.Selected.SubItems.Strings[1]); //返回选中行第三列中的值
    end;
    
    showMessage(listView1.Selected.Caption);   //返回选中行第一列的值.
    
    第1列的值: -->>> ListView1.Selected.Caption   
    第i列的值(i>1):-->>> ListView1.Selected.SubItems.Strings[i]
    
    ListView1.Items.Item[1].SubItems.GetText); //取得listview某行某列的值
    
    Edit2.Text := listview1.Items[1].SubItems.strings[0];   //读第1行第2列
    1-表示第2行,原因是从0开始地得嘛,0表示第二列,原因是第1列就为Caption
    返回选中行所有子列值.是以回车符分开的,你还要从中剥离出来你要的子列的值。
    
    showMessage(ListView1.Selected.SubItems.GetText);   
    
    ListView 简单排序的实现
    
    ListView 排序
    
    
    怎样实现单击一下按升序,再单击一下按降序。
    function CustomSortProc(Item1, Item2: TListItem; ColumnIndex: integer): integer; stdcall;
    begin
    if ColumnIndex = 0 then
    Result := CompareText(Item1.Caption,Item2.Caption)
    else
    Result := CompareText(Item1.SubItems[ColumnIndex-1],Item2.SubItems[ColumnIndex-1])
    end; 
    
    procedure TFrmSrvrMain.ListView1ColumnClick(Sender: TObject;
    Column: TListColumn);
    begin
    ListView1.CustomSort(@CustomSortProc,Column.Index);
    end;
    
    ===============================================================
    
    //增加 
    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;
    
  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/jayleke/p/1811940.html
Copyright © 2011-2022 走看看