ehxz 发表于 2010-8-12 15:45:12

[PB]-数据窗口对象(二)

〓获取数据窗口信息

※函数Describe
使用函数Describe可以获取数据窗口对象中的信息。该函数语法是:
dwcontrol.Describe(propertylist)
其中,dwcontrol是数据窗口控件名称,propertylist是以空格分隔的特性或运算表达式列表,它用来报告列与图形对象的属性值。表达式可以用特定行与列的值进行运算。Describe函数返回的是一个字符串,该字符串是对指定属性的描述,不同的属性占用不同的行(不同属性用~n分隔)。如果有无效属性则返回该属性之前的属性取值和一个惊叹号(!)。如果某个属性没有值,则返回一个问号(?)。
如:
dw_1.describe("datawindow.bands datawindow.objects")
header~tdetail~tsummary~tfooter~nemp_id~temp_id
dw_1.describe("datawindow.band datawindow.objects")
!
dw_1.describe("datawindow.bands datawindow.object")
header~tdetail~tsummary~tfooter!
如果特性值容易引起混淆,例如,带有感叹号、问号、Tab键或换行符,这些符号在返回字符串中将用引号括起来。为了测试这种情况,先给数据窗口中的标签name_t中输入内容为name?,然后使用下面的语句:
dw_1.describe("name_t.text")
上面的语句显示"name?",这是因为如果值列表中的第一个值用引号引着,那么该特性列表中的剩余值也用引号引着。
*标签name_t和addr_t中分别输入内容为name?和zjhz
dw_1.describe("name_t.text addr_t.text")-------"name?" zjhz
dw_1.describe("addr_t.text name_t.text")-------zjhz "name?"
*最后不显示空格(~n)


※对列的引用
在属性描述时,经常要对列进行引用。引用列的方法有两种,或者使用列名,或者使用列号。应尽量避免使用列号,因为列号是和创建数据窗口时选择字段的顺序相对应的。在以后的修改中很有可能取消某些字段或者调整字段的选择顺序,或者改变数据源,这时就很容易出现错误,更糟糕的是这时很有可能没有错误信息,张冠李戴了。
下面是一个使用列号进行属性描述的语句:
dw_1.describe("#5.coltype")
这种语法可以和函数getcolumn搭配使用,用来检索当前列号。下面是一个显示数据窗口中所有字段类型的例程:
integer li_count,li_index
li_count = integer(dw_1.describe("datawindow.column.count"))
for li_index = 1 to li_count
messagebox(string(li_index),dw_1.describe("#" + string(li_index) + "coltype"))
next

※函数Evaluate
在使用Describe描述数据窗口对象中的相关信息时,有一个非常重要的函数不能不掌握,就是Evaluate。虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的。所以,函数Evaluate非常重要,它可以使函数Describe获取表达式的取值。该函数的语法是:
Evalute('expression',rowno)
其中,expression是属性表达式,rowno是要描述的行号。该函数放置在Describe的属性列表中。例如,判断第3行的salary工资是否大于1000,如果大于则返回1,否则返回0,
可以使用下面的语句:
dw_1.describe("evaluate('if(salary > 1000,1,0)',3)")
而使用下面的语法就是错误的:
dw_1.describe("if(salary > 1000,1,0)")
*单行(如第二行)
dw_1.describe("evaluate('if(isnull(emp_no) or emp_no = '',~~'*~~',emp_no)',2)")
*多行
long ll_i
string ls_emp
for ll_i = 1 to dw_1.rowcount()
ls_emp = dw_1.describe("evaluate('if(isnull(emp_no),~~'NULL~~',emp_no)'," + string(ll_i) + ")")
dw_1.setitem(ll_i,'emp_no',ls_emp)
next

※函数LookUpDisplay
字段使用了下拉列表框、下拉数据窗口和单选按钮等有代码表的编辑风格时,在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。如何才能读取用户看到的值?可以使用函数LookUpDisplay。
LookUpDisplay函数不能直接从PowerScript调用,可以在Describe和Evaluate函数配合使用。因为函数LookUpDisplay不能指定对哪行数据进行操作,它的参数只有一个字段名称,所以必须和Evaluate函数配合使用。该函数的语法是:
    LookUpDisplay(columnname)
其中,参数columnname是字段的名称,而不是一个字符串。函数执行错误则返回空字符串。
    下面是一个和函数GetItemString相比较的例子。假设在一个数据窗口中定义字段本人的编辑风格为DropDownListBox,定义该字段使用编码表,编码表的定义是显示值“Male”,“Female”分别对应“男”和“女”。然后,在某个按钮的clicked事件中编写如下脚本:
