- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将“MyProperty”添加到 TTabSheet 并在设计时使用它。但是,如果我对它进行子类化,我担心我还需要对 TPageControl 进行子类化,因为它在内部创建/管理 TTabSheets。
我相信这需要复制 TTabSheet 管理代码来引用 TMyTabSheet 而不是 TTabSheet,因为它需要调用 TMyTabSheet.create。这感觉就像当新版本的 Delphi 更新 TPageControl 而我忘记更新 TMyPageControl 时我会后悔的事情。
我还在研究“类助手”作为另一种选择。
有人对如何最好地实现这一目标有建议吗?
谢谢!
最佳答案
类型助手只是编译时糖,它们不会对已编译的代码产生任何影响,库存 VCL 与 TPageControl
和 TForm
一起使用。这是一个死胡同。
但是,您在这里有一个轻微的误解,即TPageControl...在内部创建...TTabSheets
。事实上,当您通过 TPageControl 本身创建工作表时,例如右键单击它并选择“新选项卡”,就会发生什么。但是,当您从 DFM 文件(或编译的 EXE 中的 DFM 资源)创建事件表单对象时,TForm
本身会创建所有组件,包括页面控件及其选项卡。
请参阅我的回答 How to efficiently let a `ParentFont = False` child control to use same font name as parent? - 这将向您显示与所有者 - TForm
的关系,而不是与 TPageControl
或其他父组件的关系当涉及到为实际选项卡或其他元素选择特定类时..
因此您可以自由地仅追求子类化选项卡。
TMyTabsheet = class(TTabSheet)
组件TPageControl
并以常规方式创建所有需要的选项卡TTabSheet
类更改为您的派生子类TTabSheet
,因为您的类是它的直接后代。您可以将这些声明保留原样 - 但随后您必须将 RegisterClass(TMyTabSheet);
调用添加到单元底部的 initialization
部分,因此当该表单将从 DFM 中构造自身,它能够通过名称找到类实现。如果您要更改声明(至少其中之一),那么您的表单将在从 DFM 流出之前自动调用所有需要的 RegisterClass
。选择您喜欢的任何选项。TPageControl
右键菜单,并在其中添加“新建我的子类选项卡”命令。只是为了避免手动事后 DFM 编辑。如果你经常这样做的话This feels like something I will regret when a new version of Delphi updates TPageControl
创建并调整表单并将其保存到 DFM 后 - TForm
将根据保存的 DFM 数据创建所有组件,其中也包括您的选项卡。除非非常不可能的事件 EMBT 会杀死整个 VCL 流(1995 年在 Delphi 1 中制作)并从头开始重新设计(立即杀死与现有 Delphi 源的所有兼容性),否则在指定类时向前兼容性应该没有问题在 DFM 中。这只是 VCL 设计的标准方式 - 从 DFM 获取特定的组件类型。
关于delphi - 如何向 TTabSheet 添加属性,以便在设计时与 TPageControl 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747029/
这里只是这个问题的后续问题 => link是否可以将 TabSheet 标题的文本颜色更改为另一种颜色(例如白色)并将字体样式更改为“粗体”? 最佳答案 也许这会给你这样的灵感。再次请注意,这仅适用于
我正在运行 Lazarus 0.9.30.2。我有一个 TForm,上面有一个 TPageControl。 TPageControl 内有一系列 TTabSheets(大约 30 个)。我想要做的是对
基本上,我想要一个事件指示器,它可以一目了然地显示该选项卡上正在进行事件计算。我正在寻找一些非常简单的东西,比如在选项卡上显示 gif,或者显示随计时器变化的字符串序列。我不需要复杂的解决方案或需要新
我正在使用 Delphi 2009 设计表单,并且正在尝试找出 TPageControl 元素。我试图为每个选项卡创建单独的对话框。我可以制作 TTabSheets,并且可以将元素放置在 TabShe
我在 TPageControl 上有多个 TTabSheet 并且在某些操作上,用户单击一个按钮,我想在选定的按钮上运行 OnResize 事件TTabSheet。问题是并非所有 TTabSheet
我想在 PageControl 上实现一个关闭按钮,我也读过这个问题 How to implement a close button for a TTabsheet of a TPageControl
如何为 Firefox 等 TPageControl 的 TTabsheet 实现关闭按钮? 编辑: 德尔福版本:德尔福2010 操作系统:Windows XP 及更高版本 最佳答案 现在提供主题支持
我想知道为什么 Delphi (2007) 提供了三个看起来做同样事情的小部件,以及每个小部件的优点/缺点是什么。 在同一主题上,如果我想显示不同的控件集,为什么我应该偏爱例如。 PageContro
我想将“MyProperty”添加到 TTabSheet 并在设计时使用它。但是,如果我对它进行子类化,我担心我还需要对 TPageControl 进行子类化,因为它在内部创建/管理 TTabShee
我是一名优秀的程序员,十分优秀!