如何按文本定位treeview节点(locate treeview node by text)

在使用TreeView组件开发Delphi应用程序时,您可能会遇到这样一种情况:您需要搜索只由节点文本给出的树节点。...

在使用TreeView组件开发Delphi应用程序时,您可能会遇到这样一种情况:您需要搜索只由节点文本给出的树节点。

Cloud computing illustration

在本文中,我们将向您展示一个通过文本获取TreeView节点的简单快捷的函数。

delphi示例

首先,我们将构建一个简单的Delphi表单,其中包含一个树视图、一个按钮、一个复选框和一个编辑组件,并保留所有默认组件名称。

正如您可能想象的那样,代码的工作方式如下:如果Edit1.Text提供的GetNodeByText返回一个节点,并且MakeVisible(复选框1)为true,则选择node。

最重要的部分是GetNodeByText函数。

此函数只需从第一个节点(ATree.Items[0])开始遍历ATree树视图中的所有节点。迭代使用TTreeView类的GetNext方法查找ATree中的下一个节点(查找所有子节点的所有节点)。如果找到由AValue提供文本(标签)的节点(不区分大小写),则函数返回该节点。布尔变量avible用于使节点可见(如果隐藏)。

function GetNodeByText(ATree : TTreeView; AValue:String; AVisible: Boolean): TTreeNode;var Node: TTreeNode;begin Result := nil; if ATree.Items.Count = 0 then Exit; Node := ATree.Items[0]; while Node nil dobeginif UpperCase(Node.Text) = UpperCase(AValue) thenbegin Result := Node; if AVisible then Result.MakeVisible; Break; end; Node := Node.GetNext; end;end;

这是运行“查找节点”按钮OnClick事件的代码:

procedure TForm1.Button1Click(Sender: TObject);var tn : TTreeNode;begin tn:=GetNodeByText(TreeView1,Edit1.Text,CheckBox1.Checked); if tn = nil then ShowMessage('Not found!') elsebegin TreeView1.SetFocus; tn.Selected := True; end;end;

注意:如果节点位于,代码将选择该节点,如果不在,将显示消息。

就这样。只有Delphi可以做到这么简单。但是,如果您看两遍,就会发现缺少了一些东西:代码将找到AText给出的第一个节点。

  • 发表于 2021-09-04 07:21
  • 阅读 ( 146 )
  • 分类:数学

你可能感兴趣的文章

哨兵(sentinel)和腋窝淋巴结(axillary lymph nodes)的区别

...哨淋巴结 如果前哨淋巴结活检阴性,则更可能所有上游节点为阴性。如果阳性,意味着上游可能还有其他阳性淋巴结。因此,前哨淋巴结活检对于确定哪些淋巴结应切除是有用的。它减少了手术切除所有潜在癌淋巴结的并发症...

  • 发布于 2020-09-21 15:36
  • 阅读 ( 564 )

节点(node)和节间(internode)的区别

...植株高度的重要结构。 目录 1. 概述和主要区别 2. 什么是节点 3. 什么是节间 4. 节与节间的相似性 5. 并列比较-节点与节间的表格形式 6. 摘要 什么是一个节点(a node)? 茎节是植物的重要组成部分。它是茎上的一点,叶、芽或分枝...

  • 发布于 2020-10-10 03:23
  • 阅读 ( 632 )

窦房结(sa node)和房室结(av node)的区别

关键区别——sa节点与av节点 心脏是生物体的重要**,在循环系统中起着泵送的作用。这就保证了不同物质在循环介质中的运输;血液,包括氧气、营养物质、废物等。人的心脏由四个腔室组成:两个心房(上腔)和两个心室...

  • 发布于 2020-10-20 06:46
  • 阅读 ( 375 )

基站(bts)和节点b(node b)的区别

基站对节点b BTS和Node B都是最后一英里的网络元素,它们在通过天线传输到空中接口之前处理信号和信息。对于UMTS(通用移动通信系统)或任何其他第三代无线技术,Node B都是这样做的,而BTS对于GSM(全球移动通信系统)、CD...

  • 发布于 2020-11-03 04:48
  • 阅读 ( 372 )

如何用代码读写xml文件

您想学习如何从java读写XML文件吗? ...

  • 发布于 2021-03-12 02:25
  • 阅读 ( 406 )

codea如何让你创建自己的ipad应用程序

...该是这样的。请随意花点时间调整我们的代码,看看它是如何改变结果的。接下来,我们要让事情更具互动性。 ...

  • 发布于 2021-03-13 01:19
  • 阅读 ( 134 )

如何建立一个照片推特机器人与树莓皮和节点.js

...witter机器人会教你一些有用的编程技巧。我们之前研究过如何用Python构建一个基本的Twitter bot(也在Raspberry Pi上),但这次我们采用了不同的方法。 ...

  • 发布于 2021-03-23 18:07
  • 阅读 ( 357 )

了解如何使用react native编写自己的android应用程序

...获取一些背景信息,如果你喜欢构建游戏,为什么不看看如何用Buildbox编写一个****呢? ...

  • 发布于 2021-03-23 19:10
  • 阅读 ( 235 )

什么可以防止我网络上的所有wi-fi设备相互冲突?

...各样的Wi-Fi设备,这些设备向Wi-Fi节点进行传输;该节点如何处理所有的流量,而不使所有传入的传输发生冲突? 今天的问答环节是由SuperUser提供的,SuperUser是Stack Exchange的一个分支,是一个由社区驱动的问答网站分组。 问题 ...

  • 发布于 2021-04-12 01:17
  • 阅读 ( 121 )

节点.js(node.js)和棱角(angularjs)的区别

...比,AngularJS的最大优势之一是它的服务概念。   什么是节点.js(node.js)? js是一个基于googlev8javascript引擎的JavaScript运行时环境,在浏览器外执行JavaScript代码。它帮助开发人员构建无阻塞的代码单元,这样他们就可以获得大部分的...

  • 发布于 2021-06-25 19:05
  • 阅读 ( 215 )
sjgxe395
sjgxe395

0 篇文章

相关推荐