【问题标题】:Control '' has no parent window : Why is control not named?控件''没有父窗口:为什么控件没有命名?
【发布时间】:2019-06-12 02:56:56
【问题描述】:

我的任务是支持使用 Delphi 编写的应用程序,该应用程序偶尔会崩溃并显示错误消息 "Control '' has no parent window"

我的问题不是要了解为什么会发生错误,而是要了解为什么控件没有分配名称。

似乎缺少控件名称是控件编码方式的功能(即控件可以有名称但它们是可选的),还是因为控件的名称是从(非- 存在)父母?

【问题讨论】:

  • 是的,控件名称是可选的,但是在设计时创建的控件总是具有指定的名称,该名称在 DFM 流式传输期间使用。有问题的控件是在运行时在代码中创建的,或者在从 DFM 读取控件的名称之前发生错误。如果没有看到实际失败的代码,真的没有办法回答这个问题。
  • 就像 Remy 说的那样,它需要代码和 dfm 才能检查出来。此外,隔离您的问题是一个好主意,这样您就可以放心地重现它。一旦你得到它,修复它可能会很容易。

标签: delphi controls


【解决方案1】:

有多种原因,包括但不一定限于:

1) 代码中没有给出名称。 2) 它不会继承任何调用它的函数的名称

【讨论】:

  • 控件不继承名称,并且“对于任何调用它的函数”都是不合理的。
  • 我没有意识到这是 GrammerExchange。我会努力让英语成为我下辈子的第一语言。
  • 在技术领域,尤其是书面形式,术语的准确性至关重要。这就是我们作为程序员所做的工作的本质。
【解决方案2】:

我的问题不是要了解为什么会发生错误,而是要了解为什么控件没有分配名称。

与设计时相反,在运行时创建的控件不需要有名称。所以,这个控件没有名字是因为程序员创建它时没有命名,或者它是由另一个控件内部创建的控件,没有命名。

控件不命名是完全正常的。对于复杂的应用程序来说,从不引用控件名称是完全合理的。

【讨论】:

  • 另请注意,框架会在运行时创建一些控件,例如就地编辑...
  • JFTR,即使在设计时控件也不需要有名称。
  • 在构造函数调用链中不恰当的过早初始化期间发生的错误也可能会在流系统应用 Name 属性之前触发窗口错误。
  • 感谢您的回复。我的挑战是,我应该在没有编程知识的情况下弄清楚哪个应用程序函数抛出了这个错误,无法访问源代码和日志,这些日志并不能告诉我应用程序在做什么......只有一个未命名的控件有没有父母。我希望我可以用“给你控制权 &^$%#% 名称”作为回应,但似乎不会这么简单。
  • 我刚刚回答了您提出的问题。你说得很清楚你的问题是什么,我在回答中引用了这一点。
猜你喜欢
  • 2016-12-20
  • 2011-04-16
  • 2014-06-12
  • 1970-01-01
  • 2013-08-27
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多