将该数据窗口的每个字段的expressions页中的protect项中填入if(isrownew() or isrowmodify(),0,1)该语句的作用是将新增行或修改行置为编辑状态,其他行为非编辑状态,然后在数据窗口控件的clicked事件中写入以下代码段:
long ll_row
ll_row=getclickedrow()//得到单击行的行号
if ll_row=0 then return
this.selectrow(0,false)//将所有行置为不靠选中状态
this.selectrow(ll_row,true)//将单击行选中
然后在修改按钮的clicked事件中写入以下代码段:(假设数据窗口的name属性为dw_1)
long ll_row
ll_row=dw_1.getselectedrow(0)//取得数据窗口的第一条选中行
if ll_row=0 then
messagebox("信息","请选择要修改的行!",information!,ok!)
return
else//将选中行整行置为修改状态
dw_1.setitemstatus(ll_row,modified!)//该函数的参数我已忘了,可以参考HELP
end if
用SETTAB()函数可以设置一列或若干列不可修改。如果是同一列中某些行不可修改而某些行可修改就要麻烦点了:先在数据窗口中新增一列flag,数值为0,1,然后定义每一列的Validation,定义为if flag=1 then 0(表示如果flag为1则该列不可用,具体语法可能不是这样,如果需要我下次写上来)