Delphi中的TreeView
以前總是迴圈展開,現在有這個屬性,就簡單多了
RzTreeView_DWDept.FullExpand; 這樣就可以全部 展開了。
還有一個問題,設定節點選中
RzTreeView_DWDept.SetFocus;
if RzTreeView_DWDept.Selected = nil then
RzTreeView_DWDept.Selected := RzTreeView_DWDept.Items.Item[0];
這個的重點是 RzTreeView_DWDept.SetFocus; 如果當前焦點沒有在樹上,你怎麼設定都不起作用。
**************************************************************
.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表示節點被選中時圖片序號。
3.關於Level
Level的概念可以用下圖表示:
Level0 Level1 Level2
4.排序
SortType決定什麼時候進行排序;
TreeView.AlphaSort對節點進行排序,如果不能滿足要求,你可以定義自己的CustomSort方法。
5.Drag&Drop操作,與標準的拖放操作使用方法一樣
下面是我寫的一個TREEVIEW小程式的程式碼
var rootnode,subnode,personnode,matenode:ttreenode;
i,j,k:integer;
begin
rootnode:=tv1.items.add(nil,'公司');
qrymaster.Close;
qrymaster.sql.add('select * from master');
qrymaster.Open;
qrymaster.First;
for i:=0 to qrymaster.RecordCount-1 do
begin
subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName('company').AsString);
//原形:rootnode=tv1.items.add(nil,string);
// rootnode.ImageIndex :=0;
// rootnode.stateIndex =0;
qrysub.Close;
qrysub.SQL.clear;
qrysub.SQL.Add('select * from submaster where companyid=:dd');
qrysub.ParamByName('dd').asinteger:=qrymaster.FieldByName('companyid').asinteger;
qrysub.Open;
qrysub.First;
for j:=0 to qrysub.RecordCount-1 do
begin
personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName('personname').AsString);
// subnode.ImageIndex :=-1;
// subnode.StateIndex :=-1;
qrymate.close;
qrymate.sql.clear;
qrymate.sql.add('select * from comunication where personid=:personid');
qrymate.parambyname('personid').asinteger:=qrysub.fieldbyname('personid').asinteger;
qrymate.open;
for k:=0 to qrymate.recordcount-1 do
begin
matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname('name').asstring);
qrymate.next;
end;
qrysub.Next;
end;
qrymaster.Next;
end;
end;
RzTreeView_DWDept.FullExpand; 這樣就可以全部 展開了。
還有一個問題,設定節點選中
RzTreeView_DWDept.SetFocus;
if RzTreeView_DWDept.Selected = nil then
RzTreeView_DWDept.Selected := RzTreeView_DWDept.Items.Item[0];
這個的重點是 RzTreeView_DWDept.SetFocus; 如果當前焦點沒有在樹上,你怎麼設定都不起作用。
**************************************************************
.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表示節點被選中時圖片序號。
3.關於Level
Level的概念可以用下圖表示:
Level0 Level1 Level2
4.排序
SortType決定什麼時候進行排序;
TreeView.AlphaSort對節點進行排序,如果不能滿足要求,你可以定義自己的CustomSort方法。
5.Drag&Drop操作,與標準的拖放操作使用方法一樣
下面是我寫的一個TREEVIEW小程式的程式碼
var rootnode,subnode,personnode,matenode:ttreenode;
i,j,k:integer;
begin
rootnode:=tv1.items.add(nil,'公司');
qrymaster.Close;
qrymaster.sql.add('select * from master');
qrymaster.Open;
qrymaster.First;
for i:=0 to qrymaster.RecordCount-1 do
begin
subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName('company').AsString);
//原形:rootnode=tv1.items.add(nil,string);
// rootnode.ImageIndex :=0;
// rootnode.stateIndex =0;
qrysub.Close;
qrysub.SQL.clear;
qrysub.SQL.Add('select * from submaster where companyid=:dd');
qrysub.ParamByName('dd').asinteger:=qrymaster.FieldByName('companyid').asinteger;
qrysub.Open;
qrysub.First;
for j:=0 to qrysub.RecordCount-1 do
begin
personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName('personname').AsString);
// subnode.ImageIndex :=-1;
// subnode.StateIndex :=-1;
qrymate.close;
qrymate.sql.clear;
qrymate.sql.add('select * from comunication where personid=:personid');
qrymate.parambyname('personid').asinteger:=qrysub.fieldbyname('personid').asinteger;
qrymate.open;
for k:=0 to qrymate.recordcount-1 do
begin
matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname('name').asstring);
qrymate.next;
end;
qrysub.Next;
end;
qrymaster.Next;
end;
end;
相關文章
- delphi中Treeview的使用介紹View
- C#中遍歷TreeView的兩個常用方法C#View
- delphi中關於字串的操作字串
- Delphi中的類和物件 (轉)物件
- WPF中TreeView控制元件如何獲取選中的TreeViewItem物件?View控制元件物件
- 【翻譯】Delphi中類的逆向工程
- KendoUI系列:TreeViewUIView
- asp.net TreeView 的使用ASP.NETView
- Delphi中TWebBrowser中注入JsWebJS
- Delphi中除錯dll方法除錯
- Delphi儲存網頁中的圖片網頁
- delphi中的bpl開發注意事項
- Delphi中停靠技術的實現 (轉)
- codesoft在delphi,C#中的例子C#
- TreeView 在失去焦點的時候 選中的TreeNode仍為高亮View
- 將Xml檔案遞迴載入到TreeView中XML遞迴View
- Delphi 中的字串——《Delphi6 開發人員指南》讀書筆記 (轉)字串筆記
- TreeView的基本使用 1205View
- 控制元件treeview的使用 (轉)控制元件View
- ACCESS TreeView控制元件的使用View控制元件
- WPF TreeView BringIntoViewBehaviorView
- Delphi系列談之:Delphi中的靜態屬性及靜態方法的實現 (轉)
- delphi中的語法 div / mod 的用法區別
- 一鍵清除Delphi中無用的檔案
- Delphi7中儲存unicode的BUGUnicode
- delphi中的時間操作技術(1) (轉)
- delphi中的時間操作技術(2) (轉)
- 在Delphi中巧用WINDOWS 的API函式 (轉)WindowsAPI函式
- Delphi 6 SOAP 原始碼中的BUG修正 (轉)原始碼
- 在DELPHI中圖片轉換
- Delphi中儲存影像列表 (轉)
- 【jackyrong 】asp.net 2.0中TREEVIEW中動態增加結點ASP.NETView
- YUI TreeView搞明白了UIView
- TreeView樹狀結構View
- 禁止TreeView自動PostbackView
- 自動化測試框架: Delphi中"包"的妙用框架
- Delphi6/7 中XML 文件的應用 (轉)XML
- Delphi中關於TApplication類的詳解 (轉)APP