【发布时间】:2010-11-09 22:12:54
【问题描述】:
我正在开发一组基于 TFrame 的组件,它们相互继承(正如许多在此过程中大力帮助我的人已经知道的那样!),并且正在遇到另一个小“ snag”,与软件包和安装有关。
我基本上有以下层次结构:
TFrame
TBaseFRame
TBaseSizeableFrame
TViewerType1
TViewerType2
...还有一个面板,TExtRzPanel,它继承自 Raize 面板,并为其添加了一些大小调整/移动功能,以及一些其他属性/功能。 TBaseSizeableFrame 使用这个组件,并将它的大部分功能传递给框架本身,因此我可以直观地开发复合 Viewer 组件。总体来说效果不错。
TFrame 后代都注册到调色板(请参阅 this post 我之前提出的相关问题)。目前,我有这样的包设置:
- MyPanels - 包含 TExtRzPanel
- BaseFrames - 包含 TBaseFrame 和 TBaseSizeableFrame
- ViewerSet1 - 包含一个基于 Viewer 框架的组件,以及一个以对话框形式调用该 Viewer 的非可视组件。 (我计划在这个包中也有一些其他的观众)。
导致我目前混乱的主要错误是这个:
无法访问包“MyPanels.bpl”的包信息
我现在对这件事感到头晕目眩,以至于我无法记住我尝试过的确切顺序和顺序,但是当我将对话框表单添加到 ViewerSet1 时,问题似乎就开始了,使用来自同一项目的 TViewer 框架,因此(当然)使用 TExtRzPanel(这是 IDE 抱怨的包)。
基于this,我已经删除了 DCP 文件(我认为在某些时候也删除了 DCU 文件),卸载了软件包,然后重新编译/重新安装了它们 MyPanels -> BaseFrames,并让它们全部正常工作点,但是在安装 ViewerSet1 后,整个事情又一次崩溃了。 我在尝试解决此问题的过程中注意到的其他错误包括:
- 无法安装包 C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\Bpl\MyPanels.bpl,因为它是使用不同版本的 Delphi 或 CBuilder 创建的。 你想在下次加载项目时尝试加载这个包吗?(注意:我只用一个版本的 Delphi -- Delphi 2007 构建了这个包)
- 在某一时刻,我注意到 MyPanels 的包描述没有“接受”(即它只显示为文件名是 Tools -> Compoenent -> Install Packages),这让我觉得 也许 IDE 正在查找/使用的文件有两个版本,但我没有看到/发现是这种情况。
- Delphi启动时的警告,提示无法加载已安装的包,下次是否要加载等。
- 无法访问包“MyPanels.bpl”的包信息(起泡、冲洗、重复)
任何和所有帮助/方向回复:如何诊断,以及任何可以帮助我理解甚至寻找什么的概念性解释,将不胜感激最。提前致谢。你们在这里帮了大忙!谢谢你。 :)
稍后更新:
把这个放在一边再回来,我尝试删除所有 DCP / DCU MyPanels 文件,然后逐步安装这三个包。 (VMWare 在这里值得一提——每次成功后的快照,这样如果/当出现问题时,就不必从底部重新开始)。事实证明,如果我从 ViewerSet1 包中删除了对话框表单,它就安装好了。如果我然后再次添加表单(它没有显示它的 DFM,就像我遇到 here),它似乎可以安装。我没有安装所有组件,并且似乎工作正常(并在我的 VM 中对整个事物进行快照!),但我仍然不确定出了什么问题,也不知道为什么。最初添加该表单会导致这些类型的错误吗?任何想法?
我认为,从长远来看,更好地解释/理解哪些事情会导致“无法访问包信息”错误会有所帮助。
【问题讨论】:
标签: delphi ide packages custom-component