图1 通讯录窗体w_txl界面
具体实码如下:
.窗体w_txl的open事件
dw_1.settransobject(sqlca)
dw_1.retrieve()
.窗口中“确定修改”按钮的clicked事件
if dw_1.update(dw_1,true,false)=1 then
dw_1.resetupdate()
commit using SQLCA;
else
rollback using SQLCA;
messagebox(“错误!!!”,“数据保存失败,请检查输入数据是否有错!”)
end if
.窗口中“新增”按钮的clicked事件
long rownumber
rownumber=dw_1.insertrow(0)
dw_1.setfocus()
dw_1.scrolltorow(rownumber)
dw_1.setcolumn(1)
.窗口中“退出”按钮的clicked事件
close(w_txl)
.窗体中数据窗口的clicked事件
string columntext //列标题
string columnname //列名
integer length //列标题长度
columntext=dwo.name //获得列标
length=len(columntext) //得到列标题的长度
columnname=left(columntext,length - 2) //取得列名
if not isnull(columnname) then //判断列名是否为空
dw_1.modify(columnname “.protect=‘1~tIf(isrownew(),0,1)’”)
//根据该行是否新增决定相应列的编辑特点,对新增行保护属性为0,否则为1
end if
.窗体中数据窗口的doubleclicked事件
string columntext
string columnname
integer length
columntext=dwo.name
length=len(columntext)
columnname=left(columntext,length - 2)
if not isnull(columnname) then
dw_1.modify(columnname “.protect=0”) //恢复列的可编辑性
end if
4 结束语
本文就PowerBuilder中用数据窗口的Protect属性实现列不可编辑与解除列不可编辑的一种灵活方法进行了详细的,实际应用表明,这种方法既具有灵活性,又具有通用性,是一种较好的方法。
[1] 刘增进 编著.PowerBuilder7.0数据窗口技术详解[M].北京:出版社,2000。
[2] 戴士弘 主编.PowerBuilder技术教程[M].陕西:西安电子大学出版社,2000。
[3] [美]Simon J.A. Herbert等著,张宝玲 等译,董启雄 等校[M].PowerBuilder7.0实用全书(第三版).北京:电子工业出版社,2000。
