2

在设计时以某种方式覆盖 Delphi 默认程序?

我需要在设计时覆盖 InstanceSize,我在运行时使用 FastCode 方法:

FastcodeAddressPatch(FastcodeGetAddress(@SInstanceSize), @TWinControl.RfInstanceSize);

但是,有没有办法在设计时做到这一点?

建议中的 Tks

4

2 回答 2

4

“设计时间”实际上只是“运行时间”,但在 IDE 的上下文中,而不是在程序的上下文中。将您的代码放入设计时包中并将其加载到 IDE 中。IDE 将调用Register包单元中的所有过程,此时您可以运行所需的任何代码。

  1. 创建一个新的包项目(.dpk 文件)。
  2. 设置项目首选项,使其成为设计时包。
  3. 向其中添加一个新的空白单元。
  4. 将一个过程添加到名为Register. 它必须有一个大写的 R 和其余的小写。
  5. 随心所欲地实施该过程(例如通过拨打电话到FastcodeAddressPatch那里)。
  6. 编译并安装包。

我对您在第 5 步中尝试执行的操作有点警惕,但我会让您自己解决。

于 2010-01-22T02:12:13.707 回答
1

如果“在设计时”您的意思是“在表单设计器中更改组件的行为方式”,那么您确实不应该尝试这样做。表单设计器是 IDE 的一部分,IDE 是在 BDS.exe 中运行的所有 Delphi 代码。如果您在表单设计器下更改 TObject,您会为整个 IDE 更改它,这可能会带来灾难性的后果。

于 2010-01-22T02:12:32.640 回答