ehxz 发表于 2007-6-30 11:24:31

[转帖]用鼠标选择数据窗口中的多行并进行处理

<p>昆明宇同思创系统集成有限公司(650031)<br/>&nbsp;<br/>陈伟锋(e_mail:&nbsp; <a href="mailto:ly_cwf@sohu.com">ly_cwf@sohu.com</a> )<br/>&nbsp;<br/>  PB中selectrow()函数用来对数据窗口的行进行加亮显示。但不能对数据进行选择,笔者在进行数据库开发时,遇到需要对用户在数据窗口中的选定行进行操作,实现步骤介绍如下:<br/>1、首先在window的instance variables中定义数组<br/>//标识此行是否被选择(1:选择。0:未选择)<br/>integer isselected[]<br/>2、在window中的open事件中写进如下代码:<br/>int i<br/>long rowc//数据窗口总行数<br/>DW_1.settransobject(sqlca)<br/>dw_1.retrieve()<br/>rowc=dw_1.rowcount()<br/>for i=1 to rowc<br/>&nbsp;&nbsp;&nbsp; isselected=0<br/>next&nbsp;&nbsp;&nbsp;</p><p>以下3,4参考:<a href="https://www.sybasebbs.com/sybase/dispbbs.asp?boardid=33&amp;id=2398&amp;star=1&amp;page=1">https://www.sybasebbs.com/sybase/dispbbs.asp?boardid=33&amp;id=2398&amp;star=1&amp;page=1</a>&nbsp;</p><p>3、在datawindow中的clicked中编写如下代码:<br/>int i<br/>if row&lt;&gt;0 then//当用户单击数据窗口标题时会选择全部行,这时row参数被置为0.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.SelectRow(row,true)//选择此行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isselected=1<br/>end if <br/>4、在datawindow中的doubleclicked中编写如下代码:<br/>int i<br/>if row&lt;&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.SelectRow(row, false)//取消选择<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isselected=0<br/>end if <br/>5、"全部选定"和"全部不选定"按纽:<br/>5.1"全部选定"按纽代码:<br/>int i<br/>long rowc//数据窗口总行数<br/>rowc=dw_1.rowcount()<br/>for i=1 to rowc<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dw_1.setrow(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dw_1.selectrow(dw_1.getrow(),true)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isselected=1<br/>next<br/>5.2"全部不选定"按纽代码:<br/>int i<br/>long rowc//数据窗口总行数<br/>rowc=dw_1.rowcount()<br/>for i=1 to rowc<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dw_1.setrow(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dw_1.selectrow(dw_1.getrow(),false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isselected=0<br/>next <br/>6."确定"按纽代码(对所选择的数据进行处理):<br/>int i<br/>long rowc//数据窗口总行数<br/>boolean ifnotselect//是否全部不选定<br/>ifnotselect=false<br/>rowc=dw_1.rowcount()<br/>for i=1 to rowc <br/>&nbsp;&nbsp;&nbsp; if isselected=1 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifnotselect=true<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit<br/>&nbsp;&nbsp;&nbsp; end if<br/>&nbsp;&nbsp;&nbsp; if i=rowc and isselected=0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(parent)<br/>&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;&nbsp; <br/>next<br/>for i=1 to rowc<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if isselected=1 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dw_1.setrow(i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在此处输入对已选定的行的处理代码<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br/>next <br/>close(parent)<br/>&nbsp; <br/>&nbsp;<br/>本技巧中的选择数据部分可以编写成user object ,作为用鼠标选择数据窗口中的多行的一个父类。 </p>
[此贴子已经被作者于2007-6-30 14:02:49编辑过]

ehxz 发表于 2007-6-30 13:43:21

<p>//在此处输入对已选定的行的处理代码<br/></p><p>比如说我要修改dw_1里选中行的abcd字段的内容都为1如何改?</p><p></p><p>dw_1.setitem(i,"abcd","1")</p><p>dw_1.update()</p>
[此贴子已经被作者于2007-6-30 14:05:15编辑过]

lovelyni 发表于 2007-12-19 22:09:09

学习一下
页: [1]
查看完整版本: [转帖]用鼠标选择数据窗口中的多行并进行处理

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com