DFM:派生形式包含派生位图
DFM: Derived Form contains derived Bitmaps
使用C++生成器XE7
我有一个带有 TImageList 对象的基本表单
object FormBase: TFormBase
Left = 0
Top = 0
Caption = 'FormBase'
ClientHeight = 200
ClientWidth = 329
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object ImageList1: TImageList
Left = 32
Top = 24
Bitmap = {
494C010101007800180010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
snipped
00000000000000000000000000000000}
end
end
派生 TFormBase 我注意到 TImageList 的位图复制到派生形式:
inherited FormBase1: TFormBase1
Caption = 'FormBase1'
PixelsPerInch = 96
TextHeight = 13
inherited ImageList1: TImageList
Bitmap = {
494C010101007800180010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
snipped
00000000000000000000000000000000}
end
end
我现在的应用程序中有两个相同的图像列表吗?
这很有趣。
在运行时,每个TFormBase
只会分配一个TImageList
,因此在该级别,您只有一个TImageList
对象。
但是,基于这些 DFM,可执行文件 FILE 将包含位图数据的两个副本 - 一个用于TFormBase
,另一个用于TFormBase1
。这会使您的可执行文件更大(这很糟糕),并且会稍微减慢TFormBase1
的创建时间(因为位图数据加载两次)。我认为所有 DFM 资源都保留在内存中,因此它也使用了比必要更多的内存。
尝试手动编辑派生的 DFM 以删除bitmap={...}
部分,并查看可执行文件是否缩小(以及程序行为是否保持不变!
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- 链表包含 c++ 中不同的派生类对象
- 派生的 wxPanel 控件如何访问其中包含 wxDialog 中的数据?
- 派生自嵌套在类模板中的类模板,所有这些都包含在类模板中
- 如何从包含基类指针的容器中调用派生类函数(基于其类型)?
- 在C++中,为什么仅包含与其基类实例的联合的派生类占用的内存多于联合的大小?
- 如果我在不同的类中包含基类,是否也会包含该基类的派生类
- 如果派生类仅包含自动变量成员,是否有必要具有虚拟驱动器
- 在派生类的成员联合中包含继承的基类成员
- 无法返回包含派生指针的向量
- 类是否可以包含基类作为成员,该基类稍后专用于派生类
- 如果派生类包含其他方法和成员,则可以static_cast从基类到派生类
- 将共享的_ptr降低到包含feal_ptr C 11的派生类
- 派生自包含成员的类,其模板参数是基类
- 包含派生类型的指针的基类
- #包含从宏__file__派生的文件
- 如何制作一个既可以包含基类又可以包含派生类的列表
- 我需要制作一个包含基类和派生类的对象的向量,并知道哪个元素是哪个元素
- 派生类对象是否包含基类的私有成员?它在记忆中是什么样子的
- C++:向量可以<Base>包含派生类型的对象吗?