messagebox("getitemstring:"+dw_1.getitemstring(1,"本人"),"lookupdispaly:"+dw_1.describe("evaluate('lookupdisplay(本人)',1)"))
::getitemstring:男
::lookupdisplay:male


〓修改数据窗口信息
为了在运行时修改数据窗口对象特征,应该使用Modify函数,而不是直接访问语法。该函数的语法如下:
dwcontrol.Modify(modstring)
其中,dwcontrol是数据窗口控件名称,既可以是数据窗口也可以是子数据窗口,还可以是datastore对象。modstring是修改字符串,用来指示要修改哪些对象的哪些属性。如果修改成功函数则返回空字符串,如果修改的语法错误则返回对错误的描述,格式是:line n Column incorrect syntax,这里是第n列是从modstring开始计数的错误位置。
数据窗口对象可以在运行时使用合适的语法修改其外观、行为和数据库信息。通过提供完整的对象规范,甚至可以在数据窗口对象内部创建和删除对象。
使用modstring参数可以指定Create、Destroy和Attribute alteration三种类型的语句。

※创建对象
可以使用下面的语法来添加对象(如文本、计算域以及位图):
Create object(settings)
其中,settings为将要创建的对象定义的一组特性和值,定义对象时,用户必须提供足够的信息。
想要得到某个对象的正确语法的最好的方法就是导出一个包含对象的简单的数据窗口。然后就能把对象的语法剪切并粘贴到应用程序中。另一种办法是使用那些能成为数据窗口内特定对象显示语法的许多工具之一(它们正变得越来越商业化)。
下面的示例用来说明这种格式,假设用户刚刚从头开始动态地创建了一个完全新的数据窗口,现在需要在标题头放置一个公司标志,其语法是:
string ls_modify,ls_result
ls_modify = "Create bitmap(band = background filename = 'c:\logo.bmp' x = '60' y = '8' width = '1308' height = '513' border = '0' name = logo)"
ls_result = dw_1.modify(ls_modify)
if ls_result <> "" then
messagebox("提示",ls_result)
end if
这段代码为用户刚刚创建的报表数据窗口在恰当的位置创建标识。

※删除对象
除了可以在数据窗口内创建对象外,还可以使用下面语法删除对象:
Destroy object
这里的object是数据窗口对象内要删除对象的名字。若要把列和列的数据从缓冲区中删除,需要指定Column关键字。
例如,上一个示例中向动态创建的报表中添加了一个公司标志。如果用户把这一功能作为运行时的选项,比如说通过复选框,那么就不仅需要能够创建对象而且还需要删除该对象。下面是用于删除的代码:
string ls_result
ls_result = dw_1.modify("destroy logo")
if ls_result <> "" then
messagebox("错误",ls_result)
end if
下面的示例使用这种modify格式删除列及其相关的标签:
string ls_result
ls_result = dw_1.modify("destory column salary destroy salary_t")
if ls_result <> "" then
messagebox("错误",ls_result)
end if

※特性修改
Attribute alteration 类型的语句格式是modify三种格式中最常用的一种,这种语法的格式如下:
objectname.attribute = value
按照被影响的attribute的不同,value可以是下面类型中的任何一种:
a)常量:指简单的、不使用表达式的特性修改值。如:
columnname.band = footer
b)带引号的常量:也是指简单的特性修改值。如:
columname.height = '65'
c)表达式:由一个默认值及其后的表达式组成,它的返回值与特性的数据类型相同。如:
'167725~tif(emp_status=~'A~',255,16777215)'
请注意这种表达式的格式。整个表达式括在单引号中,表达式需要缺省值,而且该值通过Tab键(~t)与余下的表达式隔开。表达式返回0或者1,它们是特性的有效值。
在实际使用时,这种格式的语句经常简单写成属性访问格式。如:
dw_1.modify("oval_1.background.color = rgb(255,0,128)")
和以下直接属性访问方式是等价的:
dw_1.object.oval_1.background.color = rgb(255,0,128)


〓字段和计算域的属性-更多见帮助(DataWindow object properties)

