数据结构系统设计
小弟基于这样的设想:将页面控件的一些控件信息(如表单的大小,字体,颜色,按钮的位置呀)保存到数据库里面。这样客户端程序可以用任何语言来开发,只要从数据库中检索出控件属性值,生成控件即可。现在这个表单设计器已经设计出来了,(下面附有设计出来的表单文本结构例子)
小弟现在遇到的问题是:为了减少数据库的冗余,小弟想把这些控件的属性值序列化保存成一个字段。那么应该用怎么样的数据结构来描述这些控件信息呢?
附上一个设计的表单结构(最多嵌套三层):
object CardFrm_1: TCardFrm
Left = 0
Top = 0
Align = alClient
ClientHeight = 415
ClientWidth = 709
Color = clBtnFace
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = #23435#20307
Font.Style = []
OldCreateOrder = False
Visible = True
Pfrm = PCard.Owner
IsControl = True
object RzPageControl1: TRzPageControl
Left = 0
Top = 0
Width = 521
Height = 273
ActivePage = TabSheet1
BackgroundColor = clInactiveCaptionText
BoldCurrentTab = True
UseColoredTabs = True
ParentBackgroundColor = False
ParentColor = False
TabIndex = 0
TabOrder = 0
FixedDimension = 18
object TabSheet1: TRzTabSheet
Color = 16119285
Caption = #36164#26009#21345#29255
object fcLabel1: TfcLabel
Left = 263
Top = 77
Width = 49
Height = 12
Caption = #20215#26684#21517#31216
TextOptions.Alignment = taLeftJustify
TextOptions.VAlignment = vaTop
end
object fcLabel2: TfcLabel
Left = 29
Top = 78
Width = 49
Height = 12
Caption = #20215#26684#32534#21495
TextOptions.Alignment = taLeftJustify
TextOptions.VAlignment = vaTop
end
object fcLabel3: TfcLabel
Left = 29
Top = 132
Width = 43
Height = 12
Caption = #22791' '#27880
TextOptions.Alignment = taLeftJustify
TextOptions.VAlignment = vaTop
end
object fcLabel4: TfcLabel
Left = 29
Top = 104
Width = 61
Height = 12
Caption = #35199#25991#23383#27573#21517
TextOptions.Alignment = taLeftJustify
TextOptions.VAlignment = vaTop
end
object CrDBEdit1: TCrDBEdit
Left = 100
Top = 74
Width = 121
Height = 20
HelpType = htKeyword
HelpKeyword = 'N'
DataSource = DataSource1
DataField = 'jgbh'
TabOnEnter = True
TabOrder = 1
ButtonVisible = False
DataType = #23383#31526
Fldchina = #20215#26684#32534#21495
DataSize = 11
DataFdec = 0
Fieldname = 'bh'
Isnull = True
IsModi = True
Encrypt = False
end
object CrDBEdit2: TCrDBEdit
Left = 332
Top = 74
Width = 135
Height = 20
HelpType = htKeyword
HelpKeyword = 'N'
DataSource = DataSource1
DataField = 'jgmch'
TabOnEnter = True
TabOrder = 2
ButtonVisible = False
DataType = #23383#31526
Fldchina = #20215#26684#21517#31216
DataSize = 20
DataFdec = 0
Fieldname = 'mch'
Isnull = True
IsModi = True
Encrypt = False
end
object CrDBEdit3: TCrDBEdit
Left = 98
Top = 127
Width = 371
Height = 20
HelpType = htKeyword
HelpKeyword = 'N'
DataSource = DataSource1
DataField = 'beizhu'
TabOnEnter = True
TabOrder = 4
ButtonVisible = False
DataType = #23383#31526
Fldchina = #22791#27880
DataSize = 40
DataFdec = 0
Fieldname = 'bzh'
Isnull = False
IsModi = True
Encrypt = False
end
object CrDBEdit4: TCrDBEdit
Left = 99
Top = 101
Width = 121
Height = 20
HelpType = htKeyword
HelpKeyword = 'N'
DataSource = DataSource1
DataField = 'fdname'
TabOnEnter = True
TabOrder = 3
ButtonVisible = False
DataType = #23383#31526
Fldchina = #35199#25991#23383#27573#21517
DataSize = 20
DataFdec = 0
Fieldname = 'fdname'
Isnull = True
IsModi = True
Encrypt = False
end
object CrDBCheckBox1: TCrDBCheckBox
Left = 97
Top = 35
Width = 125
Height = 17
HelpType = htKeyword
HelpKeyword = 'N'
DataField = 'beactive'
DataSource = DataSource1
ValueChecked = #26159
ValueUnchecked = #21542
Caption = #20215#26684#31867#22411#26159#21542#21487#29992
TabOnEnter = True
TabOrder = 0
DataSize = 2
Fieldname = 'beactive'
Isnull = True
TmpText = #26159
IsModi = False
end
object CrDBEdit5: TCrDBEdit
Left = 367
Top = 35
Width = 121
Height = 20
TabOnEnter = True
TabOrder = 5
DataType = #23383#31526
Fldchina = #32534#36753#26694
DataSize = 0
DataFdec = 0
Isnull = False
IsModi = True
Encrypt = False
end
end
end
object DataSource1: TDataSource
Left = 49
Top = 43
end
object LMDStrList1: TLMDStrList
Items.Strings = ( '0')
Sorted = False
Duplicates = dupAccept
Left = 145
Top = 91
end
end