POWER
BUILDER中数据窗口DATAWINDOW中的检查框CHECKBOX要实现这样的控制:点一下打勾,再点一下去掉勾。但是在某些时候,点了也不能打勾。这就要求把DATAWINDOW的CHECKBOX字段 TAB
ORDER
设置为0,使它在点击时不会自动打勾去勾,而完全用程序来控制。当然,CHECKBOX首先要设置ON的值为Y,OFF的值为N。
控制程序可以象下面这样:
if row <= 0 then return
//如果没有点击到行上,就返回。
dw_bws.Accepttext()
int id,cnt
string status,ftype
id =
getitemnumber(row,"id")
status = getitemstring(row,"status")
ftype =
getitemstring(row,"ftype")
if dwo.name<>"status" then
return
if status="Y" then
update sv010 set status="N" where id=:id;
if sqlca.sqlcode <>
0 then goto error //检查存盘是否成功
dw_bws.setitem(row,"status","N") end if
if status="N" then
select count(*) into :cnt from sv010 where
ftype=:ftype and status="Y";
if sqlca.sqlcode <>
0 then goto error
if cnt>=5 then
//已生效的问题不能超过五个
messagebox("提示","该类型的问题已达到最大数,不能将此条生效!")
return
end if
if cnt<5 then
update sv010 set status="Y"
where id=:id;
if sqlca.sqlcode
<> 0 then goto error //检查存盘是否成功
dw_bws.setitem(row,"status","Y")
end if
end if
if sqlca.sqlcode <> 0 then
error:
rollback using sqlca;
messagebox("警告","保存失败!"+sqlca.sqlerrtext,stopsign!)
return
else
commit using sqlca;
//messagebox("信息","保存成功!")
end if
上面标成红色的代码就是控制CHECKBOX打勾与否的。
|