*获取字段的类型(Coltype属性)
字段的ColType属性是一个非常有用的属性,使用该属性可以在程序运行时获取字段的类型。但是不能在运行时修改该属性。下面是它的语法:
直接引用:dw_1.object.object.objectname.coltype
在Describe函数中:"objectname.coltype"
不管使用哪种方式,对同一个字段获得的类型都相同。字段类型有char(n),date,datetime,decimal(n),int,long,number,real,time,timestamp及ulong共11种,其中的n代表字符的长度或者小数后的精度。
如:
ls_coltype = dw_1.objcet.emp_id.coltype
ls_coltype = dw_1.describe("emp_id.coltype")
在实际编程中,获取字段的类型后,紧接着使用choose case语句针对不同的类型进行相关的处理。

*背景属性(background.property)
在运行时修改字段的背景,这是标识特殊数据行的一种手段。使用该属性可以在程序运行时获取字段的背景,也可以修改字段的背景。它的语法如下:
直接引用:dw_1.object.objectname.background.property
在Describe和Modify函数中:"objectname.background.property{ ='value'}"
其中,property可以是color或者mode。当为color时取值应该是长格式表示的颜色,或者使用RGB函数中红、绿、蓝表示的颜色;当为mode时,0表示将背景设置为不透明的(即可以显示背景颜色),1表示背景为透明的。
实际上,字段的背景属性也可以在数据窗口画板中进行设定。下面是修改和读取字段背景属性的实例:
//修改字段的背景颜色
dw_1.object.oval_1.background.color = rgb(255,0,128)
dw_1.modify("emp_name.background.color = '11665407'") //这里好象不能用rgb()
//读取字段的背景颜色
ls_data = dw_1.describe("oval_1.background.color")
//读取字段的背景模式
ls_data = dw_1.describe("emp_name.background.mode")
//设置字段的背景模式
dw_1.modify("emp_name.background.mode = '1'")
dw_1.modify("mdrect_1.background.mode = '0'")

*指定检索规则(Criteria.property属性)
在脚本运行时,可以控制是否显示检索规则窗口或者读取数据窗口这方面的信息。语法如下:
直接引用:dw_1.object.columnname.criteria.property
在describe和modify函数中:"columnname.criteria.property{ = value}"
其中,dw_1是数据窗口控件名称,columnname是要获取或者设置检索规则的字段名称,value为yes或者no,property是以下属性:
a)Dialog:是否显示检索规则窗口。取值为yes则显示,取值为no则不显示。如,在一个数据窗口中放置了字段name,可以编写如下脚本:
dw_1.modify("name.criteria.dialog = yes 本人.criteria.override_edit = yes")
dw_1.retrieve()
脚本运行,显示检索规则输入窗口
b)override_edit:是否用户必须在检索规则窗口中输入数据。取值为yes则用户必须输入数据,取值为no时用户可以不输入数据。
c)required:是否用户只能使用等号进行查询。如果取值为yes则用户的输入只能是等号,如果取值为no则用户可以使用各种符号,包括=、<>、>、>=、<=、<等。

*Edit风格的字段属性(Edit.property属性)
编辑风格为Edit类型的字段,可以通过edit.property来获取其相关信息或者设置其外观及动作。下面是它的语法:
直接引用:dw_1.object.columnname.edit.property
在describe和modify函数中:"columnname.edit.property{ =value}"
其中,columnname是哟啊读取或者设置属性的字段名称,value根据property不同而可以使用不同类型的值。property可以有17个取值,其中:
a)和滚动控制有关的有AutoHScroll,AutoVScroll,HscrollBar和VscrollBar,它们的取值都是yes或者no,表示是否显示该滚动条。
b)和显示的内容有关的属性有Case,CodeTable,Format,NillsNull和Password,这些属性用来控制字段中的内容如何显示。Case的取值为Any,Upper,Lower与Painter,表示不管用户在该字段上输入的大小写,都按照该属性自动进行转换。CodeTable的取值为yes或者no,表示该字段是否有代码表。Format规定对用户输入的内容进行格式化时应该采用的格式。NillsNull的取值为yes或者no,表示当用户在字段中不输入内容而离开该字段时,是否将该字段中的内容自动置为NULL。Password属性的取值也是yes或者no,表示是否将用户的输入作为密码样式显示,如果作为密码则用户的输入内容作为*号显示,显示的个数和用户输入字符个数相等。
c)和编辑控制有关的属性有AutoSelect,DisplayOn1y,FocusRectangle,Limit,Required,Style和ValidateCode,除了Limit取值为正整数、Stylee取值为String类型外,其他属性的取值都是yes或者no。AutoSelect属性表示当字段获得焦点时是否自动选中该单元中的内容。Display0nly表示是否允许用户修改该字段中的内容,如果取值为yes,则用户虽然可以选中该字段中的内容但是不能修改。FocusRectangle表示当字段获得焦点时是否显示矩形的边框,以表示当前焦点的位置。Limit是一个相当重要的属性,用来**用户可以输入字符的长度。Required属性如果为yes,则在获得焦点后用户不输入内容就休想离开。虽然该属性可以很好地保证非空字段不为空,但该属性非常不友好,建议慎重使用。Style属性在程序运行时不能修改,只能读取其中的信息。该属性返回的是关于字段的编辑风格。ValidateCode属性表示是否使用代码表进行有效性校验。该属性当CodeTable属性为yes时才有效。
下面是关于该属性的一些实例:
ls_setting = dw_1.objcet.emp_name.edit.autohscroll //是否允许自动横向滚动
ls_setting = dw_1.describe("emp_name.edit.Autohscroll") //同上
dw_1.object.emp_name.edit.required = "no" //将字段设置成必须输入的字段
dw_1.modify("emp_name.edit.required = no") //同上

