根据一字符窜在treeview中定位节点

heshiquan 2002-03-16 03:02:26
现在要将公司的架构用树行控表现,(表department字段:bh,mc,parent_bm)本人希望能输入编码时,能定位到控件上一接点,该如何?
...全文
30 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
quark 2002-04-03
  • 打赏
  • 举报
回复
//==============================================================================
//数据集解构成树****************************************************************
//==============================================================================
procedure DataSetToTreeView(DataSet: TDataSet; var TreeView: TTreeView; NodeRoot: string);
var Nodes: array of TTreeNode;
Strs: array of string;
i: integer;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
with DataSet do
begin
Close;
Open;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SetLength(Nodes, FieldCount+1);
SetLength(Strs, FieldCount);
Nodes[0] := TreeView.Items.AddChild(nil, NodeRoot);
for i:=Low(Strs) to High(Strs) do Strs[i] := #255;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First;
while not Eof do
begin
for i:=Low(Strs) to High(Strs) do
if Strs[i]<>Fields[i].AsString then
begin
Strs[i] := Fields[i].AsString;
Nodes[i+1] := TreeView.Items.AddChild(Nodes[i],Fields[i].AsString);
end;
Next;
end;
Close;
end;
end;
heshiquan 2002-04-03
  • 打赏
  • 举报
回复
能否利用record 将node的data指向一record
neweb 2002-03-24
  • 打赏
  • 举报
回复
Delphi 没有这样的方法,你可以自己写一个来模拟
heshiquan 2002-03-23
  • 打赏
  • 举报
回复
thank you very much ............................
能否通过排序查找或者象VB中一样treenode的key属性来定位?
neweb 2002-03-20
  • 打赏
  • 举报
回复
如果你是查找整个字符串:

theNode := TreeView1.TopItem.getFirstChild;
while (theNode.Text<>theStr) do
begin
if (theNode不是最后一个节点) then
theNode := theNode.GetNext
else
break;
end;

if (theNode.Text<>theStr) then
//没找到
else
//找到了;

如果你想每敲一个字查一次,改一下上面的代码也可以实现。
heshiquan 2002-03-20
  • 打赏
  • 举报
回复
thank you very much ............................,不过你这样定位可能时间较慢,特别在初始化TREEVIEW时并记录很多时,会很慢,请文有更好的方法?
Hillside 2002-03-16
  • 打赏
  • 举报
回复
TheNode:=nil;
with TreeView.Items do for i:=0 to pred(Count) do
if Items[i].Text=DesireText then begin
TheNode:=Items[i];
break;
end;
if TheNode=nil then ShowMessage('Text not found')
else TheNode.MakeVisible(False);

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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