2009-02-25 59 views
2

我正在开发一个IDE注册组件包,其中大部分都是从基本TFrame类派生的。还有各种自定义对话框形式,这些组件都包含在这个包中。我在德尔福2007工作。向包中添加表单和框架

我注意到,有时框架和表单单元,通常有一个相关的DFM文件,并不总是显示DFM文件“底下”(可通过​​小[+] treeview访问节点扩展器)。如果我添加一个现有的基于表单的PAS文件,例如,通过右键单击BPL项目(在项目管理器中) - >添加,它不会在列表中显示DFM文件。

但是,如果我添加新建,并在项目中创建新的窗体或框架单元,它将显示为项目管理器中典型的嵌套双文件项目。如果我将项目组中的另一个项目的现有表单拖动到此BPL项目中,也会显示这种方式。

看起来像这样应该是一致的,我更喜欢这两个文件显示何时单位是一个框架或表单。

这是否表示项目文件中出现错误?我是否错误地将现有的表格/框架添加到这个包中?如果是这样,我应该如何添加现有的表格/框架单位,以便这两个文件显示在项目经理列表中?

* UPDATE *

从下面阿伦的建议:

我尝试添加{$ R * .DFM}指令形式的单位,并没有强制DFM文件现身当它添加到我的BPL包/项目。将{$ R * .dfm}添加到项目文件本身(我不认为是你的意思,但我认为我会尝试它)也不起作用。这种技术仅适用于EXE项目吗?

可能(可能)有关,试图建立与地方该指令使我这个:

[DCC错误] E2161警告:重复的资源:类型10(RCDATA),ID TTESTTREEVIEW;保留文件E:\ Projects \ MyApp \ Components \ TTestTreeViewFrame.dfm资源;文件 E:\ Projects \ MyApp \ Components \ TTestTreeViewFrame.dfm资源被丢弃。

“Keping”和“discarding”相同的文件?


后来:它看起来像这样“重复的资源”的问题可能与 this。不确定,但至少有一次同时发生。

+0

我试过艾伦Bauers/Vegars自己的建议于2006年涡轮德尔福,和它的作品。您必须在包含部分中的行后添加{Form#}。在关闭您的bpl并重新打开后,.dfm会显示在Package Manager中。 – 2009-02-26 19:30:49

回答

6

Vegar是在正确的轨道上。为了让项目经理显示.dfm节点,它需要知道表单/框架/数据模块与pas文件相关联。它查看.dpk或.dpk中的{Form1}注释。这个信息的dpr文件。如果将一个文件添加到项目时,在IDE不承认有与它关联的.DFM,确保.PAS文件在明确{$ R * .DFM}指令。由此,我不应该被埋在IFDEF中,或者被文件中潜在的语法错误所掩盖。 IDE使用这个指令来决定它是否应该尝试在设计器中打开.dfm。

IDE不只是想当然地认为,如果有一个Unit1.pas和Unit1.dfm,他们真的应该在一起。考虑你创建了一个新的表单元,它被称为Unit1。现在,您只删除了Unit1.pas,然后创建了一个名为Unit1.pas的新单元。有一个从这个新的,相同的碱基命名,Unit1.pas到老,陈旧Unit1.dfm没有提到那里的磁盘上。如果IDE只是盲目地打开.dfm,那将会很奇怪和令人困惑。

+0

艾伦 - 很高兴在这里见到你和尼克。感谢您的建议和澄清。我尝试过,但遇到问题(请参阅上面的更新)。 – Jamo 2009-02-26 03:26:42

2

如果你看一看项目源的包,你会发现差异导致的在包含节:

contains 
    Unit2 in 'unit2.pas', 
    Unit1 in 'Unit1.pas' {Form1}; 

UNIT2将显示为一个单元,而1单元将显示为一个单元用表格。 正如你所看到的,unit1有一个单元2缺少的{Form1}注释。

我不知道是否可以添加现有设备,以便自动生成该评论。

+0

有用!!谢谢。 :) – Jamo 2009-02-26 03:29:26

0

的另一个原因是其他任何人是寻找另一种解决方案是,当你重命名文件PAS关闭所有文件,然后重新打开。以前的版本将重新&必须原名除去添加到项目