修改VCL组件

时间:2011-08-15 18:30:57

标签: delphi components vcl

  

可能重复:
  Replacing a component class in delphi

有没有人有任何关于修改VCL组件并使它们在IDE中相对默认的提示?这意味着不一定从它们下降,而是在后代对象中似乎不允许这样的事物的地方改变功能。如果它们可以用来代替标准组件,那也是一个奖励。

例如,我想做的其中一件事就是在TButton上进行alpha混合鼠标悬停。我注意到没有OwnerDraw事件和修改按钮绘制方式的代码似乎不在我可以覆盖的地方。有什么建议,或者我是否必须将TButton及其所有祖先从VCL代码中删除并直接修改它?

3 个答案:

答案 0 :(得分:3)

您可以选择以下方法之一:

  • 根据here
  • 的说明覆盖表单的ReadState
  • 使用插入器类,如herehere
  • 所述
  • 按照here所述分配新的WindowProc

答案 1 :(得分:1)

您正在制作与开发自定义V.C.L相关的几个问题。控件。

因为它是一个非常扩展的主题,您可能想要浏览或搜索互联网。

作为一个快速的问题,有几种方法可以开发或扩展控件。

有时候,可以用不同的方式开发相同的控件, 另外,这取决于你想要发展的那种控制。

您还提到了如何制作控件,与Delphi I.D.E进行交互。

Delphi控件使用包,你可以使用没有控件的普通库创建一个包,你可能想在开始控制之前开始这样做。

你可以创建一个根本没有交互的控件,只能通过运行应用程序来运行,然后再添加与Delphi I.D.E的交互。

在Delphi中,当你开发一个控件并希望将它放在表单上时,在设计时,在内部,它就像你的应用程序Delphi一样,并且已经掌握了你的控件。

答案 2 :(得分:1)

如果要更改应用程序中所有TButton的外观,可以在不修改VCL的情况下执行此操作。当有几百个按钮组件存在时,我认为没有必要自己修改甚至子类化VCL控件。例如,对于alpha混合的鼠标悬停,只需查看TMS控件。

然而,对于自己动手的技术;方法一(建议简单)就是简单地将所有TButton从应用程序中取出并用其他东西替换它。 VCL组件替换(全局)很容易通过gExperts完成。要了解如何将标准控件外观(按钮外观如何)与Delphi代码中绘制的某些重叠元素组合在一起,请参阅TBitBtn作为示例。我建议您检查TBitBtn源,并从中开始,而不是继承TButton或TCustomButton。

方法二(不建议简单)是开始使用皮肤系统,它可以在标准控件上绘制完全不同的外观。