前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder中实现数据窗口列不可编辑一种方法_计算机毕业论文_秘书百科 会员登陆 | 网页对话 | 网站首页 | 范文中心 | 论文中心 | 期刊杂志 | 综合材料 | VIP俱乐部 | 在线咨询 行政论文 | 文教论文 | 经济论文 | 艺术论文 | 政治论文 | 社会论文 | 企业论文 | 财务论文 | 德育论文 | 医学论文 | 通信论文 | 公共论文 | 会计论文 您现在的位置: 21世纪秘书网 > 论文中心 > 通信传播论文 > 计算机毕业论文 > 正文范文 PowerBuilder中实现数据窗口列不可编辑一种方法 摘要:本文详细论述了如何利用DataWindow的Protect属性灵活实现列不可编辑的方法。 关键词:PowerBuilder;DataWindow; 数据编辑 1 引言通过数据窗口,用户可以对数据进行增、删、改等编辑工作。为了防止用户由于操作不慎而删掉数据窗口中的一些重要的数据,在PowerBuilder中,需要将不可删除数据所在的列设为不可编辑状态。常用方法有:1)在数据窗口的设计阶段将列的Tab值设置为0,或在程序运行阶段用函数动态设置列的Tabsequence属性为0;2)在数据窗口的设计阶段将列的Edit属性设置为DisplayOnly,或在程序运行阶段将Edit属性的DisplayOnly置为Yes。以上方法都简单且易于实现,但都不够灵活。用Tabsequence属性置0的方法,若要恢复该列的可编辑状态,必须在置0之前用Describe()函数先获取该列的Tab值,之后用Modify()函数恢复该值即可将该列恢复成可编辑状态,增加了编写额外代码的负担,而且这种方法还破坏了数据窗口的制表值顺序;把DisplayOnly属性置为Yes的方法,要求该列的Style Type必须选中Edit风格,若该列风格为其它类型,如CheckBox、EditListBox等,则不能用这种方法,因此这种方法也缺乏通用性。本文采用数据窗口中列的Protect属性来灵活实现列的不可编辑的方法,Protect属性将忽略数据窗口的制表顺序设置,只要列处于保护状态时,即使该列的制表顺序大于0,用户也不能对该列进行编辑。这种保护数据窗口列中数据的方法,它没有破坏制表值的顺序,很容易恢复列的制表值;而且Protect属性还允许指定一个条件表达式,使同一列中某些值被保护而另外的值没有被保护,这对在数据窗口中插入新记录时很有利。本文详细论述了如何利用DataWindow的Protect属性来灵活实现列的不可编辑。2 Protect属性的访问格式2.1 直接访问法的格式如下:dw_controlname.Object.columnname.protect=value或dw_controlname.Object.#columnnumber.protect=value.其中value值为0或1,为1时该列处于保护状态,不可编辑;为0时该列处于非保护状态,用户可以编辑该列。2.2 Modify()函数访问列属性的语法格式如下:dw_controlname.Modify(string modstring)其中参数modstring是定义属性的修改方式,即为“columnname.protect={‘integer’}或#columnnumber.protect={‘integer’}”,integer代表列是否被保护的布尔值,为0即假时,列没有被保护;为1即真时,列被保护。如用表达式指定protect属性,该表达式有如下格式:defaultvalue~tDataWindowpainterexpression其中defaultvalue是能转换为与该属性适应的数据类型的值,即0或1,为一个缺省值;DataWindowpainterexpression是能使用任何DataWindow画板函数的表达式,该表达式求值后的数据类型必须与设置的属性的数据类型相匹配,当设置某列的属性时,该表达式作用于DataWindow中该列的每一行,这就使得可以根据数据的不同而改变保护的方式。 3 应用实例下面以一个通讯录中添加记录为例详细说明。首先在数据库中建立如表1所示的通讯录表(Txlb),同时在表中输入四条记录。编号 姓名 工作单位 类别0001 建国 湖南大学 同学0002 无名 广西师大 同学0003 阿勇 广西师大 同学0004 小崔 长沙大学 同事表1 通讯录利用Txlb表建立数据窗口d_txl,数据源选择Quick Select,表现风格选择Grid。建立窗体w_txl,并在窗体中放置数据窗口控件dw_1,数据窗口控件dw_1连接的数据窗口即为d_txl,如图1所示。在该窗体中,用户如要防止删除编号列中已有的编号而在新增记录时又允许在该列输入新编号,单击数据窗口中的编号列标题即可。然后单击“新增”按钮,此时编号列中已有的编号不可编辑,但对新增的一条记录该列允许编辑,可以输入新编号为0005的一条新记录。记录输入完毕,单击“确定修改”按钮,输入数据将存入数据库,编号列中新增的记录自动转为不可编辑,从而实现对新老数据实行不同的保护,这是用方法1)、2)都无法实现的;用户如发现存入数据库的编号有错误,只要用鼠标双击编号列标题,即可解除列的保护状态,重新编辑该列,从而灵活实现列的编辑要求。对数据窗口控件中的其它列也可以采用同样的方法来实现新老数据的不同保护,因此这种方法还具有通用性。 图1 通讯录窗体w_txl界面具体实现代码如下:.窗体w_txl的open事件dw_1.settransobject(sqlca)dw_1.retrieve().窗口中“确定修改”按钮的clicked事件if dw_1.update(dw_1,true,false)=1 thendw_1.resetupdate()commit using SQLCA;elserollback using SQLCA;messagebox(“错误!!!”,“数据保存失败,请检查输入数据是否有错!”)end if.窗口中“新增”按钮的clicked事件long rownumberrownumber=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,否则为1end if.窗体中数据窗口的doubleclicked事件string columntext string columnname integer lengthcolumntext=dwo.name length=len(columntext) columnname=left(columntext,length - 2) if not isnull(columnname) then dw_1.modify(columnname + “.protect=0”) //恢复列的可编辑性end if4 结束语本文就PowerBuilder中用数据窗口的Protect属性实现列不可编辑与解除列不可编辑的一种灵活方法进行了详细的分析,实际应用表明,这种方法既具有灵活性,又具有通用性,是一种较好的方法。 参考文献[1] 刘增进 编著.PowerBuilder7.0数据窗口技术详解[M].北京:电子工业出版社,2000。[2] 戴士弘 主编.PowerBuilder技术教程[M].陕西:西安电子科技大学出版社,2000。[3] [美]Simon J.A. Herbert等著,张宝玲 等译,董启雄 等校[M].PowerBuilder7.0实用全书(第三版).北京:电子工业出版社,2000。   第1页 第2页 下一页 参考文献:/lunwen/txcblw/jsjbylw/201003/535726.html 上一篇论文: ASP.NET中开发树状结构 下一篇论文: 使用OLEDB和ADO调用返回记录集Oracle存储过程 发布时间:2010-3-5 17:02:48 阅读人次 百度推广 原创文章搜索 相关栏目导航 · 传播学论文 · 通信英语论文· 网络通信论文 · 通信工程论文· 移动通信论文 · 电影营销论文· 电影课题论文 · 中国电影史论文· 传播学毕业论文 · 计算机毕业论文· 计算机教学论文 · 计算机网络论文· 计算机英语论文 · 计算机安全论文· 计算机技术论文 · 计算机维护论文· 计算机病毒论文 · 计算机理论论文· 新闻传播学论文 · 计算机软件论文 热门文章列表 PowerBuilder中实现数据窗口列不可 [3] ASP.NET中开发树状结构 [4] ASP网页设计小技巧 [7] 刍议防火墙合理使用 [2] ASP技术交互式网页设计中运用毕业 [4] PowerBuilder中利用自动化技术调用 [5] PowerBuilder高级调试技术和技巧 [5] VBA限定Ecel表用户按钮 [3] Oracle数据库优化 [3] 构建校园网页面电子邮件系统 [4] VFP报表打印 [11] VB6.0数据库程序开发中使用ADO和SQ [4] 大型ORACLE数据库优化设计方案 [2] 电子商务中如何正确使用数据挖掘技 [4] 分布式对象技术及Web上应用 [3] 推荐文章列表 PowerBuilder中实现数据窗口列不可 [3] ASP.NET中开发树状结构 [4] ASP网页设计小技巧 [7] 刍议防火墙合理使用 [2] ASP技术交互式网页设计中运用毕业 [4] PowerBuilder中利用自动化技术调用 [5] PowerBuilder高级调试技术和技巧 [5] VBA限定Ecel表用户按钮 [3] Oracle数据库优化 [3] 利用RCM2200实现以太网和异步串口通 [5] 构建校园网页面电子邮件系统 [4] VFP报表打印 [11] VB6.0数据库程序开发中使用ADO和SQ [4] 大型ORACLE数据库优化设计方案 [2] 电子商务中如何正确使用数据挖掘技 [4]