【发布时间】:2012-06-09 19:00:28
【问题描述】:
我有这个应用程序在许多地方重用了一种成语。有一个 TPanel,上面有一些标签和按钮。目的是允许用户选择一个日期范围。
“&Dates”标题是一个标签,“All Dates”部分是第二个标签。当用户单击“选择”按钮时,会弹出一个表单,向用户显示一对日期/时间控件和确定/取消按钮。如果用户在选择某些日期后点击 OK,第二个标签将变为“From mm/dd/yyyy To mm/dd/yyyy”。
创建一个封装这些控件的组件是否合理?我一直在查看组件编写者的各种资源,但它们似乎没有指出我正在考虑的问题,例如处理按钮的 onclick 事件。如果这是一个合理的尝试,我也很感激关于如何制作这种“复合控件”的描述的指针。
【问题讨论】:
-
如果你不想写一个成熟的组件,你可以使用frames。
-
+1。这是现代的替代方案。 (不过,您可能希望对其进行一些扩展;从技术上讲,它在这里不符合作为答案的条件,因为它只是一个离线链接,应该标记为“不是答案”。)您还可以多选不过,这些组件并使用 IDE 菜单中的
Component->Create Component Template...。 (这是老式的方式,从 Delphi 1 或 2 开始就一直存在。) -
实际上,当我开始搜索短语“delphi 复合控件”时,我找到了 TFrame 替代方案,而且看起来确实可以解决问题。我希望它拥有的属性缺乏设计时支持,但它可能会解决问题。
-
是的,框架也可以解决问题。但是,在设计时使用它们可能有点笨拙。对于较小的组件,例如您的示例中的组件,我通常会创建组件。但是,对于更复杂的复合安排,类似于表格,我通常使用框架。
-
如果您喜欢编写执行绘图和鼠标事件的自定义控件,那么这是一个相当简单的控件。但是对于自定义控件的新手来说,学习如何编写控件将是一个很好的项目。这意味着没有
TBitBtn或TLabel,而只有TCustomControl后代及其属性。按钮和文本将使用控件的重写Paint过程动态绘制。
标签: delphi components