delphi中Treeview的使用介紹

2022-03-24 17:56:15 字數 4057 閱讀 2793

今天重點學習了treeview的使用方法,基本的已經寫了,現在主要想說的是如何顯示資料庫的資料,今天只是做了個較簡單的例子,乙個父節點下顯示資料庫中某個field的值。**如下:

procedure tmainform.treeviewshow(sender: tobject);

varnode1,subnode1: ttreenode;

i: integer;

begin

treeview1.selected := nil;

node1 := treeview1.items.addfirst(nil,'user');

adotable1.active := true;

while not adotable1.eof do

for i := 0 to adotable1.recordcount - 1 do

begin

treeview1.items.addchildobject(node1, adotable1.fieldbyname('username').asstring, nil);

adotable1.next;

end;

end;

使用的是ado中的adotable1來完成。

心得:今天下午比較重要的心得或許就是當你在某個函式中寫**的時候,它會自動把那些不符合它返回值的函式功能遮蔽掉。打個比方,象treeview1.items.addchildobject(node1, adotable1.fieldbyname('username').asstring, nil);中的第二項,它要求的是返回string ,如果你使用得失adodataset的話,它就自動幫你遮蔽掉了fieldbyname這個功能,因為返回的不是string,所以,在這種情況下最好是把你需要的函式在空白處得到在copy到裡面去。

每乙個節點下子節點形成這一節點的items屬性,當前節點有乙個唯一的index(treenode的index屬性),用於說明子節點在items中的位置,每乙個節點下的子節點是順序編號的,第乙個是0,第二個是1,依次類推。用indexof方法獲得子節點的順序,絕對順序(absoluteindex)則是指從treeview第乙個項開始的順序值,第乙個是0,如此推下去。item屬性則根據index的值返回當前節點的第index個子節點。count則表明屬於此項的所有子節點的數量。用moveto方法將item由乙個位置移到另乙個位置。

expanded屬性表明是否所有的子項都全部展開(包括子項的子項),為true表示全部展開。isvisible屬性表明乙個項是否在樹中能被看到,如果樹全部展開那麼這個item是肯定可以被看到。haschildren屬性表明乙個項是否有子項。 getfirstchild, getlastchild, getprevchild, and getnextchild分別返回當前項子項的第乙個、最後乙個和前乙個、後乙個項。getnextsibling and getprevsibling則返回在同一level下的下乙個和上乙個項。getnextvisible and getprevvisible則返回能看得到的下乙個和上乙個項。如果乙個節點有parent,則hasasparent方法返回true. parent為當前項的父項。focused屬性確定焦點是否落在此節點上,被focus時會乙個標準的方框圍住。很顯然,只有乙個節點會被聚焦。 selected屬性表明乙個節點是否被選中,同樣只有乙個節點會被選中。droptarget屬性表明節點在拖動操作中是源還是目標。

.1.新增、刪除、修改節點:

靜態的方法可以在設計時通過items的編輯器設定各節點的內容。

在新增和刪除前必須保證有節點被選中(treeview.selected = nil)

用addfirst, addfirstchild, addchild等先新增根節點,如treeview.items.addfirst( nil, 'root');

然後以此為基礎,新增此項的子節點。

刪除節點

treeview.selected.delete

編輯節點內容

treeview.selected.edittext

注意:由於根節點沒有父節點 (ttreenode.parent= nil)

此外,在大批量新增資料到treeview中時最好使用

treeview.items.beginupdate;

新增節點

treeview.items.endupdate

這樣能加快顯示速度。

2.在節點上新增圖象

treeview中幾個與圖象相關的屬性:

selectedindex:當節點被選中時在timagelist 中選什麼樣的圖象

overlayindex:選那副圖象作為掩圖(一幅圖象透明地顯示在另一幅圖象的前面),比如乙個節點不可用時加一副x圖象在其前面。

imageindex:在常態時選用的圖的序號

stateindex: 在stateimages這個imagelist中對應的序號,-1時不顯示圖象

比較典型的,象在檔案管理器中的所顯示的一樣,treeview控制項在節點之前也可以顯示圖象。在form中放置一imagelist控制項,加入幾個,分別被index為0,1,…在treeview的image屬性項填入你所加入的imagelist的控制項名稱。treenode的imageindex表示節點未被選中時(selected=nil)的序號,selectedindex表示節點被選中時序號。

加入父節點使用的命令是treeview.items.addfirst(nil,'father');裡面的nil的意思是初始標記(不是0的意思,0已經代表了建立了乙個關於節點的物件了,nil代表的是初始化時候的乙個node)。在使用該函式來建立節點的時候,你會發現很多例子中都會建立乙個ttreenode物件來把剛才建立父節點的命令賦給這個物件,比如現在有個ttreenode物件node1,那麼就可以寫成node1 := treeview1.items.addfirst(nil,'father'),目的是把該節點的標識位置賦予node1,這裡不需要再寫多乙個相同的addfirst了,因為在賦予node1的同時就已經建立了這個父節點了。那為什麼需要這個node1呢?當然,如果你只有一層節點沒有子節點的話,可以不需要這個,這個node1主要是為了給建立子節點的時候給它乙個標識,告訴系統這個子節點是屬於哪個父節點的,命令如下reeview1.items.addchildobject(node1, 'child', nil);

delphi中treeview使用常見問題

程式設計心得

1,在delphi中,treeview控制項是一款很出色而且很常用的控制項。

type

pmyrc = ^tmyrc;

tmyrc = record

id:string;

name:string;

age:integer;

end;

新增乙個節點,顯示資訊為tmyrc的name,同時儲存id,age。方法如下:

varp:pmyrc;

i:integer;

begin

randomize;

for i:= 0 to 9 do

begin

new(p);

p.id:=inttostr(random(100));

p.name:='name'+ inttostr(random(205));

p.age:=random(90);

// caption := p.id+' '+p.name + ' '+inttostr(p.age);

treeview1.items.addobject(nil,p.name,tobject(p));

//dispose(p); 如果在這裡釋放指標,id,age並不能存在樹中,而是在這裡就被釋放了。應該在釋放樹的事件裡書寫。

end;

end;

釋放樹的事件deletion, 即使是刪除也會執行這些**。所以不用擔心記憶體洩漏。但是如果不書寫以下**,或者用相關的方式釋放記憶體,必定會造成記憶體洩漏。

procedure tform1.treeview1deletion(sender: tobject; node: ttreenode);

begin

dispose(pmyrc(node.data));

end;

訪問某個樹枝中的age值:

pmyrc(treeview1.selected.data)^.age

DELPHI控制項學習之TreeView

一.如何初始化乙個treeview?弄乙個視窗,放上乙個treeview和乙個button,分別取名為tv1和btn1。如果需要 在每個節點前有個圖,請在視窗上放上乙個imagelist,取名為imagelist1,雙擊 它,加入六個圖示。還要記得記得將tv1的images屬性改為imagelist...

delphi在TreeView 裡加核取方塊

這裡是建立乙個乙個類 type tcheckboxtreeview class ttreeview protected procedure createparams var params tcreateparams override end 具體只要加一句話 procedure tcheckboxt...

WinFrom中TreeView中的應用

c 中的樹很多。比如,windows form 程式設計和 web程式設計中都有一種被稱為 treeview 的控制項。treeview 控制項是乙個顯示樹形結構的控制項,此樹形結構與 windows 資源管理器中的樹形結構非常類似。不同的是,treeview 可以由任意多個節點物件組成。每個節點物...