*字段的显示格式(Format属性)
可以使用Format属性来指定字段的显示格式。但是,在实际编程中使用更多的是函数GetFormat或者SetFormat,以取代Modify或者Descrie来设置字段的显示格式。
该语法使用时的重点在于格式串的使用。下面是相关的语法:
直接引用:dw_1.object.objectname.format
在函数describe和modify中:"objectname.format{='value'}"
其中,objectname是字段或者计算字段或者计算域的名称value是字符型的表达式,取值是一种格式串。下面是一些使用实例:
ls_setting = dw_1.object.phone.format //读取字段的电话显示格式
ls_setting = dw_1.describe("phone.format")
dw_1.object.shipdate.format = "yyyy-mm-dd" //设置日期格式
dw_1.modify("shipdate.format = 'yyyy-mm-dd'")

*设置数据窗口修改时的主键(key属性)
该属性在一个数据窗口修改多个表时非常有用,因为这时必须根据要修改的表动态修改主键,属性key就可以实现该功能。该属性使用时的语法如下:
直接引用:dw_1.object.columnname.key
在函数modify或者describe中:"columnname.key{=value}"
其中,columnname是要作为主键的字段名,或者是要判断是否为主键的字段的名称;value取值为yes或者no。如:
ls_setting = dw_1.object.empid.key //判断字段empid是否为主键
ls_setting = dw_1.describe("empid.key")
dw_1.object.empid.key = "yes" //将字段empid作为主键
dw_1.modify("empid.key = yes")

*字段名称(name属性)
使用name属性可以获取字段的名称。可以使用字段号或者字段名称来标识一个字段,但使用字段号不太安全,所以用获取字段名比较好一些。语法如下:
直接引用:dw_1.object.objectname.name
在函数describe中:"objectname.name"
其中,objectname是要获取名称的控件标识,因为在数据窗口对象中有很多控件有多种标识方法。如,下面可以获取字段号为1的字段的名称:
dw_1.describe("#1.name")

*字段中的数据保护(protect属性)
该属性表示是否对字段中的数据进行保护,取值为0或者1。1表示实行保护,0表示不保护。当进行数据保护时,即使字段的TabOrder值大于0用户也不能对字段进行编辑,并且该字段都不能获得焦点(和TabOrder取值为0时的表现完全相同)。下面是该属性使用时的语法:
直接引用:dw_1.object.columnname.protect
在函数describe和modify中:"columnname.protect{='integer'}"
其中,columnname是要获取或者设置protect属性的字段的标识,integer取值为0或者1。
下面是使用实例:
ls_setting = dw_1.object.emp_start.protect //获取字段emp_start的protect属性取值
ls_setting = dw_1.describe("emp_start.protect")
dw_1.object.emp_start.protect = 1 //设置字段emp_start的protect属性
dw_1.modify("emp_start.protect = 1")
dw_1.modify("emp_start.protect = '1~tif(isrownew(),0,1)'")
//设置protect属性为表达式,含义是:如果是新数据行则将protect设置为0,否则设置为1//,缺省为1。

