构建组件时应该从哪里开始?

时间:2009-11-20 20:03:44

标签: delphi delphi-2009 components

我希望构建自己的组件,不知道从哪里开始。我有一些Delphi书籍,但它们已经陈旧且过时,我正在寻找一些关于教程/书籍的建议来帮助我做到这一点。该组件将非常简单,基本上是2个标签和一个图像。我需要数组中的数百个,所以我认为一个组件将是最好的路径。文本将根据宽度等进行调整,并有一些鼠标悬停事件。所以基本上,我从哪里开始?

我正在使用Delphi 2009,这将是一个win32应用程序。

谢谢!

6 个答案:

答案 0 :(得分:6)

你可以订购Ray Konopka的书Dev。 {$ 3}} 25美元。这是一本关于这个主题的专业书籍,也非常适合初学者。

开发组件的主要原则是:

  1. 组件是可视的还是 不是(是否需要画布才能上画)

  2. 是否需要窗口句柄(视觉或非视觉)

  3. 一旦您回答了这些问题,您可以查看Delphi的源代码示例。

答案 1 :(得分:5)

据我所知,Danny Thorpe撰写的Delphi Component Design仍然是关于这一主题的最佳书籍。在过去的15年中,组件设计没有发生重大变化,因此您拥有的书籍可能并不像您想象的那样过时。阅读旧参考文献时要记住三件事:

  1. 某些单位的名称已更改。例如,不再有DsgnIDE了。它取而代之的是DesignIDE。

  2. 现在,设计时代码与运行时代码严格分开。这意味着您不能在组件的单​​元中使用DesignIDE,否则您将被禁止使用运行时软件包。较旧的Delphi版本没有这个技术限制(虽然它一直是一个法律限制),所以你找到的旧代码示例可能需要稍微改变一下。

  3. 字符串现在是Unicode,因此,对于您找到的所有旧代码示例,可能会对您需要识别的字符大小进行一些无效的假设。

  4. 编写组件的最大障碍是你应该使用你所从的类的各种 protected 成员,但那些经常没有记录,所以你必须要多更愿意阅读VCL源代码,了解各种方法的使用方法。

答案 2 :(得分:3)

执行所需操作的最简单方法是创建新表单。放下标签和图像,然后按照您想要的方式排列;如果它符合您的需要,请将它们放在面板上,以便它们可以作为一个整体移动。

选择要包含的所有组件(如果选择使用,则包括该面板),然后单击IDE主菜单上的“组件”项,并选择“创建组件模板”。 (仅当您在当前表单上选择了组件时才会启用它。)将出现一个对话框,询问您是否有新组件的名称,以及您希望它出现的Component Palette页面。

答案 3 :(得分:1)

查看this article,其中介绍了如何构建由一组现有组件组成的新组件。

答案 4 :(得分:1)

不要担心你的书老了。

从过去开始,几乎所有事情仍然可以正常工作,而一般情况下,通常是由于名称冲突或在2009版本中添加了Unicode。

他们不是微软,他们没有充分理由破坏旧代码。事实上,从旧的DOS时代开始采取一些代码 - 假设它不会试图操纵屏幕,它可能会以最少的修复程序运行。

答案 5 :(得分:0)

不要担心你的旧书!从v3开始,Delphi没有太大变化。这就是为什么用D3编译的大多数程序仍然可以在D7甚至更新的版本中编译。如果它没有编译,可能你需要在这里改变一两行。

我建议你在互联网上搜索其他非常简单的组件,看看它们是如何制作的。然后自己制作并在此发布。让其他人看看它并建议改进或发现错误。

关于控件的设计:

1)也许你不需要这两个标签。您可以直接在图像上绘制文本。如果你有很多这样的组件,你可以节省一点内存。

2)你可能不希望以一种形式加载很多很多图像。开销可能很大。您可以做的是仅在屏幕上可见的图像中加载图片 - 您将只在屏幕上显示5-10张图像(或者您可以在不离开屏幕的情况下在图像上显示的任何数量的图像)。当用户向下滚动时,您在屏幕上保留相同的TImage控件,但是在其中加载新的(下一个)图像。

3)你可能不想将标签和TImage存储在一个数组中(我想它是一个TImage,因为它似乎你想在屏幕上显示它们,否则你不需要标签 - 你需要解释你的问题如果我弄错了更多细节)。但您可以存储TBitmap和文本(您希望在标签中显示)。

因此,您可能需要计算数百个控件将创建的CPU /磁盘开销以及所需的内存量。如果你保持在1GB以下并且加载时间不到10秒,那么它相对没问题。如果没有,您可能需要在开始实际实施之前考虑控件的设计。

希望这有用。 见你。