- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试定义 TCustomFrame 的子类,但在 TabOrder 属性上出现错误。
这些是我遵循的步骤:
将父类从 TFrame 切换到 TCustomFrame。
TMyFrame = 类(TCustomFrame)
检查 TFrame 定义并发布完全相同的属性(这样做,TMyFrame 应该与 TFrame 相同,对吧?)。
有人可以澄清我所做的事情有什么问题以及如何正确创建 TCustomFrame 的子类吗?
最佳答案
您似乎有点过于复杂了,我不确定您为什么认为需要第 2 步。
以下内容对我来说效果很好:
从没有打开项目的情况开始,创建一个新框架,在其上粘贴一两个组件(我只使用了 TListBox),将其重命名为 MyFrame 并保存。
右键单击框架,从上下文菜单中选择“添加到调色板”,完成随后的对话框以指定它应出现在哪个调色板页面上,然后再次保存。默认情况下,它会将其称为“MyFrameTemplate”之类的名称。
执行“关闭全部”,然后开始一个新项目。导航到您在步骤 2 中指定的调色板页面,并将 TMyFrame 的实例添加到表单,就像添加任何其他组件一样。系统将提示您将框架的单位添加到您的项目中。这就是您需要做的全部。鳍。
上述方法至少可以追溯到 D7 和西雅图。
如果您重命名框架的 DFM 文件,然后尝试重新打开使用它的项目,IDE 将提示它无法打开 DFM,然后无法找到类 TMyFrame 并询问是否它应该从您的表格中删除。因此,框架的使用取决于其 DFM 的存在,并且由于框架上组件的属性已经流式传输到其 DFM 中,因此很难看出如何阻止它们以使用框架的形式进行更改,因为您需要击败通常的 Steam 机制。也许有人知道一种巧妙的方法来做到这一点,但在我看来,如果您想做的话,TFrame 是一个值得开始的地方。
顺便说一句,如果您想防止评论中提到的内容被更改,我个人会将其作为一个新的复合组件,使用 GExpert 的“组件到代码”为其构造函数生成代码。
关于delphi - 如何正确定义TCustomFrame的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40544494/
我编写了一个TCustomFrame的子类,它是从TFrame(Forms.pas单元)精确复制的: TMyFrame = class(TCustomFrame) private {
我是一名优秀的程序员,十分优秀!