首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

数据结构系统设计,该如何处理

2012-03-22 
数据结构系统设计小弟基于这样的设想:将页面控件的一些控件信息(如表单的大小,字体,颜色,按钮的位置呀)保

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

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

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


[解决办法]
1.控件ID+每1个属性就是一个字段

2.以文件形式保存,再保存文件在数据库中
[解决办法]
把所有参数的值取出来,组成一个字符串,各个值之间用一个特定的字符分隔,然后存入一个字段,另用一个字段来标明控件类型,这样节省空间,读取的时候按类型解释后面的值,你自己定义的当然没什么问题。
[解决办法]
最好还是做成文件,存进数据库里,为取用更加方便

热点排行