treeview自動從表中添加標題和列值做目錄的方法2,該方法是借鑒萬一老師的
http://www.cnblogs.com/del/archive/2008/05/15/1114450.html
?
首先界面上添加treeview組件,然后在treeview的onchange事件里這樣寫:
因為要用到定義個過程,需要在接口聲明里引用
private{ Private declarations }/// <summary>/// 刷新左側treeView/// </summary>procedure RefreshLeftTree(Sender: TObject);public{ Public declarations }end;
procedure TForm3.RefreshLeftTree(Sender: TObject); vari: Integer;node: TTreeNode;List: TStringList;s,fieldName: string; begin//刷新前全部清空原來的列表 TreeView1.Items.Clear;{建立 List}List := TStringList.Create;List.Sorted := True; {指定排序}List.Duplicates := dupIgnore; {避免重復}{把數據加入到 TreeView}for i := 0 to frmDataPool.qry需要做的事.FieldDefs.Count - 1 dobeginfieldName := frmDataPool.qry需要做的事.FieldDefs[i].Name;if not 'ID說明附件事情'.Contains(fieldName) thenbeginnode := TreeView1.Items.Add(nil, fieldName); {字段名}{為避免數據重復, 先把數據給 List}List.Clear;frmDataPool.qry需要做的事.First;while not frmDataPool.qry需要做的事.Eof dobeginList.Add(frmDataPool.qry需要做的事.FieldByName(fieldName).AsString);frmDataPool.qry需要做的事.Next;end;{把 List 中的數據加入到 TreeView}for s in List dobeginTreeView1.Items.AddChild(node, s);end;end;end;List.Free; end;
且增加新記錄后也要刷新下目錄才合理
procedure TForm3.Button3Click(Sender: TObject); begin Form4.ShowModal;//showmodal可以確保這個窗口關閉后才執行下一步 //增加后刷新下 RefreshLeftTree(Sender); end;
?
onchange的觸發事件代碼:
procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode); beginif Node.Parent <> nil thenbegin{下面的 Filter 其實就是 SQL 查詢語句, 如果用其他數據庫替換就是}frmDataPool.qry需要做的事.Filter := Node.Parent.Text + '=''' + Node.Text + '''';frmDataPool.qry需要做的事.Filtered := True;end else frmDataPool.qry需要做的事.Filtered := False; {選字段名時取消過慮} end;
?