treeview的使用

wlmy2004 2004-01-11 06:45:02
我是一个初学者,在用这个控件的时候遇到了一点问题请帮忙解答,怎么在程序运行的时候增加或修改子项.
...全文
37 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylan53 2004-01-13
  • 打赏
  • 举报
回复
我也是个初学者,你看看吧,
function DataSetToTreeNode(mDataSet: TDataSet;
mFieldNameParent: string; //上级ID INE_SUPERIOR_ID
mFieldNameTreeText: string; //名称 INE_NAME
mFieldNameTreeId: string; //ID INE_ID
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;
if QuotedStr(mParentText) = '' Then
mDataSet.Filter := Format('Not %s Is Null',[mFieldNameParent])
else
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).Value);
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;

procedure TForm9.FormShow(Sender: TObject);
var
LDir,DBPath,AppPath:String;
begin
with DataSource1.DataSet do
begin
TreeView1.Items.Clear;
DataSetToTreeNode(ADOTable1, 'INE_SUPERIOR_ID', 'INE_NAME', 'INE_ID',
TreeView1, nil, 'NULL');
ADOTable1.Filter := '';
end;
end;

procedure TForm9.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
lStr,ID : string;
begin
lStr := Node.Text;
ADOTable1.Locate('INE_Name',lStr,[loCaseInsensitive]);
FNode := Node;
end;
wlmy2004 2004-01-12
  • 打赏
  • 举报
回复
没分了,有分再给
S.F. 2004-01-12
  • 打赏
  • 举报
回复
????? 0 分?
wlmy2004 2004-01-12
  • 打赏
  • 举报
回复
怎么没有分就没有人解答哟,真是事风日下,人心不古.唉...

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