数据结构系统设计

hrdzkj 2012-03-19 05:25:42
小弟基于这样的设想:将页面控件的一些控件信息(如表单的大小,字体,颜色,按钮的位置呀)保存到数据库里面。这样客户端程序可以用任何语言来开发,只要从数据库中检索出控件属性值,生成控件即可。现在这个表单设计器已经设计出来了,(下面附有设计出来的表单文本结构例子)
小弟现在遇到的问题是:为了减少数据库的冗余,小弟想把这些控件的属性值序列化保存成一个字段。那么应该用怎么样的数据结构来描述这些控件信息呢?

附上一个设计的表单结构(最多嵌套三层):

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
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrdzkj 2012-03-20
  • 打赏
  • 举报
回复
控件之间的嵌套关系,应该怎么样表示呢?
xyxhz 2012-03-19
  • 打赏
  • 举报
回复
最好还是做成文件,存进数据库里,为取用更加方便
xor163 2012-03-19
  • 打赏
  • 举报
回复
把所有参数的值取出来,组成一个字符串,各个值之间用一个特定的字符分隔,然后存入一个字段,另用一个字段来标明控件类型,这样节省空间,读取的时候按类型解释后面的值,你自己定义的当然没什么问题。
kaikai_kk 2012-03-19
  • 打赏
  • 举报
回复
1.控件ID+每1个属性就是一个字段

2.以文件形式保存,再保存文件在数据库中

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