我正在开发一个IDE注册组件的程序包,其中大多数是从基本TFrame类派生的。包中还包括这些组件调用的各种自定义对话框形式。我在Delphi 2007中工作。
我注意到,有时通常具有关联的DFM文件的框架单元和形式单元并不总是在其下方显示DFM文件(可通过小[+]树视图节点扩展器访问)。例如,如果我添加一个现有的基于表单的PAS文件,例如,通过右键单击BPL项目(在“项目管理器”中)->“添加”,它不会在清单中显示DFM文件。
但是,如果我添加了新项,并在项目中创建了一个新的表单或框架单元,它将在项目管理器中显示为典型的嵌套两文件项目。如果我将现有表单从项目组中的另一个项目拖到该BPL项目中,它也显示了这种方式。
似乎这样应该是一致的,并且我更喜欢两个文件显示单位是框架还是表格。
这是否表明项目文件有问题?我是否将现有的表单/框架错误地添加到此软件包中?如果是这样,我应该如何添加现有的表单/框架单位,以便两个文件都显示在项目管理器列表中?
*更新*
根据以下Alen的建议:
我尝试将{$ R * .dfm}指令添加到表单的单位,并且在将其添加到BPL包/项目中时并没有强制DFM文件显示。将{$ R * .dfm}添加到项目文件本身(我不认为这是您的意思,但是我想我会尝试的)也不起作用。此技术仅适用于EXE项目吗?
可能(可能)相关,尝试在该位置使用该指令进行构建会给我以下信息:
[DCC错误] E2161警告:重复的资源:类型10(RCDATA),ID TTESTTREEVIEW;保留文件E:\ Projects \ MyApp \ Components \ TTestTreeViewFrame.dfm资源;文件
E:\ Projects \ MyApp \ Components \ TTestTreeViewFrame.dfm资源已丢弃。
“保留”和“丢弃”同一文件?
以后:看起来此“重复资源”问题可能与
this。不确定,但至少在一次实例中,两者同时发生。
最佳答案
Vegar处在正确的轨道上。为了使项目经理显示.dfm节点,需要知道表单/框架/数据模块与pas文件相关联。它会查看.dpk或.dpr文件中的{Form1}注释以获取此信息。如果在向项目添加文件时,IDE无法识别与之关联的.dfm,请确保该.pas文件具有明确的{$ R * .dfm}指令。这样一来,我不应该被埋在IFDEF中,或者被文件中的潜在语法错误所掩盖。 IDE使用此伪指令的存在来决定是否应尝试在设计器中打开.dfm。
IDE不仅认为如果存在Unit1.pas和Unit1.dfm,那么它们确实应该在一起。考虑您创建了一个新的表单单位,并将其称为Unit1。现在,您只删除了Unit1.pas,然后继续创建了一个新单元,并将其命名为Unit1.pas。磁盘上没有来自这个新的,具有相同基础名称的Unit1.pas的旧的,过时的Unit1.dfm。如果IDE仅盲目地打开该.dfm,那将是很奇怪和令人困惑的。