我正在尝试定义TCustomFrame的子类,但在TabOrder属性上收到错误消息。
这些是我遵循的步骤:
将一个新的TFrame后代添加到窗体中(右键单击项目,添加新的其他框架)。
将父类从TFrame切换到TCustomFrame。
TMyFrame = class(TCustomFrame)
检查TFrame定义并发布完全相同的属性(这样做,TMyFrame应该与TFrame相同,对吧?)。
保存并关闭。
在其中定义了TMyFrame的打开单元。
它得到一个错误,指出TabOrder属性不存在。
有人可以澄清我做的事情有什么问题以及如何正确创建TCustomFrame的子类吗?
最佳答案
重要的是,发布的属性存在于组件所在的设计时包中,以便IDE能够流式传输它。
当您向项目中添加框架时,相应的“ dfm”文件包含在TFrame
类中发布的属性。其中包括TabOrder
和其他。当您关闭并重新打开项目时,在TabOrder
中找不到TCustomFrame
,因此会出现错误。
为了能够使用更常见的组件进行解释,请向您的项目中添加一个表单。将已发布的属性添加到您的窗体。保存该项目,关闭并重新打开。您将在对象检查器中看不到已发布的属性。如果IDE尝试流式传输您的属性,则会出现错误。
为了正确操作,您需要做的是在工具面板中注册组件。您需要为此在一个包中进行编译,因为您将无法在TCustomFrame
上使用“添加到调色板”快捷方式。有关如何实现此操作的详细信息,请参见documentation。为了方便起见,您可以从包含TFrame
子代的单元开始,但是不要忘记在更改单位后在保存单元之前手动删除(Alt + F12)未发布的属性。
关于delphi - 如何正确定义TCustomFrame的子类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40544494/