首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

为PB的TreeView实现同步选择

TreeView控件能够清晰地表示层次关系,因而赢得了众多程序员的喜爱。在TreeView编程中,常见的一个问题是同步选择(即选择一个节点时,同时选择该节点的所有子节点;不选一个节点,同时去除该节点的祖先节点选择标志)。 要实现这种效果,本来不难,只需要在检测到节点选择状态变化时,遍历节点的祖先或者后代节点进行同步即可。但是PB并没有提供检测节点选择状态变化的事件。怎么办呢? 让我们来看看PB中TreeView节点选择状态的表示。当TreeView的CheckBoxes属性为True时,每个节点包含一个复选框。选中复选框时,StatePictureIndex属性为2,未选中则为1。当选择某个节点时,首先触发TreeView的Clicked事件,处理完Clicke...
类别:程序开发 - PowerBuilder    查看:117    更新:2014-05-10

PB通用类库和业务类库的设计思想

在我们利用PB进行MIS系统开发时,有很多业务是通用的,并且有很多组件是可以复用的。为了提高MIS系统的开发效率,缩短开发周期,有必要把一些公用对象抽象出来,以便作二次开发。 这些通用的对象,一部分是针对基本功能进行扩充的,我叫它通用类库,采用加ufc_前缀的方式命名, 一部分是针对业务功能进行扩充的,采用加wfc_前缀的方式命名。以下先从整体上描述整个类库的框架, 然后在从具体的类库来描述各个模块。一、数据库框架我们假定现在有两个MIS系统需要开发,分别是"应用系统1"和"应用系统2",其中应用系统1中有两年的数据,分别是年份1和年份2。为了实现系统功能的同一管理和代码在最大可能的重用,我们...
类别:程序开发 - PowerBuilder    查看:106    更新:2014-05-10

Pb6中的串行通信(MSCOMM32.OCX)完全解

 本文给出一个在PB6中如何采集串行口数据的实例及MSCOMM32.OCX控件的一些基本知识。一:问题描述本文解决的是采集磅房的磅值读取问题。磅秤和计算机(COM1/COM2)之间使用RS-232标准串行线相连。波特率为1200,数据格式如下:每100ms发送一组数据,每组数据有5帧,每帧11位,1位起始位(0),8位数据位(D0-D7),2位停止位(1),无奇偶校验.定义如下:第1帧:D0—D7 ----0FFH(起始位)第2帧:D0—D2 ----为小数点位置(0-5)D3 -----NCD4 -----1表示称重稳定 0表示称重未稳定D5 -----1表示称重为负 0表示称重为正D6 -----NCD7 -----1表示超载第3帧:D0—D7 ----BCD1(称重值)第4帧:D0&mdash...
类别:程序开发 - PowerBuilder    查看:107    更新:2014-05-10

给pb的listview或者treeview控件加上背景图

此文章献给想美化程序界面的pb程序员。一.载入位图资源并创建PatternBrush作为填充背景图的刷子long ll_bmplong h_deskdclong ll_memDcif ih_BkBrush>0 thendeleteObject(ih_BkBrush)ih_BkBrush=0end ifh_deskdc =GetDc(0)//载入图片ll_bmp = LoadImage(0,BMPBkName,0,0,0,16)//失败if ll_bmp = 0 then releaseDc(0,h_deskdc)return end ifll_memDC = CreateCompatibleDC(h_deskdc)//选入到场景SelectObject(ll_memDC,ll_bmp)//创建绘制背景图的刷子ih_BkBrush =CreatePatternBrush(ll_bmp)//释放不需要的资源releaseDc(0,h_deskdc)Deleteobject(ll_bmp)DeleteDc(ll_memDC)二.给listview加背景图1.得...
类别:程序开发 - PowerBuilder    查看:109    更新:2014-05-10

如何在pb中创建COM组件,并在asp中调用并返回结果集?

启动pb7.0,创建一个不可视的用户对象"uo_customer",新建"object",选择"custom class" 类型,点击"ok"。 在新创建的用户对象中编写如下程序: 1.声明实例变量"instance variables",对于com中不支持的类型,请声明为protected类型。protected: datastore ds_datastore 2.新建三个成员函数: int uf_connect()//用于连结数据库与创建datastore对象。 代码: sqlca.dbms="odbc" sqlca.database="webdw" sqlca.autocommit=false sqlca.dbparm="connectstring=''dsn=webdw;uid=dba;pwd=sql''" connect using sqlca; ds_datastore =create datastore if sqlca.sqlcode=...
类别:程序开发 - PowerBuilder    查看:83    更新:2014-05-10

如何在PB9中调用WebService

