DFM:派生形式包含派生位图
DFM: Derived Form contains derived Bitmaps
使用 C++ Builder 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,您的可执行文件将包含位图数据的两份副本 - 一份用于 TFormBase
,另一份用于 TFormBase1
。这会使您的可执行文件更大(这是不好的)并且会稍微减慢 TFormBase1
的创建时间(因为位图数据被加载两次)。我认为所有 DFM 资源都保留在内存中,因此它也使用了比必要更多的内存。
尝试手动编辑派生的 DFM 以删除 bitmap={...}
部分,并查看可执行文件是否缩小(以及程序行为是否保持不变!)。
使用 C++ Builder 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,您的可执行文件将包含位图数据的两份副本 - 一份用于 TFormBase
,另一份用于 TFormBase1
。这会使您的可执行文件更大(这是不好的)并且会稍微减慢 TFormBase1
的创建时间(因为位图数据被加载两次)。我认为所有 DFM 资源都保留在内存中,因此它也使用了比必要更多的内存。
尝试手动编辑派生的 DFM 以删除 bitmap={...}
部分,并查看可执行文件是否缩小(以及程序行为是否保持不变!)。