CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

我要疯了!

楼主fzymr(风中游牧人)2001-12-13 21:28:22 在 PowerBuilder / 基础类 提问

      在下拉数据窗口中如何能够触发键盘上下键,我自定义了pbm_dwnkey事件,但是不能触发上下键! 问题点数:38、回复次数:2Top

1 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2001-12-13 22:01:24 得分 38

在PB的数据窗口中,如何捕捉dropdowndw列的上下键事件  
   
   
  Posted   by   janjun   on   August   13,   1999   at   08:57:45:  
   
  In   Reply   to:   在PB的数据窗口中,如何捕捉dropdowndw列的上下键事件!    
   
  ■   DDDW   事件概述  
   
  ⒈所有对DDDW的操作都通过触发pbm_command事件完成  
  ①   在PB的用户事件中,大多数事件对应的Windows   事件都有两个参数:lparam   和   wparam,而在PB5.0中,pbm_command没有参数,但可以通过message对象的两个属性取得Windows事件对应的Event   ID,这两个属性就是:   LongParm   和   WordParm。  
  LongParm   包含DDDW的Handle,用intLow()可取得其Handle  
  WordParm   包含对DDDW的操作,用intHigh()可取得其Event   ID  
   
  ②   在PB6.0(^)中,pbm_command带3个参数,其中hwndchild(long)与notificationcode(unsignedinteger)即DDDW的Handle和Event   ID。  
   
  ⒉DDDW   的Event   ID   列表:  
  Event   Event   ID  
  -------------------------------  
  Clicked   1281  
  RowFocusChanged   2048  
  RightMouseButtonDown   2314  
  Left   Button   Up   2313  
  Retreive   End   769  
  MouseMove   2311  
  ...    
  至于问题中的上下滚动,倘为键盘,将导致行焦点改变(此外,还导致一个ID   =   2049的事件):  
  RowFocusChanged   2048  
   
  倘为鼠标点击滚动条上下按钮:  
  PageUp/PageDown   2339  
   
  ⒊根据上述列表,就可以在   pbm_command   事件中判断对DDDW做了何种操作:  
   
  DataWindowChild   ldwc_Child  
   
  GetChild(   "Column",   ldwc_Child   )  
   
  IF   IntLow(   Message.Longparm   )   =   Handle(   ldwc_Child   )   THEN    
  CHOOSE   CASE   IntHigh(   Message.Wordparm   )  
  CASE   2048   //   RowFocusChanged   on   DDDW  
  CASE   1281   //   Clicked  
  CASE   2314   //   Right   Mouse   Button   Clicked  
  CASE   2311   //   MouseMove  
  END   CHOOSE  
  END   IF  
   
  *   PB   6.0(^)可以直接使用其参数hwndchild、notificationcode代替其中的intLow(Message.LongParm)和intHigh(Message.WordParm)。  
   
  ■   一个简单例子   --   自动选择DDDW    
   
  DataWindowChild   ldwc_Child  
  String   ls_Pointer  
  Long   ll_Row,   ll_Lparam,   ll_Lparam  
   
  ll_Lparam   =   Message.LongParm  
  ll_Lparam   =   Message.WordParm  
   
  GetChild(   "status",   ldwc_Child   )   //   Replace   the   column   name   "status"   as   you   needed  
   
  IF   IntLow(   ll_Lparam)   =   Handle(   ldwc_Child   )   THEN  
  CHOOSE   CASE   IntHigh(   ll_Lparam   )    
  CASE   2311   //   MouseMove  
  //   Get   the   object   at   pointer   and   parse   out   the   Row   #  
  ls_Pointer   =   ldwc_Child.GetObjectAtPointer()  
  ll_Row=Long(   Mid(   ls_Pointer,   Pos(   ls_Pointer,   "~t"   )   +   1   ))  
   
  //   If   the   Row   is   different   then   highlight   it  
  IF   ldwc_Child.GetRow()   <>   ll_Row   AND   ll_Row   >   0   THEN  
  ldwc_Child.ScrollToRow(   ll_Row   )  
  END   IF  
  END   CHOOSE  
  END   IF  
   
  ■   相关文档  
   
  -   据说在《January   1995   PBDJ》(PowerBuilder   Developer   Journal)有揭露dddw这方面的内容,   遗憾的是很需要一些美元。  
  http://www.sys-con.com/pbdj/index2.html  
  -   第二个地方是   Steve   Benfield的主页  
  http://www.stevebenfield.com/  
  本文上述分析和样例即主要根据Steve   Benfield的应用实例而来。  
  -   另外Powersoft用户年会(Powersoft   Conference)   '97似乎也有相关的一些应用例子。  
   
  上述链接中,有的似乎已经丢失了关于DDDW的链接,但对于PB开发者来说,无论如何还是值得去lou上一眼的.  
   
  -   PBDevs,   1999   -  
  Top

2 楼PBVC(圆砣)回复于 2001-12-13 22:13:16 得分 0

学习Top

相关问题

  • 我要疯了
  • 我快疯了!!!
  • 我快疯了 !!
  • 我疯了~~
  • 我快疯了!!!
  • 我要疯了!
  • 我要疯了
  • 我疯了,你呢?
  • TMD,我快疯了!
  • 我要疯了,BORDBK50.dll

关键词

  • pb
  • 数据
  • ldwc
  • dddw
  • inthigh
  • intlow
  • longparm
  • rowfocuschanged
  • wordparm
  • 事件

得分解答快速导航

  • 帖主:fzymr
  • killerdanny

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo