【问题标题】:Delphi forms derived from base form从基本形式派生的德尔福形式
【发布时间】:2017-07-24 06:02:01
【问题描述】:

我有一个 delphi 项目,它有多种形式,每个形式都需要覆盖 windows 方法来处理 windows 消息(例如 wndproc、wm_size ...)

我可以使用基本形式吗?

如果是,我如何使用基本表单,以便我可以从基本表单派生我的表单,并且所有表单都将具有相同的方法?

我从基本表单派生的表单是否会自动拥有这些方法而不声明它们?

谢谢

【问题讨论】:

  • 当然,这就是继承类的全部目的。表格也不例外。 Delphi 以继承类的性质而闻名。
  • 在文档中搜索Visual Form Inheritance
  • @JerryDodge 嗨,杰瑞,当我从基本表单派生表单时,我可以在派生表单上使用声明的方法还是必须再次声明它们?例如,我在基本表单的私有部分中有一个处理 wm_size windows 消息的过程,我是否必须以派生形式再次声明此方法?
  • @KenWhite 谢谢肯

标签: forms delphi components


【解决方案1】:

当你继承一个表单时,它就像继承其他类一样。默认情况下,当您继承一个类时,visible 方法可供您使用。 可见的意思,这取决于某个东西是privatepublicpublished等。

Read here,特别是关于Visibility of Class Members的部分。

假设一个方法在继承的类中是可见的,你就可以访问它。另外,如果你需要让它表现不同,或者你需要捕获/拦截某些东西等,你可以覆盖它。但是,你只能覆盖虚拟方法。

例如...

type
  TBaseClass = class(TObject)
  public
    procedure DoSomething; virtual;
  end;

  TNewClass = class(TBaseClass)
  public
    procedure DoSomething; override;
  end;

您不需要覆盖它,但如果需要,您可以。你可以read more about it here

【讨论】:

  • Jerry 谢谢你的详细解释,它有效,我可以使用派生形式,这就像一个奇迹 :) 我不必在所有新形式上一次又一次地声明所有方法跨度>
  • @Emreacikgoz 你也可以自己尝试一下,看看它是否有效:-)
  • 我现在做了,它确实有效 :) 但我想在尝试之前先问一下,以防我需要在做之前做或了解一些细节
猜你喜欢
  • 1970-01-01
  • 2011-07-05
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多