【问题标题】:Delphi use custom controls at design time without packageDelphi 在设计时使用自定义控件,无需封装
【发布时间】:2016-01-10 17:29:02
【问题描述】:

我可以在设计时直接使用自定义控件(例如 TEdit 后代),而无需设计时包吗?我不想为该控件创建任何包,因为它只是一个,特定于项目等。

谢谢

【问题讨论】:

  • 为什么创建一个包对你来说是个问题?做起来很简单,特别是因为您只需要一个项目。您甚至不需要创建两个不同的(运行时/设计时)包,但可以使用一个。
  • 我不知道,也许我太懒了,或者我只是不希望我们软件的其他开发人员被要求安装它(并在每次 Delphi 升级时一遍又一遍地重新安装它、电脑更换等)。也许我想避免包装地狱。有趣的是,例如。项目中的框架或表单可以在没有包的情况下在其中继承,但其他 ui 控件则不能。

标签: delphi custom-controls


【解决方案1】:

没有。 UI 控件必须在包中才能在设计时使用。但是,UI 控件可以在运行时实例化,而不需要放在包中。

【讨论】:

  • 我现在在运行时创建该控件。
【解决方案2】:

IDE 是基于包的,所以不,没有包就不能在设计时使用控件。

但是你有两个有点走捷径的选择。它们并不完全符合您的要求,但可能看起来有些接近,可以在短时间内为您节省一些工作(但从长远来看会使维护更加复杂)。

  1. Delphi 附带用户的自定义控件包 - 专门用于包含不值得他们自己的包的用户的单个控件。
    PS。 Uwe Raabe 纠正了我,因为 Delphi XE 不再提供该软件包。所以最接近的选项是 IDE 中的Component | Install Component... 向导,提供延迟创建新包...换句话说,当使用 Delphi 2010 及更低版本时,只有选项 #1。

  2. 如果您的TEdit 在设计时与 VCL 的 TEdit 没有太大区别,您可以在设计时使用 stock TEdit 并仅在运行时替换您的自定义后代。我对How to efficiently let a `ParentFont = False` child control to use same font name as parent?的回答中显示了仅运行时劫持方法(在TButton 示例中)

【讨论】:

  • 律师会添加第三个选项:创建 .OCX 而不是 .BPL :-D
  • 你还需要一个包
  • 在哪里可以找到用户的自定义控件包?谢谢。有 DXE。
  • @tk_:这仅在 XE 以下的 Delphi 版本中可用。
  • 好的,我将继续创建运行时,因为该控件仅很少使用。以后有更多的时候我会创建一个包。
猜你喜欢
  • 2013-03-04
  • 2012-05-21
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
相关资源
最近更新 更多