pb9也出来了,速度够快的,大概看了一下,与pb8比较,增加的功能不多,主要是WebService,Xml和Ejb.我就感受了一下pb9的WebService功能,与大家共享。 我们用一个实例来说明: 新建应用,这些步骤与pb8一致的。然后建立一个WebService Proxy Wizard,下一步会提示你输入WSDL文件,点击浏览选择,假设是C:inetpubwwwroot的service1.wsdl文件。点击下一步,会自动出现WSDL文件中的Service.点击下一步,系统默认选择ServiceSoap,紧接着输入proxy name(代理对象名),输入test_ws.后面的几项按默认即可。 完成后是编译代理对象的界面。会出现: Web Service Generator Project Status Deployment PBL: E:programpbwebse...
类别:程序开发 - PowerBuilder    查看:108    更新:2014-05-10

PB6实现Browser/Server结构的Internet解决方案和工作方式

PowerBuilder 6.0实现“Web浏览器-数据库服务器”方案的前提条件是构建分布式应用体系。将 Powerbuilder6.0应用分布到Internet结构下,也就是把PowerBuilder 6.0客户端应用分布到Web服务器上,当浏览器客户端向Web 服务器发出服务请求时,Web服务器自动调用Powerbuilder应用软件系统, 从而实现各种业务软件的Internet结构功能。   一、组成Browser/Server结构的模块结构。   由上图所示, 用 Powerbuilder6. 0 开发的各种基于Internet的应用,是利用PowerBuilder6.0 提供的分布式应用技术及PowerScripts编程技术来实现的,相当于编写分布式应用环境下的服务器应用。例如采用PowerScripts语言环境、数据窗口技...
类别:程序开发 - PowerBuilder    查看:95    更新:2014-05-10

PB中对INI文件读写的补充函数(删除指定的节或者指定节中某个项)

我们在使用PB的INI函数读写INI文件时,有时也可能需要动态地删除某个节或者某个项,此函数即完成此功能。此函数是从PFC里分离出来的,希望对大家有用。$PBExportHeader$pfc_delprofilestring.srf$PBExportComments$Delete SECTION or KEY in INI fileglobal type pfc_delprofilestring from function_objectend typeforward prototypesglobal function integer pfc_delprofilestring (string as_file, string as_section, string as_key)end prototypesglobal function integer pfc_delprofilestring (string as_file, string as_section, string as_key);// Function: of_Delete// Arguments: // as_file T...
类别:程序开发 - PowerBuilder    查看:118    更新:2014-05-10

PB7.0通用选字段查询窗口的设计

本文介绍一个在PB7.0下实现的通用查询窗口,可实现对任意表的查询,输出字段、排序字段、查询条件都可以随意指定。功能丰富,使用方便、灵活,可挂接到任何PB应用软件中,从而大大提高软件的开发效率。 本文是《PB7.0通用全字段查询技术》(计算机世界周报2000年第3期)的姊妹篇。两篇文章介绍的技术方案不同,做出查询窗口的风格、形式和用法也不同,可同时使用,丰富系统功能。 在PB7.0中,数据库中表的内容通常用数据窗口对象显示输出,而数据窗口对象一般都要事先建立。能不能在程序运行过程中根据用户指定的字段,动态建立数据窗口对象,进一步,再通过用户指定的条件对记录进行过滤,达到查询的目的?回答是肯定的。我们设计了一个...
类别:程序开发 - PowerBuilder    查看:89    更新:2014-05-10

怎样在PB中调用外部程序并判断其运行结束

在PB中经常要调用外部程序并等待此程序运行结束后显示相关信息。如我们要备份Adaptive Server Anywhere 6.0数据库,在备份结束后显示"备份完成!"的提示信息,如果在调用备份程序dbbackup后马上用messagebox显示提示信息,那么程序运行时则会出现这种情况: dbbackup备份程序还在运行,"备份完成!"的提示就已经显示了,显然不符合我们的设想。对于这种情况,我们可以借助API函数FindWindowA()、IsWindow()和PB本身函数yield()来解决。 声明API函数: Function long FindWindowA (String lpClassName , String lpWindowName ) Library "user32.dll" Function boolean IsWindow (L...
类别:程序开发 - PowerBuilder    查看:78    更新:2014-05-10

如何在PB中实现串口编程

可以使用mscomm32.ocx控件 脚本如下: String ls_data //使用COM1端口。 ole_1.object.CommPort = 1 //设置速率为9600,无奇偶校验,8 位数据,一个停止位。 ole_1.object.Settings = "9600,N,8,1" //读入整个缓冲区的数据。 ole_1.object.InputLen = 0 打开端口 ole_1.object.PortOpen = True //发送attention命令 ole_1.object.Output = "ATV1Q0" + char(13) //等待数据。 Do Yield() //从Com端口取数据 ls_data += ole_1.object.Input LOOP Until(Pos(ls_data, "OK" + char(13) + char (10)) > 0) //向Com端口发送数据使用Output方法 ole_1.Object.Output = ls_data //关闭...
类别:程序开发 - PowerBuilder    查看:98    更新:2014-05-10

用PB实现Windows2000下的自动关机

在Windows2000中关机与在Windows98中不一样,需要首先获得权限,然后调用关机API函数,才能关机。以下是具体的步骤: 第一步: 声明结构 ----------------------------------------------------------------------- 需要声明三个结:LUID, LUID_AND_ATTRIBUTES, token_privileges LUID long lowpart long highpart LUID_AND_ATTRIBUTES luid pLuid long Attributes token_privileges long privilegecount luid_and_attributes privileges[] 第二步: 声明外部扩展函数 ----------------------------------------------------------------------- FUNCTION ulong ExitWindowsEx(ulon...
类别:程序开发 - PowerBuilder    查看:110    更新:2014-05-10

PB中表的修改对数据窗口和报表的影响的解决办法

数据窗口(DataWindow)是PB最强大的功能之一,Datawindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式和快速的报表制作能力。 深受PB开发者的喜爱。但一件产品不可能十全十美,DataWindow也有不少缺点,其中对datawindow的所关联的数据表的一些变动,可能就会使辛辛苦苦做出的数据录入、维护界面、报表得重新做,特别是复杂中国式的报表,是令许多开发人员头痛的事情,而在其它开发语言如Delphi就不会存在此类问题。现在采用原型模型的开发的不少,使得开发中表的修改变得比较平常,为了解决已做的报表、数据界面主体不必重做,下面提出一些解决的方法,希望能对碰到此类问题的开发人员有所帮助,同时...
类别:程序开发 - PowerBuilder    查看:118    更新:2014-05-10

PB用纯函数实现在数据窗口中模拟资源管理器鼠标单击动作动态排序,并显示排序箭头

//函数名:f_dwsort(datawindow fdw_dw,dwobject fdwo_dwo) return none//说明:用于在数据窗口中模拟资源管理器鼠标单击动作动态排序,并显示排序箭头//调用规则:在数据窗口控件clicked!中写入f_dwsort(this,dwo)//参数:fdw_dw datawindow// fdwo_dwo dwobject//返回值:无//autor:xiaoluoxy萧云String ls_clicked_pos,ls_col,ls_format,ls_tagLong ll_posstring ls_text,ls_column[]int li_ils_clicked_pos = fdwo_dwo.Namell_pos = Pos(ls_clicked_pos,'_t')If ll_pos >0 Then//设置排序ls_col = Left(ls_clicked_pos,ll_pos -1)ls_tag = fdwo_dwo.tagIf ls_tag = ls_col + "A" Thenfdwo_dwo.tag = ls_col + "D"...
类别:程序开发 - PowerBuilder    查看:126    更新:2014-05-10

如何在PB下实现圆形的窗口

API调用,最近看了一些API的资料,收益挺大的,小竹.... 首先在窗口定义下列局部外部函数(Local External Functions...) FUNCTION ulong CreateEllipticRgn(ulong X1,ulong Y1,ulong X2,ulong Y2) LIBRARY "gdi32.dll" FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY "user32.dll" 在窗口的open事件中加上: long hrgn long lres hrgn=createellipticrgn(20,20,400,400)//其中参数为左上到右下的坐标值,可修改。 lres=setwindowRgn(handle(this),hrgn,true) //记得在窗口中放置一个按钮关闭窗口 //在窗口处放置一幅图片即可实现圆形的窗...
类别:程序开发 - PowerBuilder    查看:77    更新:2014-05-10

如何在PB中切换中英文输入法数

函数声明: function boolean ImmSimulateHotKey (ULong hWnd, ULong dwHotKeyID) library "IMM32.dll" function ulong GetKeyboardLayout(ulong dwLayout) LIBRARY "user32.dll" function boolean ImmIsIME(uLong hklKeyboardLayout) library "IMM32.DLL" 脚本如下: constant int IME_THotKey_IME_NonIME_Toggle=112 ulong hklCurrent ulong hnd //切换到英文输入法 hklCurrent=GetKeyboardLayout(0) if ImmIsIME(hklCurrent) then hnd=Handle(parent) ImmSimulateHotKey(hnd,IME_THotKey_IME_NonIME_Toggle) end if //切...
类别:程序开发 - PowerBuilder    查看:97    更新:2014-05-10