6

每隔一段时间,当我调整我的 TFrame 类(添加属性、方法等)时,IDE 就会感到困惑并表现得好像它认为框架是一个表单,包含标题/标题、边框等。然而,很明显该类被声明为 TFrame 后代。关于导致这种情况的原因,如何预防以及如何解决的任何想法?

我正在使用 Delphi 2007 Pro。另请注意(如果重要的话),TFrame 后代通常通过设计时包在 IDE 中注册(即在调色板上)。


后来:附加“细节”:我目前遇到这个问题的框架在视觉上是一个非常基本的 TFrame(从全新的 TFrame 改变的只是大小和背景颜色)。

这是它的类声明:

TBasePanel = class(TFrame)
  private
    FPanelManager: TPanelManager;
    procedure SetPanelManager(const Value: TPanelManager);
  protected
    procedure Connect; virtual; abstract;
    procedure Disconnect; virtual; abstract;
    procedure Refresh; virtual;
    procedure Requery; virtual; abstract;
  published
    property PanelManager: TPanelManager read FPanelManager write
        SetPanelManager;

这个框架被用作许多其他框架的基类。我通常直接从它所属的 BPL 项目编辑它(因为所有这些框架都安装到调色板),而不是作为 EXE 项目的一部分,打开相关的表单等。

此外,在“工具”->“选项”中选中“嵌入式设计器”。

我也将所有 DFM 文件保存为文本而不是二进制文件(如果这很重要的话)。

4

5 回答 5

8

我遇到了同样的问题。以下步骤为我们解决了问题,它也可能对您有用:

  1. 在 IDE 中:关闭所有使用框架的表单
  2. 打开框架,以文本形式查看 (*.dfm)
  3. dfm 可能以对象 MyFrame: TMyFrameClass 开头
  4. 将此更改为继承的 MyFrame: TMyFrameClass

我不知道是什么导致了问题。

于 2009-02-26T08:31:49.700 回答
1

也许您没有选中“嵌入式设计器”复选框?(工具 | 选项 | 环境选项 | VCL 设计器)。然后,实际上,您的框架在设计时显示为一种形式(带有标题、边框等)。您有问题的 TFrame 后代的具体代码或有关您的案例的更多详细信息也会有所帮助。

于 2009-02-26T08:10:36.600 回答
0

据我所知,编辑框架时,您必须在编辑器中打开表单和框架。否则可能会出现更新问题。虽然我没见过这个。

但是我很久以前就放弃了框架,因为我发现它们不太可靠。

现在我只将它们用于原型设计,创建自定义组件(派生自带有适当控件的面板)。

于 2009-02-26T07:52:01.353 回答
0

您可能必须将自定义模块注册到 IDE 但除非它们位于祖先类中,否则您的附加属性将无法正常工作。

于 2009-02-26T08:54:03.437 回答
0

我在使用 TFrame 时遇到了很多问题,最终找到了解决我所有问题的解决方法:我以视觉方式创建和设计框架,但只能通过手动编码来使用它们。

作为一个副作用,我的应用程序变得更小,因为更少的 dfm-s。

于 2009-12-19T12:59:56.143 回答