PowerBuilder的数据窗口[2]
循环
LOOP
程序执行完后 多行编辑框中显示的为出错的地方 用户根据提示可以轻易地更改 FindRequired函数中的Row Colnbr参数能自动增加或重置 Colname用来存放列的字符名
数据的突出显示及保护
程序运行中 用户希望显示的数据具有明显的区分 例如学生的成绩(不及格的分数要用红色显示) 有些数据必须只能显示 不能让用户修改 还有些数据在有些时候可以修改 有些时候不能修改等 以上情况可归结为两点
数据的突出显示
数据窗口应该能使用户很快找到他们想要的信息 以颜 *** 分既满足用户的习惯 又不占系统资源 实现起来也很简单 以学生管理为例 要求成绩低于 分的以红色显示 其他不变 方法是 在数据窗口中对应成绩的列(例如 /CJ )上双击鼠标左键或单击鼠标右键 弹出ColumnObject对话框 选取Expressions页 在Color后的框中输入
if(cj< rgb( ) rgb( ))此句表示当成绩小于 则显红色 否则灰色显示
IF语句只可能有两种选择 如果要更多的条件判断则必须用CASE语句 例如成绩大于等于 用蓝色 小于 用红色 其他用绿色则应该用以下语句
Case(cjWHENIS>= THENRGB( )WHENIS< THENRGB( )ELSERGB( ))
我们还可以输入更加复杂的公式
图形是最好的说明语言 为了更好体现数据的直观性 可以采用条件位图的方法 之所以称为条件位图 是因为它随数据的性质而决定是否显示 用可以在上述的成绩管理数据窗口的前面加上一个图片 如下图
双击最左边的蝴蝶位图 弹出PictureObject对话框 选Expressions页 在Visible右的编辑框写入if(xb= ) 此句的意义为当性别为 (女)时蝴蝶出现 否则蝴蝶消失 程序运行起来相当直观 读者可以触类旁通 充分利用列的属性使用户的界面更加友善 漂亮
数据的保护
有很多情况需要对数据进行保护(即只能显示而不允许修改) 学生查询成绩时就是这种情况 进行数据保护的方法有很多 第一种是双击要保护的列 弹出ColumnObject 选取Edit页 将DisplayOnly框选中 第二种将要保护的列的TabOrder置 则此列得不到焦点 当然就无从修改 第三种是从根本作起 选取Rows菜单 再选取UpdateProperties 弹出SpecifyUpdateProperties对话框 将AllowU pdates设为空 这样即使用户更改了也无法更新数据库 使更改毫无意义
以上情况都是事先已经确定需要保护的数据 如果有些数据要保护 有些不要保护则以上的方法就无法实现 例如合同台账管理 对于一个没有实施的合同可以更改 对于一个已经实施的合同则必须加以保护 这需要用列的保护属性来实现 方法如下
双击每一列 弹出ColumnObject对话框 选取Expressions页 在Protect后的框中写入 if(sfss= ) 其中sfss为表示合同是否实施 如果实施(值为 )则进行数据保护 否则可以更改 此方法可以在程序运行中动态控制数据的保护方式
数据窗口的多表更新
在处理数据时 经常需要将几个表中的数据放入一个数据窗口中进行处理 一般情况下多表数据源的数据窗口只能用于数据的检索 而不能更新 想要更新数据则采用的方法为 创建数据窗口(将各个表的主键包括进去) 修改Taborder使数据能被更改 然后对应各个表创建相应的隐含数据窗口 隐含数据窗口的数据项和主数据窗口中对应表的数据项应完全一致 存盘时将主数据窗口中的数据拷贝到相应的隐含数据窗口中去 逐个保存各隐含数据窗口中的数据即可 由此看来 第二种方法更容易理解和接受 实现起来也很简单
小结
数据窗口的引入使PB独树一帜 奠定了其在客户机/服务器体系前端开发工具中的领导地位 在运用数据窗口这个工具时应该对它的处理机制深入了解 否则会产生意想不到的错误(PB是解释型的 很多问题尤其是关于数据窗口的问题在编程过程中检查不出来) PB程序组中专门有一程序项DWsyntax用来说明数据窗口的用法 读者可以从中吸收到很多有用的东西
lishixinzhi/Article/program/PB/201311/24652