*字段的滑动属性(slideleft和slideup)
使用字段的滑动属性可以更好地根据运动时的情况安排数据的布局。有两个和滑动有关的属性,SlideLeft表示当左面空白时是否向左滑动,SlideUp表示当上面出现空白时是否向上滑动。使用该属性的语法是:
直接引用:
dw_1.object.objectname.slideleft
dw_1.object.objectname.slideup
在函数describe和modify中:
"objectname.slideleft{='value'}"
"objectname.slideup{='value'}"
其中,slideleft中的value取值为yes或者no。slideup中的value取值为:
a)AllAbove:当上面数据行中的所有 对象都为空时向上滑动
b)DirectlyAbove:当上面和本对象对应位置的对象为空时向上滑动
c)No:不进行滑动
下面是应用的实例:
dw_1.object.emp_lname.slideup = 'no'
ls_setting = dw_1.describe("graph_1.slideup")
dw_1.modify("emp_lname.slideup = no")

*字段的TabOrder值(TabSequence属性)
字段的TabOrder值是一个比较重要的属性,取值大于0时用户可以编辑该字段,等于0时无法编辑该字段。在运行时,根据程序的运行情况有可能动态修改字段的TabOrder值,这时可以使用TabSequence属性。该属性应用时的语法如下:
直接引用:dw_1.object.columnname.TabSequence
在函数modify或Describe中:"columnname.TabSequence{=number}"
其中,number为从0到32000的正整数,当为0时表示字段不允许编辑。下面是使用实例:
ls_setting = dw_1.object.emp_name.tabsequence //获取字段的TabOrder值
ls_setting = dw_1.Describe("emp_name.tabsequence")
dw_1.object.emp_name.tabsequence = 10 //设置字段的taborder值
dw_1.modify("emp_name.tabsequence = 10")
实际上,在编程时经常使用函数SetTabOrder来设置或者获取字段的TabOrder值,因为该函数正确执行后,字段被设置成指定的TabOrder值,并且返回设置之前的TabOrder值。

*用户是否可以保存字段内容(update属性)
当数据窗口中的数据提交时,可以修改的字段及其对应的数据用来产生update SQL语句,使用该SQL语句进行数据的保护。所以,在程序运行时,如果不希望用户保存某字段中的数据,可以修改字段的update属性。下面是该属性的语法:
直接引用:dw_1.object.columnname.update
在函数modify或者describe中:"columnname.update{=value}"
其中,value的取值为yes或者no。下面是使用实例:
ls_setting = dw_1.object.emp_name.update //获取字段是否可以修改
ls_setting = dw_1.describe("emp_name.update")
dw_1.object.emp_name.update = "no" //使字段emp_name不能修改
dw_1.modify("emp_name.update = no")
在应用时,可以根据用户的权限,或者根据用户的录入数据是否齐全(通常需要保证数据一致性)来动态修改某些字段的update属性。另外,在一个数据窗口修改多个数据表时也经常使用该属性。

*字段校验(Validation和ValidationMsg属性)
字段的校验规则在数据窗口画板中可以指定,但有时需要在程序运行时动态地修改,可以使用Validation和ValidationMsg属性来指定。属性Validation使用时的语法如下:
直接引用:dw_1.object.columnname.validation
在函数describe和modify中:"columnname.validation{='validationstring'}"
其中,validaionstring是一个包含校验规则的字符串,该字符串的结果或者是True或者是False。下面是使用实例:
ls_setting = dw_1.object.emp_status.validation //获取字段的校验规则
ls_setting = dw_1.describe("emp_status.validation")
dw_1.modify("本人.validation = '本人 = ~~~'f~~~' or 本人 = ~~~'m~~~''") //设置规则
dw_1.object.本人.validation="本人='f' or 本人='m'"
字段的校验规则设置好后,用户在该字段上输入数据并要离开时,如果数据不能通过校验则显示错误信息,采用系统缺省的错误信息不太友好。这时,可以通过设置validationgMsg属性来指定错误信息。该属性使用时的语法如下:
直接引用:dw_1.object.columnname.validationMsg
在函数describe和Modify中:"columname.validationMsg{='string'}"
其中,string为数据不能通过校验规则时要提示的信息。如:
dw_1.object.本人.validationgmsg = "性别必须为f或者m!"
实际上,当用户输入的数据不能通过校验规则时将触发数据窗口控件的itemerror事件,该事件的返回值可以决定是否显示错误信息提示窗口。如果在itemerror事件中也编写了错误信息提示脚本,该脚本能够正常执行并且用validationgmsg属性定义的错误信息也会显示。

