时间: 2021-07-31 作者:daque
在运用datawindow时,常常咱们都是细工在数据窗口画板中来安排数据窗口东西的款式(列宽、列高、题目、脸色之类)。然而在巨型的运用中,常常会有稠密的数据窗口,而重复的细工去安排那些数据窗口会给咱们的开拓处事带来极大的未便,纵然细心的一个一个地窜改了数据窗口东西的款式,也不免不许做到透彻的一致,如许即不适合功效复用的精力,也给体例的运用功效带来确定的感化。 为了很好的处置这一题目,特提出了此处置计划,此计划是特意对准grid典型的数据窗口的,在此基类中,经过代码遍历数据窗口的一切可视列,来变换列以及列题目的款式,以及变换具有下拉子数据窗口的列中的数据窗口的款式,进而到达方法化数据窗口款式的手段。 你不妨在以次的图示中查看到这一功效的最后功效:
图1.datawindow style功效示例 实行体制: 1.开始要有一个数据窗口的基类,动作此后封装各类数据窗口关系的特性代码的容器。 2.一切要方法化的dwobject的属性均需树立为变量的情势,并为她们赋值。 3.经过describe("datawindow.column.count") 因变量来获得数据窗口的列数,并遍历列,运用modify(" ")因变量来实行变换dwobject其关系的属性(比方:实行modify( "id_t .font.face=’宋体’" )来变换id_t的字体 )。 4.反复3的进程,但各别的是,这次遍历的是子数据窗口的列,也即是datawindowchild东西,提防:别忘怀了先确定数据窗口能否具有datawindowchild,有的话记取先获得她们。 5.也是结果一步,你能否须要生存数据窗口的款式呢?( 比方:维持同样的列宽,下次再翻开此窗口时不妨维持与上回安排的列宽一律。) 这边不过做了一个指示,至于怎样简直实行,本例中不做说领会,大概此后有特意解说体例摆设上面的专题中再加以证明吧。 重要代码实行: 1.变量的证明: private: integer ii_style = 1 //默许款式 constant integer style_default = 1 //style_default constant string colheader_fontcolor_default = "16777215" constant string colheader_bgcolor_default = "10040064" constant string col_bgcolor_default= "536870912~tif(mod(getrow(),2)=0,rgb(239,236,229),rgb(255,255,255))" 2.重要因变量: 1) integer of_getchild(ref datawindowchild adwc[]) integer i, j, li_col_cnt integer li_ret string ls_col datawindowchild ldwc_child[] li_col_cnt = integer( this.describe( "datawindow.column.count" ) ) if li_col_cnt < 1 then return -1 for i = 1 to li_col_cnt ls_col = this.of_getcolumndisplayname( i ) li_ret = this.getchild( ls_col, ldwc_child[i] ) if li_ret = 1 then j++ this.getchild( ls_col, adwc[j] ) end if next return j 2) string of_getcolumndisplayname(integer ai_colnumber) string ls_colname ls_colname = this.describe ("#" + string (ai_colnumber) + ".name") if ls_colname = " " or ls_colname = "!" then return "!" end if return of_getcolumndisplayname (ls_colname) 3) string of_getcolumndisplayname(string as_colname) string ls_coldisplayname ls_coldisplayname = this.describe (as_colname + ".name") return ls_coldisplayname 4) string of_getheadername(string as_column) string ls_defaultheadersuffix = "_t" string ls_colhead ls_colhead = as_column + ls_defaultheadersuffix return ls_colhead 5) string of_getheadertext(string as_column) string ls_defaultheadersuffix = "_t" string ls_colhead ls_colhead = this.describe ( as_column + ls_defaultheadersuffix + ".text" ) if ls_colhead = "!" then //no valid column header, use column name. ls_colhead = as_column end if return ls_colhead 6) integer of_setstyle(integer ai_style) integer i, j integer li_column_cnt //列数 string ls_column_name //列名 string ls_column_width //列宽 string ls_child_column_name //子数据窗口列名 string ls_column_headername //列题目 string ls_colheader_fontcolor //列题目字体脸色 string ls_colheader_bgcolor //列题目后台脸色 string ls_col_bgcolor //列后台脸色 datawindowchild ldwc_child[] //子数据窗口 choose case ai_style case 1 ls_colheader_fontcolor = colheader_fontcolor_default ls_colheader_bgcolor = colheader_bgcolor_default ls_col_bgcolor = col_bgcolor_default case else ls_colheader_fontcolor = colheader_fontcolor_default ls_colheader_bgcolor = colheader_bgcolor_default ls_col_bgcolor = col_bgcolor_default end choose //遏止列挪动 this.modify("datawindow.grid.columnmove=no") //遏止鼠标全采用 this.modify("datawindow.selected.mouse=no") //安排列以及列题目 li_column_cnt = integer( this.describe("datawindow.column.count") ) for i = 1 to li_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[] ) for i = 1 to upperbound( ldwc_child ) if isvalid( ldwc_child[i] ) then ldwc_child[i].settransobject( sqlca ) //遏止列挪动 ldwc_child[i].modify("datawindow.grid.columnmove=no") //遏止鼠标全采用 ldwc_child[i].modify("datawindow.selected.mouse=no") //安排表头莫大为0 ldwc_child[i].modify("datawindow.header.height=’0’") //安排数据区莫大 ldwc_child[i].modify("datawindow.detail.height=’68’") //datawindowchild的列数 li_column_cnt = integer( ldwc_child[1].describe("datawindow.column.count") ) //安排datawindowchild的列款式 for j = 1 to li_column_cnt //安排列款式 ls_child_column_name = ldwc_child[i].describe ("#" + string (j) + ".name") if ls_child_column_name = " " or ls_child_column_name = "!" then ls_child_column_name = ’’ else ls_child_column_name = ldwc_child[i].describe ( ls_child_column_name + ".name" ) end if ldwc_child[i].modify( ls_child_column_name + ".font.face=’宋体’" ) ldwc_child[i].modify( ls_child_column_name + ".font.height=’-9’" ) ldwc_child[i].modify( ls_child_column_name + ".y=’4’" ) ldwc_child[i].modify( ls_child_column_name + ".height=’56’") ldwc_child[i].modify( ls_child_column_name + ".background.mode=’0’" ) ldwc_child[i].modify( ls_child_column_name + ".background.color=’" + ls_col_bgcolor + "’" ) next end if next return 1