标签:界面 items nil title 添加 ext 技术分享 target 复制
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);
var
i: 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 do
begin
fieldName := frmDataPool.qry需要做的事.FieldDefs[i].Name;
if not ‘ID说明附件事情‘.Contains(fieldName) then
begin
node := TreeView1.Items.Add(nil, fieldName); {字段名}
{为避免数据重复, 先把数据给 List}
List.Clear;
frmDataPool.qry需要做的事.First;
while not frmDataPool.qry需要做的事.Eof do
begin
List.Add(frmDataPool.qry需要做的事.FieldByName(fieldName).AsString);
frmDataPool.qry需要做的事.Next;
end;
{把 List 中的数据加入到 TreeView}
for s in List do
begin
TreeView1.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);
begin
if Node.Parent <> nil then
begin
{下面的 Filter 其实就是 SQL 查询语句, 如果用其他数据库替换就是}
frmDataPool.qry需要做的事.Filter := Node.Parent.Text + ‘=‘‘‘ + Node.Text + ‘‘‘‘;
frmDataPool.qry需要做的事.Filtered := True;
end else frmDataPool.qry需要做的事.Filtered := False; {选字段名时取消过虑}
end;
标签:界面 items nil title 添加 ext 技术分享 target 复制
原文地址:http://www.cnblogs.com/ddxxxb/p/6803204.html