我正在开发一个 IDE 注册组件包,其中大部分都派生自 TFrame 基类。包中还包含这些组件调用的各种自定义对话框表单。我在 Delphi 2007 工作。
我注意到,有时框架和表单单元(通常具有关联的 DFM 文件)并不总是在其下方“下方”显示 DFM 文件(可通过小 [+] 树视图节点扩展器访问)。例如,如果我添加现有的基于表单的 PAS 文件,通过右键单击 BPL 项目(在项目管理器中)-> 添加,它不会在列表中显示 DFM 文件。
但是,如果我添加新项并在项目中创建新的表单或框架单元,它将在项目管理器中显示为典型的嵌套两个文件项。如果我将现有表单从项目组中的另一个项目拖动到相关 BPL 项目,它也会显示这种方式。
看起来这应该是一致的,我更喜欢在单位是框架或表单时显示两个文件。
这是否表明项目文件中有问题?我是否错误地将现有表单/框架添加到此包中?如果是这样,我应该如何添加现有的表单/框架单元,以便这两个文件都显示在项目管理器列表中?
* 更新 *
根据艾伦的以下建议:
我尝试将 {$R *.dfm} 指令添加到表单的单元中,并且在将 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 https://stackoverflow.com/questions/589523/delphi-ide-treating-tframe-as-if-it-were-a-form。不确定,但至少在一个例子中两者同时发生。
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,那将会很奇怪且令人困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)