dw2xls已升级至pb11.5


      dw2xls已经开发了好几年了,最近也把这个程序开源了,由于自已一直以来都是用pb9开发程序,还没有升级到更高的版本,所以一直都没去升级这个程序.这两年经常会收到一些朋友的来信,询问如何把dw2xls升级到pb10或以上更高的版本,甚至部分用反编译程序的朋友,为了这个功能,都愿意付费购买.考虑到一些朋友在升级过程中,还是会碰过一些困难,为了方便大家,所以决定还是自已把程序升级到pb11.5,并提供给大家下载.如果使用pb10, pb10.5, pb11版本的朋友,请使用开发工具直接进行升级,然后再把附件中的n_cst_unicode.sru, n_cst_dw2excel.sru两个文件,导入到dw2xls.pbl文件即可.

        在这里,随便说一下pb10以下版本的程序,如果升级到pb10以上版本,需要注意的地方:
       PB10以下版本的程序,字符串使用的ANSI编码,pb10或以上版本,使用的是Unicode编码,所以在API函数定义上,会有些出入.大部分在参数或返回值中使用了字符串的Windows API函数,都提供了两个版本的API,一个是支持ANSI的,一般在函数后面加个A作为标记,一个是支持Unicode的,一般在函数后面加W(WideChar)作为标记.如GetWindowTextA和GetWindowTextW,所以在pb9时,定义API函数一般使用的是ANSI版本(因为PB9使用的是ANSI编码),如果是升级到PB10或以后版本,则可以把API函数定义为使用Unicode版本即可,而不是使用PB程序直接升级的那样,继续采用Ansi版本.
      此外,PB在定义Windows Api时,大小写是敏感的,这个跟PBScript不同,也是需要注意的地方.
      PB9新增加了两个函数 TOAnsi 和ToUnicode,分别可以把字符串转换为Uncicode编码的Blob类型的数据,或把Uncicode编码类型的Blob数量,转换为使用Ansi的字符串.而pb11.5,这两个函数在使用的时,提示该函数在以后的版本可能不支持,所以不直接使用.PB 11.5使用String和Blob函数进行字符串编码数据类型的转换,并且可以指定字符编码的类型.

      通过以上分析可以发现,如果在pb11.5中,把API函数定义为使用Ansi版本的话,操作是比较麻烦的,可能会涉及到字符串数据类型的转换,而如果定义为直接使用Unicode版本,则方便很多.

       附注: dw2xls从pb9升级到pb11.5所修改后的地方:
       1.修改n_cst_dw2excel中Local External Function以下两上Api函数的定义,直接使用Unicode版本
        Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"

FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoA" 
      更改后:
       Function boolean GetTextExtentPoint32W(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL" 
      FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoW" 
      其中:GetTextExtentPoint32W的名称与原来的定义不同,所以同时修改了代码中使用到该Api的地方.如果不想修改代码,可以直接把API改为:
       Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL" Alias For "GetTextExtentPoint32W"
      但这样以维护代码时,可能会容易理解错误,所以不建议.

       2.修改n_cst_unicode对象
       把OF_Ansi2Unicode函数原来的代码全部屏蔽掉,直接使用pb的内部函数: Return Blob(as_Value)
       把OF_Unicode2Ansi函数原来的代码全部屏蔽掉,直接使用pb的内部函数: Return String(a_Value)
    
      修改后运行程序, 一切OK,不会出错所谓的乱码问题.而且可以发现,需要修改的地方很少,修改的代码也非常少.

       需要的朋友,可从这里下载 dw2xls for pb11.5 source code
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在PB 11.5 DW(PowerBuilder 11.5 数据窗口)中,要实现回车下跳的功能,可以按照以下步骤进行操作: 1. 在数据窗口设计器中,选择需要设置回车下跳的目标列。 2. 在属性窗口中,找到 "Edit Style"(编辑样式)属性,并将其设置为 "Edit - Only On Enterkey"(仅在按下回车键时才进行编辑)。 3. 在 "Tab Order"(Tab 键顺序)属性中,为每个需要回车下跳的目标列设置一个唯一的值,该值用于指定按下 Tab 键时光标移动的顺序。 4. 在需要进行回车下跳的目标列的 "Edit Style"(编辑样式)属性中,将 "Tab Stop"(Tab 键停留)属性设置为 True,以确保光标可以在此列中停留。 5. 在各个目标列之间调整 "Tab Order"(Tab 键顺序)属性的值,以便按照所需的顺序进行回车下跳。 通过以上步骤,我们可以实现在 PB 11.5 DW 中使用回车键进行下跳的功能。当用户在输入某一列的数据后按下回车键时,光标会自动跳转到下一个需要输入的列,方便用户进行数据录入操作。 ### 回答2: 在PB 11.5 DW中,通过回车下跳可以使用以下方法: 1. 在数据窗口对象的属性中设置回车下跳。选择需要设置回车下跳的数据窗口对象,打开其属性窗口,然后找到“回车下跳”属性。将其设置为需要跳转到的下一个数据窗口对象。 2. 使用代码设置回车下跳。在打开数据窗口对象之前,可以编写代码来设置回车下跳。使用OpenWithParm或Open方法打开数据窗口对象时,将下一个需要跳转到的数据窗口对象的名称或id作为参数传递给方法。 3. 在数据窗口对象的事件中处理回车下跳。在需要进行回车下跳处理的数据窗口对象的事件中,例如pbm_dwnkey事件或pbm_keydown事件,可以编写代码来处理回车键按下时的动作。在事件中通过判断按下的键是否为回车键,并根据需要执行跳转到下一个数据窗口对象。 以上是在PB 11.5 DW中实现回车下跳的几种方法,根据具体的需求和使用场景选择合适的方法来实现回车下跳功能。 ### 回答3: PB11.5 DW是指使用AquaTerra DW系统的帕特博尔11.5龙骨船。回答如何回车下跳时,需要提到一些技术和操作方法。 首先,在进行回车下跳之前,需要确保在合适的环境中进行。底部的水深和水质必须足够安全,并且没有任何障碍物或潜在危险。 在准备进行回车下跳时,船员应该穿戴好个人防护装备,并确保所有的舱门和舱盖都已经关闭和锁好。驾驶员应当熟悉并遵守船只的操作手册和相关指导。 下跳过程中,驾驶员应当将船只的速度控制在适当的范围内,以确保船只平稳地进入水下。船只下跳的速度应当适中,既不过慢以致无法进入水下,也不过快以致造成冲击和意外损坏。 船只下跳时,船员应当注意船只的平衡和稳定性。尽量保持船只的水平,以避免船只在下跳过程中发生侧翻或其他意外情况。 同时,船员应当根据需要采取必要的动作来保护和维护船只的机械部件和结构。例如,可以启动适当的水密舱盖或泵起进水,以确保在下跳过程中船只不会进水和受损。 需要指出的是,回车下跳是一项高风险的操作,需要具备丰富的经验和专业知识。在进行回车下跳之前,应当进行全面的安全评估,并确保采取了充分的预防措施,以保障船员的安全和船只的完整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值