gpt4 book ai didi

delphi - 如何在 Delphi 中使用或解决视觉表单继承问题?

转载 作者:行者123 更新时间:2023-12-03 14:38:13 26 4
gpt4 key购买 nike

我一直在 Delphi 7 中从事一个项目,我想让表单从其他表单继承组件。我能够做到这一点,但遇到了以下问题(我将发布解决方案,希望将来能帮助其他人):

  1. 在表单的 .pas 文件中,我会将表单更改为从其他表单继承,但它不会从祖先表单获取组件。
  2. 对于某些后代表单,在设计时打开表单时,我会收到以下错误消息:“创建表单时出错:未找到‘TAncestorForm’的祖先。”我必须首先手动打开祖先表单,然后才能打开后代表单。

最佳答案

首先,对于那些不知道如何直观地继承表单的人,您可以像往常一样创建祖先表单。然后转到"file">“新建”>“其他”。选择包含当前项目名称的选项卡,然后选择要继承的表单。如果要从不属于当前项目的表单继承,请打开该表单,右键单击它,然后选择“添加到存储库”。然后,您可以转到"file">“新建”>“其他”,然后从相应的选项卡中选择该表单。

鉴于此,我遇到了问题,因为一些后代表单已经创建,所以我无法遵循上述过程。另外,我对 Delphi 创建的标准代码中的表单进行了一些更改。我能够使用以下准则解决视觉表单继承的所有问题:

  • 后代表单的 .pas 文件必须具有从正确的祖先类继承的表单类,例如:
    类型 TMyForm = class(TAncestorForm)
  • 后代形式的 .dfm 中的第一行必须包含单词 inherited 而不是 object,例如:
    继承MyForm:TMyForm
  • 编辑:经过仔细检查,不需要以下内容: 祖先表单的 .pas 文件必须具有 Delphi 创建的标准全局变量,例如:
    var AncestorForm: TAncestorForm;
  • 项目 .dpr 文件的 uses 部分必须具有与单元文件名后面的注释相同的全局变量,例如:
    'unAncestor.pas' {AncestorForm} 中的 unAncestor

注释/提示:

  • 如果您愿意,祖先表单和后代表单都可以不自动创建(在“项目”>“选项”>“表单”>“自动创建表单”中设置)。
  • 要将后代表单上的属性恢复为祖先表单的值,请在对象检查器中右键单击该属性,然后选择“恢复为继承”。
  • 要将组件的所有属性值恢复为祖先的值,请右键单击该组件并选择“恢复为继承”。

关于delphi - 如何在 Delphi 中使用或解决视觉表单继承问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com