ehxz 发表于 2007-6-30 13:50:28

[转帖]实现数据窗口的多行选择

<p><font size="2">问:我想在PowerBuilder的数据窗口中实现多行选择,这该如何办呢?</font><br/>&nbsp;</p><p><font size="2">答:作一数据窗口通用对象(UserObject),在CLICKED事件中写入如下代码:</font><br/>&nbsp;</p><p align="left"><font size="2">long lng_currentrow,lng_j<br/><br/>if row=0 then<br/>&nbsp;&nbsp;&nbsp; return<br/>else<br/>&nbsp;&nbsp;&nbsp; lng_currentrow=row //当前鼠标点中行<br/>end if<br/>if keydown(keyshift!) then //按下SHIFT键<br/>&nbsp;&nbsp;&nbsp; if i_lng_lastrow=0 then //上次没选中任何行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_currentrow,true)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i_lng_lastrow=lng_currentrow //i_lng_lastrow为实例变量,记录上次单击的行<br/>&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(0,false) //全都不选中<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if lng_currentrow&gt;i_lng_lastrow then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for lng_j=i_lng_lastrow to lng_currentrow<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_j,true)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end for<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for lng_j=i_lng_lastrow to lng_currentrow step -1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_j,true)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end for<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;<br/>&nbsp;&nbsp;&nbsp; end if<br/>else<br/>&nbsp;&nbsp;&nbsp; i_lng_lastrow=lng_currentrow<br/>&nbsp;&nbsp;&nbsp; if keydown(keycontrol!) then //按下CTRL键<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if this.isselected(lng_currentrow) then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_currentrow,false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_currentrow,true)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;<br/>&nbsp;&nbsp;&nbsp; else //无任何键按下<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(0,false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.selectrow(lng_currentrow,true)<br/>&nbsp;&nbsp;&nbsp; end if<br/>end if</font></p><p align="left"><font size="2">在窗口的OPEN事件中写入如下代码:</font></p><p align="left"><font size="2">dw_1.object.datawindow.readonly=true</font></p>
[此贴子已经被作者于2007-6-30 13:52:47编辑过]
页: [1]
查看完整版本: [转帖]实现数据窗口的多行选择

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

Mail To:Admin@SybaseBbs.com