Welcome

首页 / 软件开发 / Delphi / 在Delphi中巧改窗体文件实现控件数组

在Delphi中巧改窗体文件实现控件数组2008-04-20delphi 开发的应用中,每一个窗体都有一个对应的窗体文件(.dfm),用来记录该窗体的属性以及窗体上所有控件的属性,以便在窗体关闭后能准确地重新生成窗体。几乎所有的DELPHI参考书都没有提到过该文件的具体情况,偶尔提到,也都泛泛而谈,因为窗体文件是二进制文件,只有在DELPHI提供的编辑环境中才能看到它的本来面目,对其进行操作可能会出现不可预知的错误;而且在大多数情况下,确实没有修改的必要。而本文谈到的和窗体文件密切相关。

要利用窗体文件,首先必须了解该类型文件的结构。窗体文件的结构很简单,朋友们可以生成一个窗体,随便放上一些控件,存盘后打开Unit1.dfm文件,就可以看到窗体文件是由关键字"object"和"end"构成的代码段,基本结构如下:

object 控件名 :类名
属性1 =属性值
属性2 =属性值

end

并且支持嵌套。Delphi在记录控件属性时,只记录修改过的属性,举一个例子,比如对一个标签控件(label1)的缺省描述如下:

object Label1: TLabel
Left = 256
Top = 80
Width = 32
Height = 13
Caption = Label1
End

记录的五个属性都是随开发者拖放的位置和顺序不同而变化的,其它属性由于没有修改过,都是缺省值,所以不必记录。

窗体文件是有序的,它的有序性表现如下:

object 窗体名:Tform
窗体属性1=属性值
窗体属性2=属性值
。。。 。。。
// 以下是TgraphControl类型的控件
object 控件名:类名
控件属性1=属性值
控件属性2=属性值
。。。 。。。
end
object 控件名:类名
控件属性1=属性值
控件属性2=属性值
。。。 。。。
end
。。。 。。。
// 以下是TwinControl类型的控件
object 控件名:类名
控件属性1=属性值
控件属性2=属性值
。。。 。。。
end
object 控件名:类名
控件属性1=属性值
控件属性2=属性值
。。。 。。。
end
。。。 。。。
// 以下是其它类型的控件
object 控件名:类名
控件属性1=属性值
控件属性2=属性值
。。。 。。。
end
。。。 。。。
end