Delphi ListView的用法 常用技巧

2021-04-21 09:27:29 字數 3974 閱讀 5649

delphi listview的用法(常用技巧)

2008-02-03 11:37

//增加

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

vardestitem : 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;

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

trytlistview(listv).items.clear;

with table do             

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;

就能設定焦點了

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...

Apache的rewrite的重寫相關的引數

apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...