这就是遍历树的问题啊,我有一段你可以参考一下: //根据字符串查找节点,返回树的节点。 function GetNodeByCode(sCode: String;tv_Tree: TTreeView): TTreeNode; var c : String; i : integer; begin Result := nil; for i := 1 to tv_Tree.Items.Count-1 do begin c := tv_Tree.Items.Item[i].Text; if sCode = c then begin Result := tv_Tree.Items.Item[i]; break; end; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=0 to TreeView1.Items.Count-1 do if TreeView1.Items[i].Text=Edit1.Text then begin TreeView1.Selected:=TreeView1.Items[i]; exit; end; showmessage('no'); end; 如果找到多个,只激活第一个找到的节点
var i:integer; begin for i:=0 to treeview1.Items.Count-1 do begin if treeview1.Items[i].Text=edit1.Text then begin treeview1.SetFocus; treeview1.Items[i].Selected:=true; 如果单纯是选择则不用加下面一行代码,如果要执行Treeview1的双击事件则加入下面一行代码! TreeView1DblClick(Sender); break; end; end; end;
我是菜鸟, 在执行for i:=0 to TreeView1.Items.Count-1 do这个循环的时候,是依次对照每一个节点,如果在判断语句if后面加上 …… else showmessage('no');这样就会出现遍历每一行,也就是如果一旦没又搜索到就会showmessage一次.....很麻烦,我想是找到就激活,没找到就只showmessage一次就可以,并不是要针对每一行搜索过后就要showmessage一次,大侠们,代码怎么改?
for i := 0 to treeview.items.count-1 do begin if Edit1.text = treeview.items[i].text then begin treeview.items[i].checked := true; end; end;绝对可行,多个相同的也行
//根据字符串查找节点,返回树的节点。
function GetNodeByCode(sCode: String;tv_Tree: TTreeView): TTreeNode;
var
c : String;
i : integer;
begin
Result := nil;
for i := 1 to tv_Tree.Items.Count-1 do
begin
c := tv_Tree.Items.Item[i].Text;
if sCode = c then
begin
Result := tv_Tree.Items.Item[i];
break;
end;
end;
end;
var i:integer;
begin
for i:=0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Text=Edit1.Text then
begin
TreeView1.Selected:=TreeView1.Items[i];
exit;
end;
showmessage('no');
end;
如果找到多个,只激活第一个找到的节点
i:integer;
begin
for i:=0 to treeview1.Items.Count-1 do
begin
if treeview1.Items[i].Text=edit1.Text then
begin
treeview1.SetFocus;
treeview1.Items[i].Selected:=true;
如果单纯是选择则不用加下面一行代码,如果要执行Treeview1的双击事件则加入下面一行代码!
TreeView1DblClick(Sender);
break;
end;
end;
end;
begin
if Edit1.text = treeview.items[i].text then
begin
treeview.items[i].checked := true;
end;
end;绝对可行,多个相同的也行