一. 如何初始化乙個treeview?
弄乙個視窗,放上乙個treeview和乙個button,分別取名為tv1和btn1。如果需要
在每個節點前有個圖,請在視窗上放上乙個imagelist,取名為imagelist1,雙擊
它,加入六個圖示。還要記得記得將tv1的images屬性改為imagelist1噢。雙擊按
鈕btn1,在裡面填入以下**,然後按f9執行,點選btn1就可以看到效果了。
procedure tform1.btn1click(sender: tobject);
const
mydocdir = 'c:\my documents';
persondir = '3hsoft';
varvar
i : word;
subnodename : array [1..5] of shortstring;
rootnode, subnode : ttreenode;
p : pstring;
begin
subnodename[1] := '便箋';
subnodename[2] := '發件箱';
subnodename[3] := '聯絡人';
subnodename[4] := '任務';
subnodename[5] := '日記';
tv1.items.clear;
tv1.items.beginupdate;
new(p);
p^ := mydocdir + '\' + persondir;
rootnode := tv1.items.addobject(nil, '個人資料夾', p);
// 此 node 的圖示已對 images 屬性中取第 0 個了。
for i := 1 to 5 do
begin
new(p);
p^ := mydocdir + '\' + persondir + '\' + subnodename[i];
subnode := tv1.items.addchildobject(rootnode, subnodename[i], p);;
// 如果不想使用圖示的話請刪除以下兩行
subnode.imageindex := i;
subnode.selectedindex := i;
end;
tv1.items.endupdate;
end;
二.在treeview中如何設定選中結點
vari:integer;
begin
if i>treeview1.items.count then
treeview1.items[i].selected:=true;
或treeview1.selected:=treeview1.items[i];
三。設定treeview結點的圖形
1. 設定treeview的images屬性為已存在的images物件
treeview1.images:=imagelist1;
2. 在加入結點後執行:
varanode:ttreenode;
begein
anode:=treeview1.add(nil,'item1');
anode.imageindex:=0;
anode.selectedindex:=1;
end3. 如果結點圖形在改變後未發生變化,可以執行:
treeview1.refresh;
四。如何批量處理treeview結點
使用treeview的items屬性的beginupdate和endupdate方法,例:
treeview1.items.beginupdate;
for i:=0 to treeview1.items.count-1 do
begin
file ://將每個結點的文字改成為小寫字母
treeview1.items[i].text:=lowercase(treeview1.items[i].text);
end;
treeview1.items.endupdate;
五。實現treeview結點拖拽的例項
下面的程式片段演示了如何實現拖拽treeview構件結點的例子
procedure tform1.treeview1mousedown(sender: tobject;
button: tmousebutton; shift: tshiftstate; x, y: integer);
begin
if ( button = mbleft ) and
( htonitem in treeview1.gethittestinfoat( x, y ) ) then
begin
treeview1.begindrag( false );
end;
end;
procedure tform1.treeview1dragover( sender, source: tobject;
x, y: integer; state: tdragstate; var accept: boolean);
varnode : ttreenode;
begin
if source = treeview1 then
begin
node := treeview1.getnodeat( x, y );
if node <> nil then
accept := true;
end;
end;
procedure tform1.treeview1dragdrop( sender, source: tobject;
x, y : integer );
vartempnode : ttreenode;
attachmode : tnodeattachmode;
begin
if treeview1.selected = nil then
exit;
attachmode := naaddchild;
treeview1.items.beginupdate;
trytempnode := treeview1.items.addchild( treeview1.droptarget,
'temp' );
trytreeview1.selected.moveto( treeview1.droptarget, attachmode );
finally
tempnode.free;
end;
finally
treeview1.items.endupdate;
end;
end;
easyui之控制項Tree
這篇文章先介紹tree的兩種用法,一種是一次性取完,一種是非同步載入。取完的 如下 這個是一次性取完的 返回的是json格式。下面是非同步載入,只載入第一級的資料。其實你也發現了,這2個方法的呼叫資料都是一樣的,為什麼會出現乙個非同步乙個一次性呢,因為tree這個控制項已經封裝了非同步載入的方法。上...
SendMessage 操縱Tree控制項
應先傳送 tvm getnextitem 訊息獲取每個專案的控制代碼,而且要根據其是否含有子項來決定是否展開這個專案,傳送 tvm expand 訊息展開每個含有子項的專案。現假定 treeview 控制項的控制代碼為 hwnd hrootitem htreeitem sendmessage hwn...
delphi 控制項簡介
一 codegear interbase express 自帶的資料庫 dataset mybase dataaccess 伺服器遠端資料 data snap connection 遠端資料庫 dbexpress delphi 自己連線 db2,informix,interbase,mssql,my...