⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delphi中的listview的用法.txt

📁 网上收集的一些资料,希望对大家有点帮助,包括:Delphi 基本函数集,Delphi程序限制系统登陆QQ个数,Delphi经常用到的公共代码(Tools.pas),网上流传的 Delphi版 熊猫烧香
💻 TXT
字号:
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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -