PB
秋高工作室
这个作者很懒,什么都没留下…
展开
-
PB数据窗口加标题栏后如何让数据窗口不可移动
在数据窗口的other事件中加入以下代码if wparam = 61458 thenreturn 2end if原创 2021-04-08 21:34:04 · 544 阅读 · 0 评论 -
为数据窗口加载数据创建等待窗口
1,建一popup!类型的窗口,放上你的GIF图片,存储的名称如w_base_wait;2,将下面的代码另存为n_cst_thread_basewait.sru,再在你的pbl上右键import...得到一个名为n_cst_thread_basewait的CustomClass;$PBExportHeader$n_cst_thread_basewait.sru$PBExportComments$打开或关闭等待窗口的线程forwardglobaltypen_...原创 2021-03-02 20:38:50 · 283 阅读 · 0 评论 -
PowerBuilder的TreeView控件clicked事件代码
PowerBuilder的TreeView控件clicked事件代码,经过多位修改完善,近乎完美,没有显摆的意思,自己留存,各位老师留情。long parent_handle,brother_handlelong iTreeViewItem tvi_parent,tvi_cur,tvi_brotherIF not ib_stateclick then Return //如果不是在状态上点击,就返回IF handle < 2 then Return //如果点击的是不能选择的i.原创 2020-12-06 09:55:40 · 469 阅读 · 0 评论 -
treeview展开指定层的结点
//==================================================================== // 函数: f_expand() //-------------------------------------------------------------------- // 描述: 展开树形控件atv第ai_s到ai_e层的结点,其他层的结点收起 //-----------------------------------------.转载 2020-12-05 22:21:52 · 843 阅读 · 0 评论 -
PB+MS SQL+触发器关闭返回值
PB+MS SQL+触发器必须注意:若触发器存在两笔以上的返回值,比如两条update语句,被误判为数据有改变,存盘不成功。提示:Row changed between retrieve and update.No changes made to database.所以MS SQL触发器必须统一处理为:触发器开始加:if@@ROWCOUNT=0 Return --提高效能setnocount on --不返回统计笔数,可减少网络频繁响应,提高效性...原创 2020-12-05 19:51:12 · 262 阅读 · 0 评论 -
PB TreeView 查找节点(转)
PB TreeView 查找节点(转)PowerBuilder提供的TreeView控件可以使我们以树形方式分层组织和显示数据,使程序的表现更为灵活,用户的操作更加方便。通常情况下,在TreeView控件中通过展开和折叠各分枝,可以方便地对所需信息进行查找和定位,但是如果该控件中的内容层次较多,用户对其内容又不非常了解时,要让用户逐一展开各分枝进行定位就会使效率降低,这种情况下就需要提供一种自动查询方式,让用户输入要找的信息,由程序来完成在TreeView控件中的查找和定位。...转载 2020-12-03 19:50:50 · 396 阅读 · 0 评论 -
PB笔记(二)语法
一.基础语法规则1.注释行1)作用域从双斜杠(//)开始,到该行尾结束.2)块注释作用域从结束,其中包含的代码全是注释内容.2.大小写一般不区分大小写.3.标识符1)必须以字母开头(A到z),其余字符可以是字母或者数字,最长为40个字符.2)可以使用的特殊字符有连接符:-下划线:_美元符:$号码符:#百分号:%不可使用空格.4.续行符&:它可以使一条语句分多行编写.例:name="wangying&ping"转载 2020-11-28 23:40:38 · 2053 阅读 · 0 评论 -
TriggerEvent的动态用法
TriggerEvent函数作用:触发指定对象的指定事件,并且立即执行该事件中的脚本。注意该函数和PostEvent的区别。PostEvent不是立即执行,TriggerEvent是立即执行触发事件的脚本。函数语法:objectname.TriggerEvent ( event {, word, long } )objectname:PB中任何对象或者控件,只要有可以触发的事件就可以。 event:要触发的事件。可以是枚举类型或者String类型。PB提供的事件可以使用枚举或者String类型来表示,原创 2020-11-28 09:18:53 · 1551 阅读 · 0 评论 -
powerbuilder预装入对象
在PowerBuilder 中支持全编译代码,但用于采用这种方法存在编译时间长、编译后可执行文件量大等缺点,所以在不少场合,我们仍采用伪编译方式,就是将装载对象和源代码的PBL文件编译成PowerBuilder的动态链接库(.PBD)。PowerBuilder的动态链接库中装载的是与源程序库中源代码相匹配的二进制表示。在运行时,对象(包括函数)依照"需要时调用"的原则,从.PBD中装入内存,这就使可执行程序的字节数大大缩小,执行效率会提高,而且由于只有那些要用到的对象才被即时装入内存,使系统需...原创 2020-11-19 00:16:58 · 268 阅读 · 0 评论 -
动态菜单/权限管理的实现
权限管理序现在基本上大大小小的系统都由权限分配这一基础功能,不同的用户看到的界面不一样,能够使用的功能也不会尽然相同所以我要让我的系统做到超级管理员可以看到/操作所有界面,而新闻管理员只能看到新闻管理模块,仓库管理员只能看到仓库管理模块等等。。。思想动态菜单:系统里面有很多菜单可以进行点击操作,但是不同的角色用户能够操做的菜单肯定是不会相同的,那么,我就需要用角色来区分用户,进而区分用户所能看到/操作的菜单每个菜单我给其定义一个url,通过该url访问对应的菜单,将这个url和角色进转载 2020-11-09 00:06:13 · 1209 阅读 · 0 评论 -
角色权限设计
角色权限设计 一 ·RBAC模型 1.基本的RBAC模型 2.引入用户组概念的RBAC模型 3. 角色继承的RBAC模型 4. 限制的RBAC模型 二·权限的拆分与设计 三·需要注意的Tips 四·通用权限控制系统示例 一 ·RBAC模型1.基本的RBAC模型RBAC(Role-Base Access Control,基于角色的访问控制),就是用户通过角色和权限进行关联。简单的说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构成“用户-角色-权限”.转载 2020-11-08 23:51:58 · 1996 阅读 · 0 评论 -
pb和mssql死锁问题
1、前台开发工具pb9 88362、数据库mssql2000 Personal Edition 8.0.2039,已经打好sp4补丁,3、os :windows server2012 r2,连接人数不超过10,但是有几个问题,a、dw 里面select 全表,所以数据很大,我也不想修改他的其他过滤窗口,查询自然也没有改,所以每次开窗口很慢,还经常死锁,(pb6.5的程序不死锁,好奇怪),很多select 都添加 nolock,还是有死锁,b、后台很多触发器,和存储过程,取系统时间转载 2020-11-07 17:24:28 · 854 阅读 · 0 评论 -
mdi类型的窗口去掉标题栏和菜单
1、把下列声明加到GLOBALEXTERNALFUNCTIONS:FunctionulongSetWindowPos(ulonghwnd,ulonghWndInsertAfter,ulongx,ulongy,ulongcx,ulongcy,ulongwFlags)LIBRARY"user32.dll"FunctionULongSetWindowLongA(Longhwnd,LongnIndex,LongdwNewLong)Library'user32.dll'...原创 2020-11-01 00:47:22 · 535 阅读 · 0 评论 -
设计权限管理模块
我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图:UserInfo(ID number(6,0), UserName varchar(255))、Role(ID number(6,0), RoleName varchar(255))、Power(权限)(ID number(6,0), PowerType转载 2020-10-31 22:09:01 · 168 阅读 · 0 评论 -
pb获取EXE全路径
//====================================================================// 说明:获取EXE全路径//--------------------------------------------------------------------// 作者:vesn http://www.vesn.net/vdn.aspx 日期: 2015-2-20//==========================================.转载 2020-10-20 22:21:05 · 656 阅读 · 0 评论 -
pb 获取拼音码
global type gf_pym from function_objectend typeforward prototypesglobal function string gf_pym (string inputstring)end prototypesglobal function string gf_pym (string inputstring);//====================================================================.转载 2020-10-20 22:21:35 · 679 阅读 · 1 评论 -
pb 日期相关函数
//====================================================================// 函数: gf_firstday()//--------------------------------------------------------------------// 描述:返回某个月的第一天//--------------------------------------------------------------------// 参数.转载 2020-10-20 22:21:52 · 1510 阅读 · 0 评论 -
pb透明文本控件
forwardglobal type uo_transparent_st from statictextend typeend forward global type uo_transparent_st from statictextinteger width = 288integer height = 72integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset!fontpitc.转载 2020-10-18 00:21:48 · 408 阅读 · 0 评论 -
pb+vdn 导出指定列的json
global type gf_dw2json from function_objectend typeforward prototypesglobal function string gf_dw2json (powerobject dataobj_sur, string as_cols)end prototypesglobal function string gf_dw2json (powerobject dataobj_sur, string as_cols);//============.转载 2020-10-18 00:19:42 · 298 阅读 · 0 评论 -
pb uo_datastore
forwardglobal type uo_datastore from datastoreend typeend forward global type uo_datastore from datastoreend typeglobal uo_datastore uo_datastore type variablesstring is_sqlerrtextend variables forward prototypespublic function long of_retri.转载 2020-10-18 00:14:11 · 206 阅读 · 0 评论 -
PB时间戳
//====================================================================// 描述:timestamp 获取时间戳//--------------------------------------------------------------------// 作者: Vesn http://www.vesn.net 日期: 2018年05月20日//=======================================.转载 2020-10-18 00:13:12 · 1945 阅读 · 0 评论 -
pb11.5调用系统打印机
pb11.5调用系统打印机Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref string lpParameters,ref string lpDirectory,ulong nShowCmd) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteA;ansi"//pb9调用方法Function Long ShellExecute (...原创 2020-10-18 00:11:27 · 459 阅读 · 0 评论 -
pb 大写人民币
global type gf_money from function_objectend type forward prototypesglobal function string gf_money (decimal data)end prototypes global function string gf_money (decimal data);constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"constant string ls_num = "壹贰叁.转载 2020-10-18 00:10:36 · 246 阅读 · 0 评论 -
pb12.5 特殊字䄻datawindow显示乱码
高版本12.5 特殊字䄻datawindow显示乱码,显示乱码,保存后乱码解决1.使用pb12.5,sql20082.字段类型使用nvarchar以上2个解决显示乱码3.连接parm增加DisableBind=0,NCharBind=1如:SQLCA.DBParm ="Namespace='System.Data.SqlClient',DataSource='.\r2',Database='gspzd',DisableBind=0,NCharBind=1"第3个解决保存后乱码问题..转载 2020-10-18 00:09:37 · 711 阅读 · 0 评论 -
PB split 字符串拆分函数
$PBExportHeader$split.srf$PBExportComments$字符串拆分函数global type split from function_objectend type forward prototypesglobal function integer split (string assource, string astag, ref string aaret[])end prototypes global function integer split (stri.转载 2020-10-18 00:08:51 · 1392 阅读 · 0 评论 -
pb replace 替换指定字符
global type gf_replace from function_objectend type forward prototypesglobal function integer gf_replace (ref string as_source, string as_old, string as_new)end prototypes global function integer gf_replace (ref string as_source, string as_old, str.转载 2020-10-18 00:07:50 · 2442 阅读 · 0 评论 -
PB调用setitem改变数据窗口内容时,手动触发itemchanged事件
调用setitem默认不会触发itemchanged事件如果想实现可手动触发itemchanged事件事件格式如下:dw_patinfo.event itemchanged( /*long row*/, /*dwobject dwo*/, /*string data */)Example:dwobjectldwo_obj//定义数据窗口对象ldwo_obj=dw_patinfo.Object.patient_id//patient_id是setiem改变内容...转载 2020-10-18 00:16:34 · 1328 阅读 · 0 评论 -
PB自动注册OCX控件
今天转了一些常用处理方法,经常用得到这些方法,自己以不想抄,只能COPY了。方法一:1.手工注册OCX控件将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32 *.ocx ")*表示具体的文件。然后写注册表,将控件注册标志置为1,在程序开始运行时,先检查该标志,是否需要进行注册2.自动注册OCX控件在OCX控件中一般都包含一个DLLRegisterServer函数,可以用此函数来实现O...转载 2020-10-17 22:27:24 · 583 阅读 · 0 评论 -
PB datastore复制数据
$PBExportHeader$gf_ds_rowscopy.srfglobal type gf_ds_rowscopy from function_objectend type forward prototypesglobal function integer gf_ds_rowscopy (datastore adw_sur, datastore adw_tar, ref string as_ret)end prototypes global function integer gf_d.转载 2020-10-17 22:22:11 · 565 阅读 · 0 评论 -
PB取图片类型
string ls_filetype if long(BlobMid(ab_FileNameblob,1,4)) = 944130375 Then ls_filetype = 'gif' ElseIf long(BlobMid(ab_FileNameblob,7,4)) = 1179207242 Then ls_filetype = 'jpg' ElseIf integer(BlobMid(ab_FileNameblob,1,4)) = 19778 Then .转载 2020-10-17 22:18:19 · 356 阅读 · 0 评论 -
PB冒泡排序
long ll_i, ll_k, ll_data[], ll_temp, ll_cntll_data={10,15,8,23,6,4,58,96,89,65}//冒泡排序ll_cnt = upperbound(ll_data)for ll_i = 1 to ll_cnt - 1 ll_temp = ll_data[ll_i] for ll_k = ll_i + 1 to ll_cnt if ll_temp > ll_data[ll_k] then ll_data[ll_i] .转载 2020-10-17 22:17:13 · 223 阅读 · 0 评论 -
pb判断null
$PBExportHeader$gf_isnull.srfglobal type gf_isnull from function_objectend type forward prototypesglobal function any gf_isnull (any any_val, any any_mr)end prototypes global function any gf_isnull (any any_val, any any_mr);any la_ret,la_val la_.转载 2020-10-17 22:15:48 · 1701 阅读 · 0 评论 -
PB得到运行窗口名
window lw_win lw_win=w_main.getactivesheet()ls_xz=lw_win.title原创 2020-10-17 22:12:12 · 694 阅读 · 0 评论 -
pb pipe管道同步数据
$PBExportHeader$gf_pipeline.srfglobal type gf_pipeline from function_objectend type forward prototypesglobal function long gf_pipeline (transaction as_oritransaction, transaction as_taransaction, string as_ori_tablename, string as_ori_sql, string as_.转载 2020-10-17 22:11:07 · 455 阅读 · 0 评论 -
pb 字符串加密解密
global type gf_pass from function_objectend type forward prototypesglobal function string gf_pass (string as_pass, integer as_flag)end prototypes global function string gf_pass (string as_pass, integer as_flag);//===================================.转载 2020-10-17 21:01:03 · 677 阅读 · 0 评论 -
PowerBuilder的语言基础
每一种语言都有一组基本的语法约定,POWERBUILDER也不例外。(1)断行、续行与多条语句 通常情况下,powerbuilder的一条语句是写到一行上的,该条语句在书写完毕之后,按<Enter>键转到下一行,开始写下一句的内容。也就是说,在PowerBuilder中,使用<Enter>键作为一行的结束。在PowerBuilder语句比较长的情况下,为了方便阅读,可以使用续行符号把一条语句写到几行上。PowerBuilder的续行符号为‘&’,它放在一...转载 2020-10-15 22:58:06 · 2983 阅读 · 0 评论 -
PB 菜单生成(精华)
一、基本思路在PB帮助的MENU OBJECT一节当中,关于其PROPERTIES描述当中有一项:Item[ ] MenuSpecifies the Menu objects under a Menu object.这看似简单的一句话其实包含了三层含义:1、这句话说明MENU对象有一个属性为数组类型,它其中的各个元素记录了其所有的具体子ITEM项目,可以借助这个数组中各元素来访问底层的各子菜单;2、这些子ITEM项目仍是MENU类型,因此可以按照第一点的逻辑继续向下层推广,借助该...转载 2020-10-14 18:44:30 · 1057 阅读 · 0 评论 -
PB去掉窗口标题栏
setWindowPos函数把窗口的显示层次修改为HWND—TOPMOST,就可使指定窗口永远不会被其它窗口覆盖,该函数声明为: Function Long SetWindowPos(Long hwnd,Long ord,Long x,Long y,Long dx,Long dy,Long uflag) Library ″user32″ 参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和大小,均可忽略。在窗口的Open或Activate事件中加入如下函数调用..原创 2020-10-14 18:07:16 · 703 阅读 · 0 评论 -
动态创建数据窗口的两种方法
创建数据有多种方法,比如用SELECT语句创建,这里最简单,还有用自定义字创建数据窗口,这个比较复杂,下面就这两种方法介绍一下:1、用SELECT创建数据窗口 string ls_sql = 'select * from mara' string error_syntaxfromSQL, error_create string new_syntax new_syntax = SQLCA.SyntaxFromSQL(ls_sql,'Style(Type=...原创 2020-10-08 13:27:43 · 496 阅读 · 1 评论 -
PowerBuilder应用程序中的按钮设计
PowerBuilder作为开发数据库应用的工具,因为使用其开发方便、快捷并且实现的系统功能强大而深得程序员们的喜爱,我们可以看到越来越多优秀的数据库系统里出现它的身影。但是,随着用户界面设计的重要性被认可程度的加深,PowerBuilder在界面设计方面的缺憾就显现出来了,这也是令很多程序员伤脑筋的地方,不可否认的是规划应用图形界面是开发初期费时费力又不得不做的事情,尤其重要的是按钮的制作,笔者在开发很多的应用都面临着这种情况,经过研究,在这方面有所收获,现将这些经验整理出来,希望对同行们有所帮助。转载 2020-10-07 20:19:46 · 1866 阅读 · 0 评论