Toptvnode:=treeview1.TopItem; tvnode:=Toptvnode.getFirstChild; //s:=tvnode.Text; for j:=1 to Toptvnode.Count do begin if tvnode.HasChildren then //有子结点 begin if tvnode.ImageIndex=1 then begin s1:=tvnode.Text; for k:=1 to tvnode.Count do begin sqlstr:='select * from ztb_xm where mc='''+s1+''''; profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString); sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh='''+s+''' and pbxh='''+inttostr(k)+''''; profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); end; end else //没选中 begin tvnode1:=tvnode.getFirstChild; //获得下一个子结点 for k:=1 to tvnode.Count do begin s1:=tvnode1.Text; if tvnode1.ImageIndex=1 then begin s2:=copy(tvnode1.Text,7,1); sqlstr:='select * from ztb_xm where mc='''+tvnode.Text+''''; profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString); sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh='''+s+''' and pbxh='''+s2+''''; profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); end else begin s2:=copy(tvnode1.Text,7,1); sqlstr:='select * from ztb_xm where mc='''+tvnode.Text+''''; profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString); sqlstr:='update ztb_pb set sc_yes=''否'' where wjbh='''+s+''' and pbxh='''+s2+''''; profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); end; tvnode1:=tvnode1.GetNext; end; end; end else //没有子结点 begin if tvnode.ImageIndex=1 then begin s:=tvnode.Text; sqlstr:='select * from ztb_xm where mc='''+s+''''; profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString); sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh=+'''+s+''' and pbxh=''1'''; profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); end else begin s:=tvnode.Text; sqlstr:='select * from ztb_xm where mc='''+s+''''; profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString); sqlstr:='update ztb_pb set sc_yes=''否'' where wjbh='''+s+''' and pbxh=''1'''; profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery); end; end; tvnode:=toptvnode.GetNextChild(tvnode); end;你自己改一下 变换应该不大,是一个遍力的的程序
procedure TForm1.AccessNode(MyNode: TTreeNode); var i:integer; begin for i:=1 to MyNode.Count do begin ListBox1.Items.Add(MyNode.Text); AccessNode(MyNode.GetNext); end; end;procedure TForm1.Button1Click(Sender: TObject); begin AccessNode( Treeview1.Selected); end;这是一个递归方法, 不过就是有点问题, 可以帮我改一下吗?
改成这样试试: procedure TForm1.AccessNode(MyNode: TTreeNode); var i:integer; sChildNode : TTreeNode; begin for i:=1 to MyNode.Count do begin if i = 1 then begin sChildNode := MyNode.getFirstChild; end else begin sChildNode := sChildNode.getNextSibling; end; ListBox1.Items.Add(sChildNode.Text); AccessNode(sChildNode); end; end;procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Clear; AccessNode( Treeview1.Selected); end;
改成这样试试: procedure TForm1.AccessNode(MyNode: TTreeNode); var i:integer; sChildNode : TTreeNode; begin for i:=1 to MyNode.Count do begin if i = 1 then begin sChildNode := MyNode.getFirstChild; end else begin sChildNode := sChildNode.getNextSibling; end; ListBox1.Items.Add(sChildNode.Text); AccessNode(sChildNode); end; end;procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Clear; AccessNode( Treeview1.Selected); end;
成功了, 这样就可以了 procedure TForm1.AccessNode(MyNode: TTreeNode); var i:integer; begin for i:=0 to MyNode.Count-1 do begin ListBox1.Items.Add(MyNode.Item[i].Text); if MyNode.Item[i].getFirstChild<>nil then AccessNode(MyNode.Item[i]); end; end;procedure TForm1.Button1Click(Sender: TObject); begin AccessNode( Treeview1.Selected); end;
tvnode:=Toptvnode.getFirstChild;
//s:=tvnode.Text;
for j:=1 to Toptvnode.Count do
begin
if tvnode.HasChildren then //有子结点
begin
if tvnode.ImageIndex=1 then
begin
s1:=tvnode.Text;
for k:=1 to tvnode.Count do
begin
sqlstr:='select * from ztb_xm where mc='''+s1+'''';
profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString);
sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh='''+s+''' and pbxh='''+inttostr(k)+'''';
profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
end;
end
else //没选中
begin
tvnode1:=tvnode.getFirstChild; //获得下一个子结点
for k:=1 to tvnode.Count do
begin
s1:=tvnode1.Text;
if tvnode1.ImageIndex=1 then
begin
s2:=copy(tvnode1.Text,7,1);
sqlstr:='select * from ztb_xm where mc='''+tvnode.Text+'''';
profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString);
sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh='''+s+''' and pbxh='''+s2+'''';
profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
end
else
begin
s2:=copy(tvnode1.Text,7,1);
sqlstr:='select * from ztb_xm where mc='''+tvnode.Text+'''';
profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString);
sqlstr:='update ztb_pb set sc_yes=''否'' where wjbh='''+s+''' and pbxh='''+s2+'''';
profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
end;
tvnode1:=tvnode1.GetNext;
end;
end;
end
else //没有子结点
begin
if tvnode.ImageIndex=1 then
begin
s:=tvnode.Text;
sqlstr:='select * from ztb_xm where mc='''+s+'''';
profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString);
sqlstr:='update ztb_pb set sc_yes=''是'' where wjbh=+'''+s+''' and pbxh=''1''';
profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
end
else
begin
s:=tvnode.Text;
sqlstr:='select * from ztb_xm where mc='''+s+'''';
profun.Yresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
s:=trim(dmunit.Ztb_DM.AllADOQuery.fieldbyname('wjbh').AsString);
sqlstr:='update ztb_pb set sc_yes=''否'' where wjbh='''+s+''' and pbxh=''1''';
profun.Nresult(sqlstr,dmunit.Ztb_DM.AllADOQuery);
end;
end;
tvnode:=toptvnode.GetNextChild(tvnode);
end;你自己改一下
变换应该不大,是一个遍力的的程序
var i:integer;
begin
for i:=1 to MyNode.Count do
begin
ListBox1.Items.Add(MyNode.Text);
AccessNode(MyNode.GetNext);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
AccessNode( Treeview1.Selected);
end;这是一个递归方法, 不过就是有点问题, 可以帮我改一下吗?
procedure TForm1.AccessNode(MyNode: TTreeNode);
var i:integer;
sChildNode : TTreeNode;
begin
for i:=1 to MyNode.Count do
begin
if i = 1 then
begin
sChildNode := MyNode.getFirstChild;
end else
begin
sChildNode := sChildNode.getNextSibling;
end;
ListBox1.Items.Add(sChildNode.Text);
AccessNode(sChildNode);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
AccessNode( Treeview1.Selected);
end;
procedure TForm1.AccessNode(MyNode: TTreeNode);
var i:integer;
sChildNode : TTreeNode;
begin
for i:=1 to MyNode.Count do
begin
if i = 1 then
begin
sChildNode := MyNode.getFirstChild;
end else
begin
sChildNode := sChildNode.getNextSibling;
end;
ListBox1.Items.Add(sChildNode.Text);
AccessNode(sChildNode);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
AccessNode( Treeview1.Selected);
end;
procedure TForm1.AccessNode(MyNode: TTreeNode);
var i:integer;
begin
for i:=0 to MyNode.Count-1 do
begin
ListBox1.Items.Add(MyNode.Item[i].Text);
if MyNode.Item[i].getFirstChild<>nil then AccessNode(MyNode.Item[i]);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
AccessNode( Treeview1.Selected);
end;