这样屏蔽掉DW里系统自带的回车键下移一行的功能?

fallstone 2002-05-09 08:41:31
客户需要在DW里按回车键就往下移一列,也就是用回车代替TAB的功能。
我用的是GRID的DW,先增加好4行或者5行。此时如果不写代码按回车则下移一行,写了用回车代替TAB的代码(send(handle(this),256,9,0))则既下移一行又右移一列

现在的问题是:怎样把下移一行的系统自带功能去掉???
...全文
193 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobi1314 2002-05-14
  • 打赏
  • 举报
回复
下面这种方法应该可以的,我一直是用这种办法的。但是你在使用的时候要进行考虑有没有跟其他的事件有没有什么冲突才行。
你自定义一个event id 为pbm_dwnprocessenter的事件
然后在该事件中写以下代码:
send(handle(this),256,9,0)
return 1

msf 2002-05-13
  • 打赏
  • 举报
回复
赞成海阔天空所说的。
liuyxit 2002-05-13
  • 打赏
  • 举报
回复
學習﹗
tiger201 2002-05-09
  • 打赏
  • 举报
回复
pbm_dwnprocessenter 中:

return 1
liuyxit 2002-05-09
  • 打赏
  • 举报
回复
根据你的意思可變為如下代碼(已在用0:

//在rowfocuschanged事件中加:
if getrow()=rowcount() then insertrow(0)

//在dw自定义一个event id 为pbm_dwnprocessenter的事件
send(handle(this),256,9,0)
return 1
//這樣可以在光標到達最后一行時就增加一新行﹐回車只到下一列﹐且焦點到最后一列還能回到第一列。

海洋‘s 2002-05-09
  • 打赏
  • 举报
回复
1.首先在数据窗口中定义一个用户自定义事件,ue_keydown,Event ID:pbm_dwnkey
脚本为:
integer li_row
integer VK_TAB = 09
integer VK_SHIFT = 16

if key = KeyLeftArrow! then
keybd_event(VK_SHIFT,0,0,0) //按下shift
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
keybd_event(VK_SHIFT,0,2,0) //释放shift
return 1
end if

if key = KeyRightArrow! then
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
return 1
end if
2.定义第二个用户自定义事件,ue_pressenter,Event ID:pbm_dwnkey
脚本为:
If This.Accepttext()<0 then
return
end if

if This.getcolumn()=Long(This.Describe("Datawindow.Column.count")) then
if this.getrow()=This.Rowcount() then
This.insertrow(0)
This.scrolltorow(This.getrow()+1)
This.Setcolumn(1)
return
end if
end if
send(Handle(this),256,9,long(0,0))
This.SetActionCode(1)
This.settransobject(sqlca)
通过以上这样的方法即可实现您的要求。当然,你也可以创建一个用户对象,将这
个事件写在其中,可以在任何需要使用此功能的窗口中都可以实现。
如果您对以上回答有什么意见,请留言给我或者mail给我哦!
海洋‘s 2002-05-09
  • 打赏
  • 举报
回复
1.首先在数据窗口中定义一个用户自定义事件,ue_keydown,Event ID:pbm_dwnkey
脚本为:
integer li_row
integer VK_TAB = 09
integer VK_SHIFT = 16

if key = KeyLeftArrow! then
keybd_event(VK_SHIFT,0,0,0) //按下shift
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
keybd_event(VK_SHIFT,0,2,0) //释放shift
return 1
end if

if key = KeyRightArrow! then
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
return 1
end if
1.定义第二个用户自定义事件,ue_pressenter,Event ID:pbm_dwnkey
脚本为:
If This.Accepttext()<0 then
return
end if

if This.getcolumn()=Long(This.Describe("Datawindow.Column.count")) then
if this.getrow()=This.Rowcount() then
This.insertrow(0)
This.scrolltorow(This.getrow()+1)
This.Setcolumn(1)
return
end if
end if
send(Handle(this),256,9,long(0,0))
This.SetActionCode(1)
This.settransobject(sqlca)
通过以上这样的方法即可实现您的要求。当然,你也可以创建一个用户对象,将这
个事件写在其中,可以在任何需要使用此功能的窗口中都可以实现。
supershb 2002-05-09
  • 打赏
  • 举报
回复
case KeyEnter!
Send( Handle(m_dw), 256, 9, keyflags )
CASE KeyTab!
m_dw.Post Function ScrollToRow(m_dw.GetRow())
if KeyFlags=1 then
m_dw.Post Function SetFocus()
end if

m_dw是数据窗口, 以上脚本放入KeyDown事件中,事件标志:pbm_dwnkey
dfz_fan 2002-05-09
  • 打赏
  • 举报
回复
自定义一个event id 为pbm_dwnprocessenter的事件
然后在该事件中写上 return 1

试试
kaisa_cheng888 2002-05-09
  • 打赏
  • 举报
回复
同意楼上
swjtu95 2002-05-09
  • 打赏
  • 举报
回复
Send ( handle, message#, lowword, long )向窗口发送一个消息。
    handle:你想要发送窗口的句柄,可用handle()函数获得句柄。
    message#:无符号的整型变量。是你想发送消息的系统信息号,实现的功能,须查询sdk。
    lowword:long类型,指定与消息一起发送的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0
    long:长整型变量,你想发送消息的值。
Send()功能向窗口发送指定的消息并立即执行相应的事件处理程序。语法Send( handle, messageno, word, long )参数handle:long类型,指定窗口的系统句柄,将向该窗口发送消息messageno:UnsignedInteger类型,指定要发送的消息号word:long类型,指定与消息一起发送的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起发送的long型参数值或字符串返回值Long。函数执行成功时返回Windows系统调用SendMessage()的返回值,发生错误时返回-1。如果任何参数的值为NULL,Send()函数返回NULL。用法Send()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中,这一点与Post()函数不同,Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Send()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。实际上,Send()函数把它的各个参数直接传送给Windows的系统调用SendMessage()。在各种C++开发工具的WINDOWS.H文件中可以查到各消息编号。如果应用程序要发送PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用TriggerEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Send()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。示例1. 下面的代码向窗口w_date发送一个向下滚动一页的消息(消息号为277):Send(Handle(w_date), 277, 3, 0)示例2. 下面的两条语句均触发命令按钮cb_OK的Clicked事件:
Send(Handle(Parent), 273, 0, Handle(cb_OK))cb_OK.TriggerEvent(Clicked!)
Send(Handle(w_emp), 277, 2, 0):窗口w_wmp向上滚动一页
Send(Handle(dw_whatever), 274, 61472, 0):数据窗口最小化
Send(Handle(dw_whatever), 274, 61488, 0):数据窗口最大化
Send(Handle(dw_whatever), 274, 61728, 0):数据窗口复原

kaikaihe 2002-05-09
  • 打赏
  • 举报
回复
send(handle(this),256,9,0)
return 1
fallstone 2002-05-09
  • 打赏
  • 举报
回复
问你了啊,你不跟我 说:)

问题加了RETURN就正确了,但是为什么这样还不明白,有关SEND的机理不懂,有人帮我解释下么?

以上帮助的人分数会给的,如果有人解释的好,我再加分。
nasy 2002-05-09
  • 打赏
  • 举报
回复
过来问我啊,呵呵~~
lmby 2002-05-09
  • 打赏
  • 举报
回复
没明白。
return 1
fallstone 2002-05-09
  • 打赏
  • 举报
回复
test
anrong 2002-05-09
  • 打赏
  • 举报
回复
具体情况具体来确定以上方法!
zmq223 2002-05-09
  • 打赏
  • 举报
回复
同意楼上的,其余的有副作用。
代码下载链接: https://pan.quark.cn/s/cf0000dae7ac 在.NET Framework平台中,`TreeView`组件是一种普遍应用的数据展示工具,主要功能是呈现层级化数据,例如文件系统布局、组织架构图等。本文将深入阐述在C#环境下如何运用递归方法为`TreeView`组件配置子节点,尤其是在管理文件夹层次结构的应用场景中。递归是一种高效的编程策略,其特点在于函数能够自我调用以完成特定任务,这种技术特别适用于处理具有层级关联的数据集合。为了有效运用`TreeView`组件,我们首先需要明确其核心构成单元:`TreeNode`。`TreeNode`是`TreeView`中的一个基本单元,它可以承载子节点,从而构建出树状结构。为了在`TreeView`中准确反映文件夹结构,每一个`TreeNode`通常映射为一个文件夹,而其下属的子节点则对应该文件夹内的子文件夹或文件。现在我们聚焦于核心内容,探讨如何通过递归方式实现子节点的添加。1. **构建基础框架** 我们需要设计一个类来描述文件或文件夹,该类应包含名称、路径等基本属性。例如: ```csharp public class FileSystemItem { public string Name { get; set; } public string Path { get; set; } // 其他属性如IsDirectory等 } ```2. **采集文件系统数据** 借助`System.IO`命名空间中的`DirectoryInfo`和`FileInfo`类,对目标目录进行遍历,以获取所有文件和子文件夹的信息。这可以利用`GetDirectories()`和`GetFiles...
内容概要:本文系统阐述了Java微服务架构与TypeScript全栈工程化的实战方法,涵盖从单体应用拆分到分布式系统治理的完整技术链条。在Java微服务部分,基于Spring Boot与Spring Cloud生态,深入讲解领域驱动设计(DDD)、服务注册与发现(如Nacos、Eureka)、配置中心、API网关(Spring Cloud Gateway)、声明式调用(Feign)、负载均衡、服务熔断降级(Resilience4j/Hystrix)、消息队列异步解耦(Kafka/RabbitMQ)以及分布式事务(如Seata)等核心技术。数据层强调数据库自治原则,并结合Redis提升性能。前端部分聚焦TypeScript类型系统,通过静态类型检查增强代码可靠性,支持泛型、联合类型、映射类型等高级特性,实现前后端接口模型统一。全栈协作采用React/Vue/Angular框架,结合Axios通信与Swagger接口文档标准化。工程化层面引入Docker、Kubernetes实现容器化部署,配合Jenkins或GitHub Actions完成CI/CD自动化流程,并通过ELK实现日志追踪。典型应用场景包括电商、订单管理等系统,实现高内聚、低耦合、可扩展的分布式架构。; 适合人群:具备一定Java与前端基础,从事中高级后端开发、全栈开发或系统架构工作的技术人员,尤其适合1-5年经验并希望掌握微服务与全栈工程化实践的研发人员。; 使用场景及目标:①掌握微服务拆分与Spring Cloud微服务体系建设;②理解服务治理、异步通信、分布式事务等关键问题的解决方案;③构建类型安全的全栈项目,提升前后端协作效率与系统稳定性;④实现微服务的容器化部署与持续交付。; 阅读建议:建议结合实际项目边学边练,重点关注架构设计思想与技术选型背后的权衡,同时动手搭建完整微服务链路与前端类型系统,深入理解各组件集成方式与最佳实践。

1,110

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