*计算域的属性
计算域除了具有上面介绍的属性外,还有一个重要属性Expression。使用这个属性可以根据用户的执行情况来更好地调整程序的动作,下面是其使用时的语法:
直接引用:dw_1.object.computename.expression
在函数modify和describe中:"computename,expression{='string'}"
其中,computename是计算域的名称,string是字符串,它应该包含合法的表达式。如:
ls_setting = dw_1.object.comp_1.expression //获取表达式
ls_setting = dw_1.describe("comp_1.expression")
dw_1.object.comp_1.expression = "avg(salart for all)" //设置表达式
dw_1.modify("comp_1.expression = 'avg(salary for all)'")


〓Button重要属性
*Action属性
该属性是Button控件最重要的一个属性。在数据窗口画板中,可以选择一个按钮有哪个动作。可选的动作都是事先定义好的,开发人员没有机会精确定义某个动作的执行,只能在运行时动态改变按钮的动作。
    可以在设计时指定按钮的动作。在按钮属性窗口的General属性页,下拉列表框Action
中可以选择可用的动作。
    在程序运行时可以使用Action属性来获取或者修改按钮的动作。该属性使用时的语法如
下:
    直接引用:dw_1.object.buttonname.action
    在函数Describe和Modify中:"buttonname.action{='value'}"
其中,buttonname是要获取或者设置动作的按钮的名称;value是动作代码,可以是下拉列表框Action中的值。
代码 动作   解释   返回值
11 AppendRow 在最后增加一空白行   新增加行的行号
3 Cancel   取消使用了yield函数的检索过程 0
10 DeleteRow 如果按钮在detail带中则删除按钮 成功返回1,否则-1
    ,否则删除当前数据行。
9 Filter   显示Filter对话框,   过滤掉的数据行数。
    并在指定条件后进行检索   如果发生错误则返回小于0的数
12 InsertRow 如果按钮在detail带中,则以按钮 新插入行的行号
    所在行为参数插入数据,否则在当
    前行插入一空白行
6 PageFirst 翻到第一页    成功返回1,否则返回-1
7 PageLast 翻到最后一页    最后一页中第一行的行号。
      如果失败则返回-1
4 PageNext 翻到下一页    同上
5 PagePrior 翻到前一页    同上
16 Preview   进入、退出预览状态   0
17 PreviewWithRulers 打开或者关闭标尺   0
15 Print   打印一份数据窗口   0
20 QueryClear 删除where子句    0
18 QueryMode 进入、退出查询模式   0
19 QuerySort 指定查询时的排序规则   0
2 Retrieve 从数据库中检索数据   检索到的记录数
1 Retrieve(Yield) 从数据库中检索数据,并随时允许 检索到的记录数
    用户终止
14 SaveRowsAs 以用户指定的格式保存数据 记录数
8 Sort   显示排序窗口并按指定规则排序 成功则返回1,否则-1
13 Update   将修改了的数据保存到数据库。修 成功则返回1,否则-1
    改成功则自动执行commit,否则执
    行rollback
0 UserDefined 允许为按钮的ButtonClicked和 用户脚本中定义的返回值
    ButtonClicking事件编写脚本

*SuppressEventProcessing属性
SuppressEventProcessing属性用于是否触发ButtonClicked事件或者ButtonClicking事件。
语法格式是:
直接引用:dw_1.object.buttonname.suppresseventprocessing
在函数describe和modify中:"buttonname.suppresseventprocessing{='value'}"
其中,value的取值为yes或者no,表示是否触发事件。如:
dw_1.object.b_name.suppresseventprocessing = 'yes'
dw_1.modify("b_name.suppresseventprocessing = 'no'")
ls_setting = dw_1.describe("b_name.suppresseventprocessing")

*Text属性
通过Text属性可以获取或者设置按钮上的文字。当运行时,如果要动态修改按狃的Action属性,就应该利用Text属性修改。该属性使用时的语法如下:
直接引用:dw_1.object.textname.text
在函数modify和describe中:"textname.text{='string'}"
其中,string是一个字符串或者表达式,如果要给按钮设置快捷键,可以在字符串中使用&符号。如:
ls_setting = dw_1.object.text_1.text //获取按钮上的文字
ls_setting = dw_1.describe("text_1.text")
dw_1.object.text_1.text = "employee &Name" //给按钮设置文字,并有快捷键
dw_1.modify("text_1.text = 'employee &Name'")

吞吞 发表于 2014-10-2 22:32:33

学习

tomok 发表于 2014-10-5 07:49:25

一起下载了!

rbrjgzs 发表于 2016-6-24 00:03:34

学习中
页: [1]
查看完整版本: [PB]-数据窗口对象(二)

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com