Delphi VCL组件的"Tag"属性的目的是什么?

HMc*_*McG 22 delphi user-interface vcl

Delphi VCL组件的"Tag"属性是否有任何特定用途?我用Google搜索了几个例子,例如,使用'color'属性或者使用值作为指针地址,但使用它是"好习惯",还是因为它与UI的程序逻辑?

Car*_*icz 36

"标签"属性作为"货物集装箱"用于您可能想要做的任何事情.

当你有很多类似的组件共享一个事件处理程序时,它经常用于事件处理程序.事件处理程序可以找到其调用者,然后查询其标记值以获取有关它应该采取什么行动的更多信息.

编辑:

示例:计算器应用程序可能会使用各自的数字标记数字按钮...愚蠢且不完整的示例,但您明白了.然后,事件处理程序可以将数字添加到显示和累加器中,直接从标记中添加,而不必弄清楚哪个按钮是做什么的.


Hen*_*man 11

即使您没有该组件的源,也可以向任何组件添加一条信息.应该谨慎使用它,因为每个组件只能用于一个目的.因此,图书馆永远不应该使用它.


3Da*_*ave 5

正如其他人所说,这是一个放置任何东西的地方。通常,当通过对象引用或指针关联两个对象时,这会派上用场。标签的大小正好可以容纳一个指针,所以如果你需要,比如说,将一个对象绑定到列表框中的一个项目,它变得非常简单。


hub*_*azs 5

我有一些Tag属性的基本问题.不完全是这个属性本身,因为它按预期工作.

一般来说,我认为使用任何通用/通用/多用途变量作为"不良做法".它们在调试期间非常有用,但在生产/关键任务环境中非常有害.它们降低了代码的可读性和可理解性,因为没有人知道"Tag"命名属性或属性的作用.当然你知道为什么要使用这个变量.但迟早你会忘记(我知道你会)并且依靠这个值会让事情变得更复杂.这就是为什么我们应该正确地命名每个变量和属性,以帮助我们理解代码的作用.

使用Tag属性只是一种变通方法/快捷方式,可以避免实现可理解且编写良好的代码.这是实践,它让人上瘾.下次需要存储绑定到组件的新整数值时,您将使用Tag属性,而不考虑任何其他方式来存储所需的值.在Tag属性中存储指针是一个可怕的想法:每次调试指针时都必须转换此值.

告诉我:你有多少次发现自己想要在Tag属性中存储一个新值,但是你意识到这个属性已经被用于不同的目的(如果每个都有一个'Tag2'属性)零件...).

  • 标签已经使用过?没问题.使用HelpContext是的,我看到了你的观点. (2认同)