treeview的使用 我是一个初学者,在用这个控件的时候遇到了一点问题请帮忙解答,怎么在程序运行的时候增加或修改子项. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也是个初学者,你看看吧,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; 监视自动运行程序 窗体大小的调整,解决就给米分! 大家帮忙看看,我的sql问题 如何为treeview中的每个item都加一个标志变量,在以后能够准确操作每个item? 300分求助,Delphi如果调用VC写的DLL来完成磁卡读写器的操作 XML的节点重命名的问题,请各位赐教 ★★★建议开一个Delphi.NET小版,支持的跟贴★★★ sql查询! 求助:Delphi 6 做的东西,用了 QReport,如何在Delphi 7中加入QReport? 用非BDE控件能不能实现从一个表把数据批量导入另外一个结构相同的表的操作? 大型项目中的查询问题 有什么控件做报表开发效率最高
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;