
PB Powerbuilder相关
Powerbuilder开发技巧
aolixiaox
目前常用技术栈:c#-.net/java-spring + vue/react + uniapp + electron。
15年之前用powerbuilder做了10多年CS桌面应用。
展开
-
vc++ 2017 编写pb(powerbuilder)可以调用的dll库程序(含C语言字符串处理函数)
powerbuilder 程序开发过程,经常会调用一些外部函数(dll库函数),本文介绍 vc++如何编写,pb可以调用的dll库函数。示例使用IDE:microsoft visual studio 2017一、创建一个动态链接库(DLL)项目。二、编写一个简单的函数,接收一个int值 arg1,返回arg1+1的结果。#include "stdafx.h"extern "C"{ _declspec(dllexport) int funcA(int arg1) { int r.原创 2020-07-05 02:30:14 · 1850 阅读 · 0 评论 -
PowerBuilder编程环境的一些设置三:添加系统工具按钮
程序开发过程中,会频繁用的PB系统的一些快捷工具按钮。同样,自定义的控件也经常使用。使用的时候:需要打开PBL库,找到需要的user object,拖动到设计界面。如果是一些使用频率较高的自定义的控件,操作就显得比较繁琐,这样就可以添加到系统工具按钮中。一、把鼠标移动到想添加的按钮组上面,鼠标右键弹出菜单选择 "customize.."二、找一个要显示的按钮图标,拖动到...原创 2019-02-28 08:48:56 · 903 阅读 · 0 评论 -
PowerBuilder使用python程序导入excel文件
应用场景:PB主要应用于数据库管理系统,经常需要数据的导入导出的操作,而PB提供的importfile函数,仅支持Text! 、CSV!、XML!、DBase2!、DBase3!的文格式。没错,不支持excel文件。当然可以通过DDE,OLE等方法对excel进行操作,不过确实不够友好。本文介绍python编写一个“excel文件另存为带制表符的txt的小程序’,并在PB中调用它。源码...原创 2019-03-09 10:30:00 · 2340 阅读 · 0 评论 -
PB powerbuilder 仿EXCEL筛选V3 for PB12.6
之前做的一个仿EXCEL筛选在PB12下做了升级更新内容:1、整体界面扁平化,自定义时间也进行了扁平化设计2、对DW表格自动格式化,DW设计过程无需调整字段和标题字体高度、字体、高度、颜色等等属性, 格式化细节,详见gf_format_grid全局函数。也支持建表源码导出3、新增鼠标和CTRL、SHIFT组合键的多选操作,4、主要的过滤组件算法重做,效率及拓展能力更强...原创 2019-05-03 13:03:34 · 1123 阅读 · 24 评论 -
PB(powerbuilder)编写的图片布局助手
程序大量使用datawindow的各种操作,想深入学习dw的朋友,可以参考一下程序源码下载:程序开发要点:1、使用modify函数动态添加、修改、删除 dw控件,如图片、line、text等等。2、缩略图信息同步更新,使用表达式来做3、图片层次的切换动态添加dw控件,没有属性可以直接设置,是由添加的顺序决定层次。所以这里,用表格保存所以图片当前位置信息,层次调整时把控件...原创 2019-05-31 09:12:19 · 1074 阅读 · 0 评论 -
PB powerbuilder 升级版字符串切割函数
为了适应更多的应用情境,对之前的版本做了返回值的自适应处理,源码如下/*as_reference_str: 切割参照的字符或字符串as_original_str: 目标字符串index: 返回参照索引----------------------------------------------------------------------调用示例:ls_ta...原创 2019-06-01 10:50:50 · 1862 阅读 · 0 评论 -
pb powerbuilder 自定义datawindow滚动条
运行效果如图:设计要点,难点介绍:一、滚动条使用4个statictext控件组成。二、滚动控制通过dw的maxPOS ,滑块与滑槽相对的移动,来换算滚动的pos值long ll_poslong ll_maxposll_maxpos = long(idw_parent.Describe("DataWindow.HorizontalScrollMaximum"))ll_po...原创 2019-06-27 22:52:33 · 2916 阅读 · 1 评论 -
PB powerbuilder timing类
powerbuilder 如果需要周期性执行一个业务,第一个会想到的是timer事件。不过这个事件也是有局限性,很多情境是无法满足要求的。比如抽取程序,要显示多个随机的内容。而timing类就可以很好的弥补timer事件的不足。下面就做一个简单的例子,详细介绍一下timing类的用法例子运行效果:一、准备工作要使用timing类首先要把它对象化1、在new窗口通过 stand...原创 2019-07-12 09:12:06 · 2403 阅读 · 0 评论 -
PB powerbuilder 电子邮件发送
本文详细介绍PB使用jmail.dll发送电子邮件的方法用到的第三方库jmail 及完整示例下载链接:https://pan.baidu.com/s/1gc_f07cx-saxSZeAdkvApw提取码:4hix1、jmail注册integer li_flagstring ls_valueli_flag = registryget('HKEY_CLASSES_ROOT\CLSI...原创 2019-08-13 10:17:27 · 3702 阅读 · 2 评论 -
PowerBuilder编程环境的一些设置二:设计视窗调整
一、PB程序设计过程中,设计视窗的tab窗口很多,需要频繁的切换,或者关闭一些。 这样时不时会发现,少了一些窗口,那么可以通过菜单:view > layouts > default ,来恢复默认设计视窗布局。二、layouts菜单中还有一个manage按钮,可以将视窗按照自己的习惯布局,然后保存,就像图中的“style1”,需要的时候,可以像 default一样快速恢复。...原创 2019-02-17 12:40:53 · 1702 阅读 · 0 评论 -
PowerBuilder编程环境的一些设置一:脚本字体
编程界面的合理调整,是会让平常的编写要舒服很多的,以下部分内容主要针对新手,老手已经形成自己的习惯。一、脚本字体设置。 1、字体的选择 脚本字体会用到等宽字体,就是每个字符的宽度,如图1,"l"和“o”的宽度是不一样的,那么脚本看上去就不那么整齐,面对大量的脚本确实不太舒服。这里推荐图2的Consolas字体。 图1 2、脚本字体颜色及背景色 ...原创 2019-02-17 12:20:57 · 2838 阅读 · 1 评论 -
pb powerbuiler 无标题栏窗口的移动
在使用 response! 或 popup! 窗口 的时候,经常会希望关闭标题栏(例图1),但关闭了标题栏,这个窗口就无法移动了。 (图1)让无标题栏窗口的移动的设置方法:1、在窗口中新建一个自定义事件(例图2,事件名 ue_cnhit),event id 选择pbm_cnhittest2、添加脚本: return 2 3、鼠标点击窗口没有控件的位置,长按左键,就可以移动窗...原创 2018-07-23 11:59:22 · 1500 阅读 · 3 评论 -
PB powerbuilder程序设计中的尺度单位PBU
在PowerBuilder中除了DataWindow画扳网格尺寸(可以选择像素、厘米等等),其他都是用PowerBuilder单位(PBU)计量的。而这个PBU单位是有区分X、Y坐标的,也就是垂直方向和水平方向。比如我们添加一个矩形,满心欢喜的输入width:500,height:500,却发现它不是一个正方形那么在程序设计中,需要参照不同方向的宽度来控制尺度,就要用到函数UnitsT...原创 2018-10-22 13:16:13 · 2164 阅读 · 0 评论 -
PB powerbuilder 仿EXCEL筛选V2
仿excel的表格筛选方式,效果如下设计的关键思路:一、 弹出框,下拉列表的生成1、使用OpenUserObjectWithParm,将DW传送给封装的对象2、通过RowsCopy,将Primary!和filter!两个区的信息合并,实现历史选中的记录恢复3、通过DESTROY COLUMN ,将非选中字段的信息删除,构造出列表选项二、filter参数的拼...原创 2018-10-20 16:19:47 · 1596 阅读 · 0 评论 -
PB powerbuilder 数据库窗口的 scrolltorow 无效的说明
PB 数据库窗口设计时,会常用到scrolltorow ,即跳转到指定的行。而经常有人抱怨,该函数无效。其罪魁祸首就是setrow这个函数,如果在scrolltorow函数前面使用了setrow,并且参数row值相同,那么scrolltorow是看不到效果的。因为当scrolltorow跳转的行是当前行,数据库窗口不会scroll,而setrow恰好是把指定行设置为当前行。另外,scr...原创 2018-10-08 21:13:08 · 3911 阅读 · 0 评论 -
PB powerbuilder 数据库窗口DW中下拉窗口、子数据窗口响应事件
数据库窗口中相应鼠标点击、键盘移动等操作都有全面的事件进行支持,但是下拉数据库窗口的相关事件就不太明朗。比如图中,下拉窗口“新增用途”如何相应鼠标点击操作,很多PB新手可能就一时找不到头绪了。 数据库窗口DW中下拉窗口、子数据窗口响应事件的方法。1、需要使用到自定义事件“pbm_command”2、事件脚本如下:string ls_objectinteger ii_...原创 2018-10-08 20:58:55 · 5111 阅读 · 0 评论 -
PB powerbuilder 去除response类型窗口的3D边框
PB程序开发中,response类型窗口的边框默认是无法取消的。使用MFC的SetWindowLongA函数去除response类型窗口的3D边框函数声明: Function ULong SetWindowLongA(Long hwnd, Long nIndex, Long dwNewLong) Library 'user32.dll'Function ULong GetWin...原创 2018-10-08 15:53:45 · 1356 阅读 · 0 评论 -
PB powerbuilder 类浏览器的窗口切换
效果如果图,即类似浏览器的页面切换,来切换窗口这里使用动态的DW来实现切换的控制。主要思路如下:1、创建一个空白的DW,动态添加列,比如是uo_select主要的字段保存窗口编号,名称,显示标题,关闭按钮保存 选择,移过的按钮不同状态2、然后创建一个标准的child窗口,添加几个关键的事件A、open 事件,窗口打开 触发uo_select 的对应打开新窗口...原创 2018-10-08 15:37:07 · 2437 阅读 · 0 评论 -
pb powerbuilder 把特定分割符字符串转换成字符串列表
进阶版链接:https://blog.youkuaiyun.com/wosind/article/details/90726769程序开发中会需要把一些特定分割符字符串,转换乘字符串列表。比如A|B|CD转换成ABCD1、创建函数2、函数主体string ls_list[] //接收返回的字符串列表string ls_tempinteger i = 1long...原创 2018-07-23 16:23:22 · 3235 阅读 · 0 评论 -
PB powerbuilder 的rand函数生成随机数的机制
PB每次调用rand函数获取的随机数,实际上是从固定的数组(即随机数种子)中读取的,而非真正意义上的随机数。比如函数rand(100),在程序中:第一次调用,函数返回42。第二次调用,函数返回68。第三次调用,函数返回35。...也就是:42、68、35、1、70、25、79、59...这样一个固定的数组。程序关闭后重新运行,会按照相同的顺序返回相同的值。获取真正意...原创 2018-07-23 14:56:12 · 5845 阅读 · 0 评论 -
PB powerbuiler通过 edit source 方式直接修改数据库窗口风格
powerbuiler 的数据库窗口设计,DW风格只能在新增的时候进行选择,无法在设计过程中进行切换。比如一个grid风格的DW,各元素已经调整完成,只是想切换到tabular风格,那么正常情况只能重新创建一个DW。通过"edit source"方式编辑源码是可以直接切换DW风格1、右键DW对象,打开“edit source”设计窗口2、找到processing属性,设置为0和1可...原创 2018-07-23 14:30:48 · 2343 阅读 · 0 评论 -
PB powerbuilder中使用datastore替代游标
先看一个实验,相同的效果,游标和datastore的处理效率对比,datastore有明显优势。A:游标方式: B:datastore方式 两段代码都是从表格 base_area中抓取area_name字段内容,相比之下,datastore方式的脚本更易于阅读。另外,datastore还可以完成一些更复杂的逻辑,以及更自由的数据读取,所以PB开发中是可以使用da...原创 2018-11-06 13:20:35 · 1293 阅读 · 2 评论