///////Begin Source
function DataSetToTreeNode(mDataSet: TDataSet;
mFieldNameParent: string; //父节点标识字段名
mFieldNameTreeText: string; //节点文本字段名
mFieldNameTreeId: string; //节点标识字段名
mTreeView: TTreeView; mTreeNode: TTreeNode;
mParentText: string): Boolean;
var
vTreeNode: TTreeNode;
vFieldValues: Variant;
vFieldNames: string;
begin
Result := False;
if not Assigned(mDataSet) then Exit;
if not Assigned(mTreeView) then Exit;
if not mDataSet.Active then Exit;
vFieldNames := Format('%s;%s;%s',
[mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]);
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
if mDataSet.RecordCount = 0 then Exit;
mDataSet.First;
while not mDataSet.Eof do begin
vTreeNode := mTreeView.Items.AddChild(mTreeNode,
mDataSet.FieldByName(mFieldNameTreeText).AsString);
vFieldValues := mDataSet[vFieldNames];
DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText,
mFieldNameTreeId, mTreeView, vTreeNode,
mDataSet.FieldByName(mFieldNameTreeId).AsString);
///////Begin 恢复位置
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
mDataSet.Locate(vFieldNames, vFieldValues, []);
///////End 恢复位置
mDataSet.Next;
end;
Result := True;
end;
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
DataSetToTreeNode(adoquery1, 'ParentTreeId', 'TreeText', 'TreeId',
TreeView1, nil, 'NULL');
end;
///////End Source我有一表有以下字段﹐工廠﹑部門﹑課別﹑員工
該如何實現所需功能
function DataSetToTreeNode(mDataSet: TDataSet;
mFieldNameParent: string; //父节点标识字段名
mFieldNameTreeText: string; //节点文本字段名
mFieldNameTreeId: string; //节点标识字段名
mTreeView: TTreeView; mTreeNode: TTreeNode;
mParentText: string): Boolean;
var
vTreeNode: TTreeNode;
vFieldValues: Variant;
vFieldNames: string;
begin
Result := False;
if not Assigned(mDataSet) then Exit;
if not Assigned(mTreeView) then Exit;
if not mDataSet.Active then Exit;
vFieldNames := Format('%s;%s;%s',
[mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]);
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
if mDataSet.RecordCount = 0 then Exit;
mDataSet.First;
while not mDataSet.Eof do begin
vTreeNode := mTreeView.Items.AddChild(mTreeNode,
mDataSet.FieldByName(mFieldNameTreeText).AsString);
vFieldValues := mDataSet[vFieldNames];
DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText,
mFieldNameTreeId, mTreeView, vTreeNode,
mDataSet.FieldByName(mFieldNameTreeId).AsString);
///////Begin 恢复位置
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
mDataSet.Locate(vFieldNames, vFieldValues, []);
///////End 恢复位置
mDataSet.Next;
end;
Result := True;
end;
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
DataSetToTreeNode(adoquery1, 'ParentTreeId', 'TreeText', 'TreeId',
TreeView1, nil, 'NULL');
end;
///////End Source我有一表有以下字段﹐工廠﹑部門﹑課別﹑員工
該如何實現所需功能
解决方案 »
- 给大家发一个使用DBGrid的全攻略
- 用ExpressBars做成的弹岀菜单怎么无法自动消失?
- ExpressQuantumGrid->如何根据表结构,通过程序方式动态往表中添加字段并显示对应的值,谢谢
- 在数据集的基础上进行统计?
- 在DELPHI程序中加入背景音乐,MP3的音乐或是FLASH音乐。程序执行时就可以听到给定的MP3音乐,可执行的EXE文件中含有MP3音乐。就像在DELPH
- 如何实现带参数的程序,比如像dir /?可以自动识别参数'/?'调用不同的处理函数
- 怎样把OO技术应用到象棋中去?
- 跪求实现sql导出到excel的完整代码(例子)
- 公司要招一个Delphi程序员
- 我忘了,谁能告诉我。
- 如何统计meno里的字符个数?先谢了!
- 有想做网络游戏外挂的吗
ID 名称 上级ID 其它属性
TreeView1.Items.Clear;
DataSetToTreeNode(adoquery1, '上级ID', '名称', 'ID',
TreeView1, nil, 'NULL');
ADOTable1.Filter := '';