【问题标题】:Creating a custom form designer创建自定义表单设计器
【发布时间】:2010-11-17 21:57:09
【问题描述】:

我想在 Delphi 中创建一个自定义的“数据模块”,一个类似 TDataModule 的(可能是继承的)类,它有一个基于自定义网格的设计界面(每行一个组件,一些属性作为列)。这可能吗?我应该从哪里开始?

我目前使用的是 Delphi 2007。

【问题讨论】:

    标签: delphi delphi-2007 vcl custom-component datamodule


    【解决方案1】:

    正如尼克霍奇斯在这里指出的那样:

    Drawing on a DataModule in Delphi

    很难在 TDataModule 后代上进行绘制。可能不是不可能,但肯定不值得麻烦。

    我会考虑从头开始设计一个全新的 TDataModule,这样您就可以完全控制它。当然可能需要做很多工作,但最终会得到回报。

    您可以在 Classes.pas 单元中找到 TDataModule 类。但这只是代码的运行时部分。其他部分与IDE相关。例如,对于 BDS 2006,您可以在“c:\Program Files\Borland\BDS\4.0\source\ToolsAPI\”中找到与 ToolsAPI 相关的单元。您还可以从 TDataModule 派生您自己的数据模块并将其注册到 RegisterCustomModule (DesignIntf​​.pas)。我对这个主题了解不多,也许其他人知道。正如我所说,做这样的事情并不容易。但也许有了这些初步信息,你就能找到你想要的。

    【讨论】:

    • Nick 谈到在设计时为 TDataModule 绘制背景。数据模块是一种非可视化控件。你不能让它在运行时出现。
    • 您对如何设计全新的 TDataModule 有任何指导吗?我认为当前 TDataModule 设计器的源代码不可用。
    【解决方案2】:

    也许有可能。可以在页面New IDE Building Blocks 上找到 XML 框架设计器的示例。这个例子适用于 Delphi 5,但它可能是一个很好的起点。

    【讨论】:

    • 谢谢,我希望这能让我走上正轨,虽然内容很不完整。
    【解决方案3】:

    不可能完全按照你的描述。您不能在数据模块上放置像网格这样的可视化组件。你需要一个表格或框架。

    如果我要尝试像您所描述的那样,我会使用一个列表框来保存单个组件的列表、几个按钮和一个用于从列表中添加和删除组件的选择对话框,以及JVCL 中的 TJvInspector 组件,用于修改属性。这比尝试制作一个千篇一律的网格来处理这种情况要容易得多。

    【讨论】:

    • 我不是在考虑可视化组件,而是用 TDataModule 替换非可视化组件。我想我可以处理用户界面部分的问题,但我不知道如何将这些东西与 Delphi 集成,以便我可以在设计时创建 TMyOwnDataModule 并添加新组件。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2011-09-05
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多