MSSQL教程之DataWindow Style帮你格局化数据窗口样...
对于update操作,只需要把event中的旧行和新行值对调即可。window|数据DataWindowStyle帮你格局化数据窗口款式
好人张,宣布工夫:2004-9-19
在利用DataWindow时,一般我们都是手工在数据窗口画板中来调剂数据窗口工具的款式(列宽、列高、题目、色彩等等)。可是在年夜型的使用中,常常会有浩瀚的数据窗口,而重复的手工往调剂这些数据窗口会给我们的开辟事情带来极年夜的方便,即便耐烦的一个一个地修正了数据窗口工具的款式,也不免不克不及做到准确的一致,如许即不切合功效复用的精力,也给体系的利用效果带来必定的影响。
为了很好的办理这一成绩,特提出了此办理计划,此计划是专门针对Grid范例的数据窗口的,在此基类中,经由过程代码遍历数据窗口的一切可视列,来改动列和列题目的款式,和改动具有下拉子数据窗口的列中的数据窗口的款式,从而到达格局化数据窗口款式的目标。
你能够在以下的图示中察看到这一功效的最后的效果:
.DataWindowStyle效果示例
完成机制:
1.起首要有一个数据窗口的基类,作为今后封装各种数据窗口相干的特性代码的容器。
2.一切要格局化的DWObject的属性均需设置为变量的情势,并为他们赋值。
3.经由过程Describe("DataWindow.Column.Count")函数来失掉数据窗口的列数,并遍历列,利用Modify("")函数来完成改动DWObject其相干的属性(比方:实行Modify("id_t.Font.Face=宋体")来改动id_t的字体)。
4.反复3的历程,但分歧的是,此次遍历的是子数据窗口的列,也就是DataWindowChild工具,注重:别健忘了先判别数据窗口是不是具有DataWindowChild,有的话记着先失掉他们。
5.也是最初一步,你是不是必要保留数据窗口的款式呢?(好比:坚持一样的列宽,下次再翻开此窗口时能够坚持与前次调剂的列宽一样。)这里只是做了一个提示,至于怎样详细完成,本例中不做申明了,也许今后有专门解说体系设置方面的专题中再加以申明吧。
次要代码完成:
1.变量的声明:
private:
integerii_style=1//默许款式
constantintegerSTYLE_DEFAULT=1
//STYLE_DEFAULT
constantstringcolheader_fontcolor_default="16777215"
constantstringcolheader_bgcolor_default="10040064"
constantstringcol_bgcolor_default="536870912~tif(mod(getrow(),2)=0,rgb(239,236,229),rgb(255,255,255))"
2.次要函数:
1)integerof_getchild(refdatawindowchildadwc[])
integeri,j,li_col_cnt
integerli_ret
stringls_col
datawindowchildldwc_child[]
li_col_cnt=integer(this.describe("DataWindow.Column.Count"))
ifli_col_cnt<1thenreturn-1
fori=1toli_col_cnt
ls_col=this.of_getcolumndisplayname(i)
li_ret=this.getchild(ls_col,ldwc_child)
ifli_ret=1then
j++
this.getchild(ls_col,adwc)
endif
next
returnj
2)stringof_getcolumndisplayname(integerai_colnumber)
stringls_colname
ls_colname=this.describe("#"+string(ai_colnumber)+".name")
ifls_colname=""orls_colname="!"then
return"!"
endif
returnof_getColumnDisplayName(ls_colname)
3)stringof_getcolumndisplayname(stringas_colname)
stringls_coldisplayname
ls_coldisplayname=this.describe(as_colname+".name")
returnls_coldisplayname
4)stringof_getheadername(stringas_column)
stringls_defaultheadersuffix="_t"
stringls_colhead
ls_colhead=as_column+ls_defaultheadersuffix
returnls_colhead
5)stringof_getheadertext(stringas_column)
stringls_defaultheadersuffix="_t"
stringls_colhead
ls_colhead=this.describe(as_column+ls_defaultheadersuffix+".Text")
ifls_colhead="!"then
//Novalidcolumnheader,usecolumnname.
ls_colhead=as_column
endif
returnls_colhead
6)integerof_setstyle(integerai_style)
integeri,j
integerli_column_cnt//列数
stringls_column_name//列名
stringls_column_width//列宽
stringls_child_column_name//子数据窗口列名
stringls_column_headername//列题目
stringls_colheader_fontcolor//列题目字体色彩
stringls_colheader_bgcolor//列题目背景色彩
stringls_col_bgcolor//列背景色彩
datawindowchildldwc_child[]//子数据窗口
choosecaseai_style
case1
ls_colheader_fontcolor=colheader_fontcolor_default
ls_colheader_bgcolor=colheader_bgcolor_default
ls_col_bgcolor=col_bgcolor_default
caseelse
ls_colheader_fontcolor=colheader_fontcolor_default
ls_colheader_bgcolor=colheader_bgcolor_default
ls_col_bgcolor=col_bgcolor_default
endchoose
//克制列挪动
this.modify("DataWindow.Grid.ColumnMove=No")
//克制鼠标全选择
this.modify("DataWindow.Selected.Mouse=No")
//调剂列和列题目
li_column_cnt=integer(this.describe("DataWindow.Column.Count"))
fori=1toli_column_cnt
//调剂列款式
ls_column_name=this.of_getcolumndisplayname(i)
this.modify(ls_column_name+".Font.Face=宋体")
this.modify(ls_column_name+".Font.Height=-9")
this.modify(ls_column_name+".Y=4")
this.modify(ls_column_name+".Height=56")
this.modify(ls_column_name+".Background.Mode=0")
this.Modify(ls_column_name+".Background.Color="+ls_col_bgcolor+"")
//调剂列题目款式
ls_column_headername=this.of_getheadername(ls_column_name)
this.modify(ls_column_headername+".Color="+ls_colheader_fontcolor+"")
this.modify(ls_column_headername+".Font.Face=Arial")
this.modify(ls_column_headername+".Font.Height=-9")
this.modify(ls_column_headername+".Y=0")
this.modify(ls_column_headername+".Height=68")
this.modify(ls_column_headername+".background.mode=0")
this.modify(ls_column_headername+".Background.Color="+ls_colheader_bgcolor+"")
next
//带区款式
this.modify("DataWindow.Header.Height=68")
this.modify("DataWindow.Detail.Height=68")
this.modify("DataWindow.Footer.Height=40")
//this.modify("DataWindow.Footer.Color="+ls_colheader_bgcolor+"")
//调剂datawindowchild款式
this.of_getchild(ldwc_child[])
fori=1toupperbound(ldwc_child)
ifisvalid(ldwc_child)then
ldwc_child.settransobject(sqlca)
//克制列挪动
ldwc_child.modify("DataWindow.Grid.ColumnMove=No")
//克制鼠标全选择
ldwc_child.modify("DataWindow.Selected.Mouse=No")
//调剂表头高度为0
ldwc_child.modify("DataWindow.Header.Height=0")
//调剂数据区高度
ldwc_child.modify("DataWindow.Detail.Height=68")
//datawindowchild的列数
li_column_cnt=integer(ldwc_child.describe("DataWindow.Column.Count"))
//调剂datawindowchild的列款式
forj=1toli_column_cnt
//调剂列款式
ls_child_column_name=ldwc_child.describe("#"+string(j)+".name")
ifls_child_column_name=""orls_child_column_name="!"then
ls_child_column_name=
else
ls_child_column_name=ldwc_child.describe(ls_child_column_name+".name")
endif
ldwc_child.modify(ls_child_column_name+".Font.Face=宋体")
ldwc_child.modify(ls_child_column_name+".Font.Height=-9")
ldwc_child.modify(ls_child_column_name+".Y=4")
ldwc_child.modify(ls_child_column_name+".Height=56")
ldwc_child.modify(ls_child_column_name+".Background.Mode=0")
ldwc_child.Modify(ls_child_column_name+".Background.Color="+ls_col_bgcolor+"")
next
endif
next
return1
至此,已为你具体先容了怎样完成使用代码来一致数据窗口款式的办法,你只必要到场到你的基类中便可,假如有任何疑问大概更好的办法,接待与我接洽!
InnoDB数据表的索引,与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。 财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的.. 每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
页:
[1]