这段时间很是郁闷。
理想和现实真的有很大的差距。
最近用PB9.03时发现一个很奇怪的问题,一个共享数据窗口控件,当主数据窗口控件增加一行空白记录,然后对其过滤操作,当过滤后只有一条记录时,共享数据窗口控件竟然不能显示数据了,百思不得其解。
后来用了下面的怪异方法得以解决,但是什么原理,我依然一头雾水。
解决办法(假设 Dw_1 为主数据窗口控件,Dw_2 为共享数据窗口控件):
在过滤代码后紧跟如下代码:
Dw_2.VScrollbar = True
Dw_2.VScrollbar = False
就是让共享数据窗口控件显示一下垂直滚动条。
以下操作均是在共享数据窗口控件里
第一步:
设置 HScrollBar(横向滚动条) 和 VScrollBar(纵向滚动条) 属性为 False;
第二步:
新建一事件,Event ID 设为:pbm_dwnprocessenter(捕获按下回车键),编写代码:Return 1(不处理默认回车键事件)。如果需要用回车键跳转光标(Tab键功能),则在 Return 1 前加入Send(Handle(This),256,9,0)即可。
第三步:
在 other 事件里编写代码 If message.Number = 522 Then Return 1 即可屏蔽3...
32位操作系统中,可以用两种方法实现限制应用程序只运行一次
第一种:
首先在global external functions声明外部函数如下: FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library ″user32″
然后在application的 Open 事件中加入如下代码: ulong l_handle, lu_class string ls_name ls_name = ″我的系统″ // 此处ls_name为系统主窗口的标题Title l_ha...
用户在DataWindow中对数据处理系统内部的操作实际上都是将数据在这几个缓冲区中进行的修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的IN-SERT,UPDATE,DELETE等语句。
PowerBuilder中,DataWindow是用户前端用来存储、操纵数据的对象。
在每一个DataWindow对象中有4个二维表作为数据缓冲区,用来存储查询到的数据。用户在DataWindow中对数据处理系统内部的操作实际上都是将数据在这几个缓冲区中进行的修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的IN-SERT,UPDATE,DE...
要在PB中实现串口编程,可以使用mscomm32.ocx控件
脚本如下:
String ls_data
ole_1.object.CommPort = 1 //使用COM1端口。
ole_1.object.Settings = "9600,N,8,1" //设置速率为9600,无奇偶校验,8 位数据,一个停止位。
ole_1.object.InputLen = 0 ...
网络在计算机世界里,越来越发挥着举足轻重的作用。在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。
下面以一个简单程序为例,说明WINSOCK控件在PB中的使用:
1.在窗口中添加WINSOCK控件:
在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。
在程序中该控件名称定为winsock_a(甲方)和winsock_b(...
在PB中快速实现数据库树形结构
树形结构在Windows环境中被普遍应用,它以简捷的界面深受用户喜爱。但在数据库开发中面对层次多、结构复杂的数据,如何快速地构造树形目录呢? 实现关键技术 在PowerBuilder所提供的控件中包含了Treeview控件,但树的具体形成还需用户编写脚本实现,即它的列表项要在程序中动态添加,而这些列表数据通常由用户已录入在数据库中,并作为数据库维护的一项内容。 为了能快速实现数据库的树形结构,我们可以采用编码法,即利用编码表来实现。 编码表的基本字段包括编码和编码名称,其编码规则是以数字、字母的位数来区分不同层次,同一层编码位数相同,层次按位数递增,程序...
什么错误?
迷糊!郁闷!
PB里带有 Title 的 DW 控件,在设置模式里,如果设置“最大化”、“最小化”按钮可用,则必须要让“关闭”(ControlMenu)按钮可用。这在实际应用中往往带来麻烦,因为有时候我们并不需要用户去关闭这个 DW,也就可是要让 “关闭”按钮不可用才行。那怎样才实现这个功能呢?
经过实验,用代码的方式可以达到控制目的。实现方法如下:
1、在设计模式里让“关闭”( ControlMenu 复选框为选中)可用,
2、在 DW 控件的 Construtor 事件里写代码:
This.ControlMenu = False
PB对窗体可以用代码进行最小化最大化等操作,但对 DW 控件却没有。只能通过调用 API 来实现。
API 函数:
Function ulong ShowWindow(ulong hwnd,ulong nCmdShow) LIBRARY "user32.dll"
参数说明:
hwnd : DW控件句柄
nCmdShow : 显示DW控件的方式,0-隐藏,1-最小化,2-最大化,3-恢复
例子:
ShowWindow ( handle ( dw_1 ) , 0 ) //隐藏 dw_1
ShowWindow ( handle ( ...
Event ID 含义 内容浅析 单选或多选按钮消息(前缀:pbm_bm) pbm_bmgetcheck 单选按钮或多选按钮是否被选。 pbm_bmgetstate 按钮是否加亮。 pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然。 pbm_bmsetstate 加亮或不加亮按钮。 pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框。 单选或多选按钮通知消息(前缀:pbm_bn) pbm_bnclicked 按钮控件被点中。 ...
CONSTANT LONG WM_NCACTIVATE = 134
Send(Handle(dw_1),WM_NCACTIVATE,0,0)
今天学习到一招:
//-----------------------------------------------------------------------------
CONSTANT LONG WM_NCACTIVATE = 134
Send( Handle(dw_1) , WM_NCACTIVATE , 1 , 0 )
//-----------------------------------------------------------------------------
这里我介绍一种很常用,也比较Professor的权限控制思路。这里我用java语言描述,其实都差不多的。自己转一下就可以了。为了方便,我们这里定义a^b为:a的b次方这里,我们为每一个操作设定一个唯一的整数值,比如:
删除A---0修改A---1添加A---2
删除B---3修改B---4添加B---5。。。
理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。
这样,如果用户有权限:添加A---2;删除B---3;修改B---4那用户的权限值 purview =2^2+2^3+2^4=28,也就是2的权的和了(之前打错了)。化成二进制可以表示为11100这样,如...
1、使用机器码控制:
大多数打印机指令使用控制码 Escape 作为其指令序列的第一个序列码
设置换行量(行距)1/8 英寸 ASCII码: ESC 0 十进制码: 27 48
设置以行为单位的页长 ASCII码: ESC C n 十进制码: 27 67 n ...
刚下了一个用 Office 的 OCX 控件做的 XP 风格菜单的例程,结果在我的 windows 2003 上运行出错。郁闷。
仔细研究了 SetToolbarPos()函数,问题已得到解决。
问题解决方法:
1、对每一个工具条的 ToolBarItemBarIndex 值必须 设置为 不一样,否则没有效果;
2、SetToolbarPos( )函数有两种使用方法:
(1)、SetToolbarPos ( toolbarindex, dockrow, offset, insert ) (2)、SetToolbarPos ( toolbarindex, x, y, width, height )
这里我使用的第(1)种,其中 toolbarindex 表示 “要设置的工具条的索引”,...
今日偶得一记事本,妙哉妙哉。