dw1.modify(modstring)
//功能:使用字符串中定义的操作修改数据窗口控件 其中:modstring:string类型,其值定义修改数据窗口的各种操作。
返回值:string .成功时返回空字符串(“”),发生错误时返回一条出错消息。形式:"line n column n incorrect syntax"(指明哪行哪列错了)
可以应用于:a.修改数据窗口中各种对象的颜色、标题、文本等。
b.修改数据窗口中不同表的更新状态,以便让应用程序一次可以更新多个表
c.修改数据窗口对象中sql select语句中的where子句
d.改变retrieve only as needed(按需检索数据)状态(对应于数据窗口对象的retrieve.asneeded属性,modity()中引用该函数为:object.datawindow.retrieve.asneeded)
e.改变数据窗口对象的数据源
f.控制打印预览显示模式。
g.在数据窗口对象中增加和删除对象
modify()函数中使用的表达式:当为数据窗口对象的某个属性指定一个表达式时,其表达式的格式格式:defaultvalue~tDataWindowpainterexpression 其中datawindowpainterexpression是数据窗口画笔表达式。
如:modstring="empid.color='16777215~tIF(emp_status=~~'A~~',255,16777215)'" dw1.modify(modstring) //对于empid列来说,当emp_status列的值为A时,empid列的数据显示为红色,否则为白色。
如:rtn=dw_1.modify("emid.font.italic=0 oval_1.backgroud.mode=0 oval_1.backgroup.color=255") //一次修改了多个对象的属性
如:dw1.modify("objectname.backgroup.mode='<0,1>'") dw1.modify("objectname.backgroup.color='long'") //要将背景高为不透明(opaque)才能看到背景颜色。
如:dw1.modify("depid.color='0~t"+"if(depid=200,65380,if(dipid=100,255,0))"') //当depid=200时,其值显示为绿色,等于100时为红色,其它值为黑色。
如:string mod_string,err long color1,clor2,color3,default_color
err=dw1.modify("salary.backgroup.mode=0")
if err<>"" then return
/下面是构造modstring,如果salary<10000,则其背景高为红色; 20000<如果>=10000 设为蓝色,30000<如果>20000 设为绿色;其它为的白色。
color1=255 //红色 color2=16711680 //蓝色 color3=65280 //绿色 default_color=1677215//白色
modstring="salary.backgroup.color="'+string(default_color)+"~tIF(salary<10000,"+string(color1)+",if(salary<20000,"+string(color2)+",if(salary<30000,"+string(color3)+","string(default_color)+")))'"
err=dw1.modify(modstring)
if err<>"" then
messagebox("tip",出错位置为:"+err)
return
end if
如:dw1.modify("dep_t.text='部门'") //把dw1中文本对象dep_t的标题改为”部门“
如:dw1.modify("dep_t.text='无~t"+"if(depid>201,~'营销部~',~'财务部~')'") //如果depid>201其标题为”营销部“,否则为”财务部“)
如: original_select=dw1.describe("datawindow.table.select")
mod_string="datawindow.table.select="'+original_select+where_clause+""'
rc=dw1.modify(mod_string)
if rc="" then
dw1.retrieve()
else
messagebox("tip","this error is"+rc)
end if
如:string rc,mod_string,name_str="张飞" integer dept_num=100
dw1.modify("datawindow.table.select="") //去掉数据窗口中的Select语句
mod_string="datawindow.table.procedure='1 execute dbo.emp_arg2;1@dept_id_arg=:num_arg1,@lname_arg=:str_arg1"' //将数据窗口的procedure属性设置为所需的存储过程
rc=dw1.modify(mod_string)
if rc="" then
dw1.retrive(dept_num,name_str)
else
messagebox("tip","fail is "+rc)
end if //
如:dw1.modify("destroy logo") //删除dw1中的位图logo
如:dw1.modify("destroy column salary") //删除数据窗口dw1中的列对象salary,同时从缓冲区中删除该列的数据(这是column的作用)
如:modstring='create bitmap(band=footer x="37" y="12' height="101" width="1509" filename="c:\p1.bmp" border="0" name=bmp1)'
dw1.modify(modstring) //在数据窗口dw1的第一个分组的组标题同区增加一个名为p1位图对象。
************************
1、改变detail区的高度:dw_1.Modify("DataWindow.detail.Height=200")
2、对标题栏文本的更改(文本名为dept_name_t):dw_1.modify("dept_name_t.text = '单位名称'")
3、增加计算域:假设一grid型的数据窗口,其中有个字段为部门号dept_id,我们要增加一个统计部门数的计算域count(dept_id for all):
string ls_modrow
dw_1.Modify("DataWindow.summary.Height=64")
ls_modrow = 'Create compute(band=summary font.charset="0" font.face="MS Sans Serif" font.family="2" font.height="-8" font.pitch="2" font.weight="400" background.mode="1" background.color="536870912" color="0" x="9" y="4" height="52" width="297" format="[general]" expression="count(dept_id for all)" alignment="1" border="0" crosstab.repeat=no )~r~n'
dw_1.modify( ls_modrow )
4、以下程序段让grid数据窗口中网格线不见,并在detail区增加加一条线
string ls_line
DW_1.Modify("DataWindow.Grid.Lines='1' ")
dw_1.Modify("DataWindow.detail.Height=332")
ls_line = 'Create line(band=detail background.mode="2" background.color="16777215" pen.style="0" pen.width="5" pen.color="0" x1="37" y1="320" x2="1458" y2="316" )~r~n'
dw_1.modify( ls_line )
象这种数据窗口动态增加控件的方法,也可以先在数据窗口画板中手工加上去,倒成sytnax后,查看其语法,再反写回去即可。
//功能:使用字符串中定义的操作修改数据窗口控件 其中:modstring:string类型,其值定义修改数据窗口的各种操作。
返回值:string .成功时返回空字符串(“”),发生错误时返回一条出错消息。形式:"line n column n incorrect syntax"(指明哪行哪列错了)
可以应用于:a.修改数据窗口中各种对象的颜色、标题、文本等。
b.修改数据窗口中不同表的更新状态,以便让应用程序一次可以更新多个表
c.修改数据窗口对象中sql select语句中的where子句
d.改变retrieve only as needed(按需检索数据)状态(对应于数据窗口对象的retrieve.asneeded属性,modity()中引用该函数为:object.datawindow.retrieve.asneeded)
e.改变数据窗口对象的数据源
f.控制打印预览显示模式。
g.在数据窗口对象中增加和删除对象
modify()函数中使用的表达式:当为数据窗口对象的某个属性指定一个表达式时,其表达式的格式格式:defaultvalue~tDataWindowpainterexpression 其中datawindowpainterexpression是数据窗口画笔表达式。
如:modstring="empid.color='16777215~tIF(emp_status=~~'A~~',255,16777215)'" dw1.modify(modstring) //对于empid列来说,当emp_status列的值为A时,empid列的数据显示为红色,否则为白色。
如:rtn=dw_1.modify("emid.font.italic=0 oval_1.backgroud.mode=0 oval_1.backgroup.color=255") //一次修改了多个对象的属性
如:dw1.modify("objectname.backgroup.mode='<0,1>'") dw1.modify("objectname.backgroup.color='long'") //要将背景高为不透明(opaque)才能看到背景颜色。
如:dw1.modify("depid.color='0~t"+"if(depid=200,65380,if(dipid=100,255,0))"') //当depid=200时,其值显示为绿色,等于100时为红色,其它值为黑色。
如:string mod_string,err long color1,clor2,color3,default_color
err=dw1.modify("salary.backgroup.mode=0")
if err<>"" then return
/下面是构造modstring,如果salary<10000,则其背景高为红色; 20000<如果>=10000 设为蓝色,30000<如果>20000 设为绿色;其它为的白色。
color1=255 //红色 color2=16711680 //蓝色 color3=65280 //绿色 default_color=1677215//白色
modstring="salary.backgroup.color="'+string(default_color)+"~tIF(salary<10000,"+string(color1)+",if(salary<20000,"+string(color2)+",if(salary<30000,"+string(color3)+","string(default_color)+")))'"
err=dw1.modify(modstring)
if err<>"" then
messagebox("tip",出错位置为:"+err)
return
end if
如:dw1.modify("dep_t.text='部门'") //把dw1中文本对象dep_t的标题改为”部门“
如:dw1.modify("dep_t.text='无~t"+"if(depid>201,~'营销部~',~'财务部~')'") //如果depid>201其标题为”营销部“,否则为”财务部“)
如: original_select=dw1.describe("datawindow.table.select")
mod_string="datawindow.table.select="'+original_select+where_clause+""'
rc=dw1.modify(mod_string)
if rc="" then
dw1.retrieve()
else
messagebox("tip","this error is"+rc)
end if
如:string rc,mod_string,name_str="张飞" integer dept_num=100
dw1.modify("datawindow.table.select="") //去掉数据窗口中的Select语句
mod_string="datawindow.table.procedure='1 execute dbo.emp_arg2;1@dept_id_arg=:num_arg1,@lname_arg=:str_arg1"' //将数据窗口的procedure属性设置为所需的存储过程
rc=dw1.modify(mod_string)
if rc="" then
dw1.retrive(dept_num,name_str)
else
messagebox("tip","fail is "+rc)
end if //
如:dw1.modify("destroy logo") //删除dw1中的位图logo
如:dw1.modify("destroy column salary") //删除数据窗口dw1中的列对象salary,同时从缓冲区中删除该列的数据(这是column的作用)
如:modstring='create bitmap(band=footer x="37" y="12' height="101" width="1509" filename="c:\p1.bmp" border="0" name=bmp1)'
dw1.modify(modstring) //在数据窗口dw1的第一个分组的组标题同区增加一个名为p1位图对象。
************************
1、改变detail区的高度:dw_1.Modify("DataWindow.detail.Height=200")
2、对标题栏文本的更改(文本名为dept_name_t):dw_1.modify("dept_name_t.text = '单位名称'")
3、增加计算域:假设一grid型的数据窗口,其中有个字段为部门号dept_id,我们要增加一个统计部门数的计算域count(dept_id for all):
string ls_modrow
dw_1.Modify("DataWindow.summary.Height=64")
ls_modrow = 'Create compute(band=summary font.charset="0" font.face="MS Sans Serif" font.family="2" font.height="-8" font.pitch="2" font.weight="400" background.mode="1" background.color="536870912" color="0" x="9" y="4" height="52" width="297" format="[general]" expression="count(dept_id for all)" alignment="1" border="0" crosstab.repeat=no )~r~n'
dw_1.modify( ls_modrow )
4、以下程序段让grid数据窗口中网格线不见,并在detail区增加加一条线
string ls_line
DW_1.Modify("DataWindow.Grid.Lines='1' ")
dw_1.Modify("DataWindow.detail.Height=332")
ls_line = 'Create line(band=detail background.mode="2" background.color="16777215" pen.style="0" pen.width="5" pen.color="0" x1="37" y1="320" x2="1458" y2="316" )~r~n'
dw_1.modify( ls_line )
象这种数据窗口动态增加控件的方法,也可以先在数据窗口画板中手工加上去,倒成sytnax后,查看其语法,再反写回去即可。