WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报错自动关闭解决办法

合集下载

PB数据窗口技巧问答

PB数据窗口技巧问答

PB数据窗口技巧问答数据窗口是PowerBuilder中用于显示、获取和更新数据库表格的对象之一、在使用数据窗口进行数据操作的过程中,有一些技巧和常见问题需要注意和解决。

以下是对数据窗口技巧和问答的详细介绍。

1.如何在数据窗口中添加一个新的数据库表格?可以通过以下步骤在数据窗口中添加一个新的数据库表格:(2) 选择“Insert”菜单,然后选择“Tables”子菜单。

(3)在弹出的对话框中选择要添加的数据库表格,然后点击“OK”按钮。

2.如何在数据窗口中显示特定的数据列?可以通过以下步骤在数据窗口中显示特定的数据列:(2) 在画布区域中右键点击并选择“Insert”菜单,然后选择“Columns”子菜单。

(3)在弹出的对话框中选择要显示的数据列,然后点击“OK”按钮。

3.如何在数据窗口中设置筛选条件?可以通过以下步骤在数据窗口中设置筛选条件:(2) 在画布区域中右键点击并选择“Filter”菜单。

(3)在弹出的对话框中输入要设置的筛选条件,然后点击“OK”按钮。

4.如何在数据窗口中设置排序条件?可以通过以下步骤在数据窗口中设置排序条件:(2) 在画布区域中右键点击并选择“Sort”菜单。

(3)在弹出的对话框中选择要设置的排序条件,然后点击“OK”按钮。

5.如何在数据窗口中添加计算列?可以通过以下步骤在数据窗口中添加计算列:(3)在弹出的对话框中输入计算列的表达式和名称,然后点击“OK”按钮。

6.如何在数据窗口中设置格式化?可以通过以下步骤在数据窗口中设置格式化:(2)在画布区域中选择要设置格式化的数据列。

(3) 在属性窗口中选择“Format”选项卡,然后选择要应用的格式化类型和样式。

7.如何在数据窗口中执行增、删、改操作?可以通过以下步骤在数据窗口中执行增、删、改操作:(1) 在数据窗口画布区域中右键点击并选择“Insert”菜单,然后选择“Rows”子菜单来添加新的行。

(2) 在数据窗口画布区域中右键点击并选择“Delete”菜单来删除选定的行。

数据库工程师:在PB中用OLE存取blob类型数据(二)

数据库工程师:在PB中用OLE存取blob类型数据(二)

4、处理blob类型数据 对于⼤⼆进制数据,在PB Script中是⽤blob数据类型表⽰并加以处理。

标准SQL语句中的select、insert和update语句⽆法直接查询blob类型的数据,在PB中操作blob类型的数据只能⽤专⽤的语句,从数据库中查询blob类型的数据的命令是: selectblob restofselectstatement {using transactionobject}; 更新数据库中blob类型数据的格式是: updateblob tablename set blobcolumn = blobvarible restofupatestatement {using transctionobject}; 如连接的数据库是sybase或者Sql,则selectblob和updateblob语句要求数据库的⾃动提交⽅式为true,所以在在每次调⽤selectblob和updateblob语句以前必须⽤命令 Sqlca.autocommit=true,把数据库的⾃动提交⽅式设置为true,在updateblob语句的结束后,再⽤命令Sqlca.autocommit = false,把⾃动提交⽅式设置为false。

索数据的参数(如flag),然后在可修改列的Protect后的框中输⼊(user_name是该DataWindow中的⼀列,代表输⼊者的名称): 5、数据窗⼝的blob列 5.1 数据窗⼝blob列的功能 在PB 的datawindow画板中DBOLE控件允许⽤户利⽤这个控件浏览和操作数据库中的⼤⼆进制数据,即通过DBOLE控件可以作如下操作: 往数据库中存储⼤⼆进制数据,如:excel⼯作表、word⽂档、视频⽂件、图⽚⽂件等各种格式的⽂件; 从数据库中检索数据到datawindow对象; 使⽤OLE服务器程序察看修改数据; 将修改后的数据保存回数据库; 5.2 在数据窗⼝中添加blob列的的步骤 1)选择具有⼆进制字段的数据表作为数据源建⽴⼀新的数据窗⼝(该窗⼝可以⾄少需要包含⾮数据库表的标识列) 2)选择insert -control-OLE database blob 菜单,在数据窗⼝的detail节中要插⼊blob列的位置单击⿏标,这时将显⽰如图1所⽰的对话框 下⾯解释这些属性的具体含义 1)client class:客户类名,默认为datawindow 2)client name:客户名,默认为untitled 3)table: 选择含有blob列的数据库表,所选表的字段将出现在右侧的large binary/text column列表框中。

如何在PB中启动控制面板及其控制项

如何在PB中启动控制面板及其控制项

如何在PB中启动控制面板及其控制项(深圳:独孤求败2003-05-27)关键:函数RUN()启动控制面板及其中的控制项可以使用API实现,但也可以通过简单的调用对应程序来实现。

调用控制面板:Run("rundll32.exe shell32.dll,Control_RunDLL")注意:大小写其他的控制举例如下:设置时间/日期:Run("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0")进行拨号连接:Run("rundll32.exe rnaui.dll,RnaDial 连接名称,1")设置邮件/传真:Run("rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl")显示打印机属性:Run("rundll32.exe shell32.dll,Control_RunDLL main.cpl @2")口令:Run("rundll32.exe shell32.dll,Control_RunDLL password.cpl")打开方式:Run("rundll32.exe shell32.dll,OpenAs_RunDLL pathfilename")网络:Run("rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl")字体属性:Run("rundll32.exe shell32.dll,Control_RunDLL main.cpl @3")。

PB如何连接ORACLE数据库

PB如何连接ORACLE数据库

PB如何连接ORACLE数据库如果你已经是个PowerBuilder高手,那么下面的东西对你来说毫无价值,你大可不必再看下去,如果你刚刚步入PowerBuilder的殿堂,那么下面的东西对你来说可能有点价值,你应该看一看。

作为一个优秀的客户端开发工具,PowerBuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过ODBC或者PowerBuilder自带的DB Profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是P owerBuilder本身的原因,比如在安装PowerBuilder时的选项、ODBC的版本之类;也可能是在安装客户端的Oracle、Sybase、Informix、SQL Server等软件上的问题,下面就从最根本的ODBC配置开始,教你一步步如何连接上数据库。

ODBC数据源的配置进入控制面板,打开ODBC数据源(32位),如图1所示,点击“ADD”按钮,进入OD BC数据源的配置面板,如图2所示:选择“Oracle ODBC Driver”一项,注意当前版本号为“8.00.0400”,如果你的操作系统中安装的是Oracle7,则相应的版本号会不同。

提醒一点:在Windows98操作系统上是无法安装Oracle8.0.4的(只能安装Oracle7.2.3),Oracle8.0.5则没有试过。

因而会有一些使用者在Windows98系统上无法正常配置ODBC数据源,因为Windows98本身自带的OD BC数据源已经比Oracle7数据源版本要高,无论你怎样配置ODBC,系统总会提示你要安装一个更高版本的Oracle,自然你就无法配置ODBC了,有一个解决方法就是用PB7第二张光盘上的ODBC安装程序覆盖系统中的ODBC,或者把你的操作系统改为Windows95/97算了。

然后进入“Oracle8 ODBC Driver Setup”设置,在“Data Source Name”一项中随便输入一个名字,在“Data Source Service Name”一栏中输入Oracle连接数据库的字符串名,这可以在你安装的Oracle目录中的Tnsnames.ora文件中查看到(Oracle7安装路径为“ORAWIN95\NETWORK\ ADMIN”;Oracle8安装路径为“ora win95\NET80\ADMIN”),或者你通过“SQL Net Easy Configuration”新添加一个数据库连接配置,将配置中的字符串填入即可,其他的就不必再填入,避免出现画蛇添足之错,反而连接不上数据库了。

PB的OLE编程

PB的OLE编程

PB的OLE编程技术OLE,全称Object Linking and Embedding,即对象链接和嵌入技术,是Windows系统中允许应用程序共享数据和程序功能的一种标准的便利方法。

在PowerBuilder中,在窗口画板上,可以放置OLE控件,把Windows系统内注册的OLE 对象嵌入到界面中,该控件是被嵌入的对象的容器,用户能激活该OLE对象,调出产生它的原始服务程序,可视化编辑修改。

也能用编程的方法,在内存中创建对象,连接到服务程序,调用相应功能,设置对象的各种属性。

这种方法不可视地操作对象,发送命令,并不需要在窗口中放置一个OLE控制,叫做“OLE自动化”。

在这种情况下,还可以设置服务程序的可视属性为“True”,让服务程序显示在用户面前。

在PowerBuilder中,OLEObject对象类型是专门用于“OLE自动化”的。

OLEObject是个动态对象类型,这意味着编译器会接受这个对象的任何属性、方法和参数列表,PowerBuilder不知道你调用的属性和方法是否有效,而是把它留给服务程序自己去判断,如果确实没有,就会在运行的时候报错。

使用OLEObject对象变量编程,少不了如下四步:1.声明变量,创建对象OLEObject myoleobjectmyoleobject = CREATE OLEObject2.连接到某个具体的OLE对象myoleobject.ConnectToObject … 或者myo leobject.ConnectToNewObject …3.利用OLE服务器的属性和方法操作该对象myoleobject.property = … /* 属性 */myoleobject.function(…) /* 方法 */4.断开和OLE对象的连接,销毁对象,释放内存。

myoleobject.Quit()myoleobject.DisconnectObject()Destroy myoleobject这种用编程的方法操作OLE对象,应用非常普遍。

PowerBuilder控件使用手册

PowerBuilder控件使用手册

PB控件使用介绍一、PB中使用Microsoft Web Browser控件步骤:在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。

常用函数:(对这个ole控件取名叫ole_web)ole_web.object.navigate(string ls_url) file://浏览某url,譬如:ole_web.object.navigate('') 就是浏览 页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。

ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)ole_web.object.goforward() file://前进,同上常用事件:documentcomplete : url请求的页面完成;downloadcomplete:url中请求的下载完成;常用属性:ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整ole_web.object.height:同上ole_web.object.offline:离线方式,true,false两者之一你甚至可以用pb写出一个和ie类似的界面用来进行浏览网页或图片。

二、在程序中打印在程序中如何提供打印功能呢?这里有三种调用打印函数的格式可供选择。

1. 对数据窗口控制或者数据窗口可以使用这种打印格式。

DATAWINDOWNAME.Print(cancel_window)这里cancel_window 是一个布尔值,它指出是否要显示一个用户可以用来中止打印动作的窗口。

PB-串行接口

PB-串行接口

PB是一个非常好的数据库管理系统的开发工具。

它能够处理纷繁复杂的数据、提供优异的报表集成方式,并且具有灵活、友好、方便和快捷等特点,非常适用于不同的数据库管理系统。

但是,许多应用程序既包含了复杂的数据处理,又需要进行计算机通信的控制,如门禁系统、点名系统以及接见系统等。

这些应用程序中必须使用计算机的串口进行通信,而PB没有直接控制计算机串口的控件; 而VB中虽然带有串口控件,但是对于习惯使用PB的程序员来说,使用VB来处理大量复杂数据有时会感到不便。

笔者在实际工作中利用OLE调用Mscomm.ocx控件,方便地解决了PB中的通信控制问题。

一、解决方法1.在窗体中新建一OLE控件,在出现的“Insert Object属性”窗口中选择“Insert Control Tab”选项卡,在“Control Type”选项中选择“Microsoft Communications Control”选项(如果没有,说明此机器未注册安装此控件,安装注册的具体方法我们将在下面做详细的介绍),点击“OK”按钮后将控件放在窗体中任一位置(因为控件在实际运行时是不可见的,可以任意放置),系统中出现“Mscomm”控件图标,给此控件命名为“OLE_comm”。

图1 “OLE Custom Control”对话框图2 “Control Properties属性”对话框2.控件的属性设置可以在“OLE Custom Control”对话框中的“OLE Control Properties”按钮中进行设置(如图1所示),您也可以鼠标右击控件菜单的“OCX Properties”选项,进入“Control Properties属性”对话框(如图2所示)。

笔者推荐您最好在程序中使用编码设置,这样更加便于控制。

例如,在窗口OPEN事件中编程。

ole_comm.object._CommPort = 1ole_comm.object.Settings = "57600,n,8,1"ole_comm.object.InputLen = 0ole_comm.object.InBufferSize = 90ole_comm.object.OutBufferSize = 60ole_comm.object.SThreshold = 0ole_comm.object.RThreshold = 9ole_comm.object.Handshaking = 0ole_comm.object.PortOpen = Trueole_comm.object.InBufferCount = 0ole_comm.object.DTREnable = true其中:CommPort 设置并返回通信端口号。

【3】PB浏览器页值取值与赋值

【3】PB浏览器页值取值与赋值

PB中使用Microsoft Web Browser控件步骤:在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。

常用函数:(对这个ole控件取名叫ole_web)ole_web.object.navigate(string ls_url) file://浏览某url,譬如:ole_web.object.navigate('') 就是浏览 页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。

ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)ole_web.object.goforward() file://前进,同上常用事件:documentcomplete : url请求的页面完成;downloadcomplete:url中请求的下载完成;常用属性:ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整ole_web.object.height:同上ole_web.object.offline:离线方式,true,false两者之一-----------------------------------------------------------------------------------------------------打开某个网页:ole_1.object.Navigate("", '', '', '', '')当然如果你要做更加复杂的工作,这些是不够的---------------------------------------------------------------如果你对javascript,dhtml熟悉的话,对下边很容易理解:通过pb中的browser 可以看到浏览器控件中有个对象ole_1.object.document.相当于网页中的document 对象,由此可以在pb中得到和操纵许多document的属性,甚至还可以利用Document.parentWindow得到一些window对象的属性,例如:ole_1.object.Document.parentWindow.image2.value如果要触发某个控件(id 为image4)的click事件ole_1.object.Document.parentWindow.image4.click()ole_1.object.document.forms.length 来得到有几个formole_1.object.document.forms[0].name 得到名称ole_1.object.document.forms[0].submit() 根据名称提交ole_1.object.document.forms[i].Submit.click()遍历font的tag:oleobject ole_all,ole_fontole_all= ole_1.object.document.body.allole_font =ole_all.tags("FONT")messagebox("",integer(ole_font.length))改变网页背景色:ole_1.object.Document.body.background=""ole_1.object.Document.body.bgcolor=rgb(rand(255),rand(255),rand(255))得到网页源码ls = ole_1.object.document.documentElement.outerHTML前进,后退:ole_1.object.GoBack()ole_1.object.GoForward()或者:ole_1.object.document.parentWindow.history.back()ole_1.object.document.parentWindow.history.forward()怎么相应点击网页的事件?在clicked事件中加入:ls_tagName=ole_1.object.document.activeElement.tagNameif upper(trim(ls_tagName))="A" then //同理可以对INPUT等响应ls_name = ole_1.object.document.activeElement.idls_a=ole_1.object.Document.activeElement.href//然后在这里根据链接的id或者href choosecaseCHOOSE CASE ls_nameCASE "A_test"//do somethingEND CHOOSEend if怎么查找网页中document对象属性?最好的办法就是用我们的pb8,新建web target,加入并且打开一个网页,在左边tab页选中page-〉client side,从树中就可以查到网页中document对象的属性方法,直接copy下来修改修改就可以用了。

PB中数据窗口的精确页面打印技术

PB中数据窗口的精确页面打印技术

到第二个数据窗口,然后用
print()函数打印第二个数据窗口。
1)Describe获取数据窗口特定属性值
语法:dwcontrol.Describe(propertylist) 参数:dwcontrol数据窗口(或datastore)控 件名。 propertylist用字符串表示的数据窗口属性。 返回值:返回一个表示属性的字符串。 数据窗口属性值也可以用 dwcontrol.object.Datawindow.property来完成直接取得。 2)Modify修改数据窗口特定属性 语法:dwcontrol.Modify(modstring) 参数:dwcontroldwcontrol数据窗口(或datastore)控 件名。 modstring用字符串表示的数据窗口属性。 返回值:如果函数执行成功返回“1”。 与Describe类似, 修改数据窗口属性可以用: dwcontrol.object.Datawindow.property=value直 接赋 值。 3)与打印YOU关的数据窗口属性 数据窗口属性中与打印YOU关的YOU24个,其中实现打印页 面控制的几个属性是: Copies:打印份数。 Filename:如果不为空,表示输出到文件的文件名。 Orientation:打印方向1=横向,2=纵 向 Page.Range:输出页范围,要打印1,2,和5到10 页,输入: "1,2,5-10"。Page.RangeInclude:本 次打印范围,0=全部, 1= 偶数页,2= 奇数页。Paper.Size:纸张大小。 Scale:打印比例。 程序中利用Modify函数设置好这些属性后,即可实现动态 修改数据窗口的目的,再调用datawindow.print()函数,完成 最后的打印输出。 一个通用Datawindow打印控制程序 将数据窗口中的报表在打印机上输出是PowerBuilder应

WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报错自动关闭解决办法

WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报错自动关闭解决办法

WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报错自动关闭解决办法(说明:在网上搜了一些办法,都没解决,一是每个电脑不同,再就是权限不同,总结个人电脑win7下不同管理员账户登陆时的解决方案,本人电脑上PB9和PB10两个都已安装)试试这个方法:原理分析当我们点击OLE控件中的insert control时,pb会搜索那些控件可用,并且在PB中显示出来。

PB搜索控件的位置为:注册表中的"HKEY_CLASSES_ROOT\CLSID"下的子项(为DLL、OCX文件注册信息)搜索到保存的位置在:"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLE ObjectBitmaps\..."也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。

解决办法:(一)运行注册表(命令为regedit)(二)在注册表中找到“HKEY_CLASSES_ROOT\CLSID”并导出保存为CLSID.REG,并且用记事本打开(三)在注册表中找到"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLE Object Bitmaps\..."中的最后一个子项,比如为“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,证明这个子项前的控件都是正确的。

(四)在用记事本打开CLSID.REG,并且搜索OLE Object Bitmaps最后一个子项比如为:“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,一直往下查找,直到提示查找不到为止,到此为止,记事本以上的控件都是正确的。

pb中 的singlelineedit控件 使用方法

pb中 的singlelineedit控件 使用方法

pb中的singlelineedit控件使用方法在pb中,SingleLineEdit控件是一个非常常用的控件,它用于输入单行文本。

下面我将详细介绍SingleLineEdit控件的使用方法。

在pb中创建SingleLineEdit控件非常简单。

首先,打开你的项目,然后在界面设计器中添加一个控件箱(Container)。

在控件箱中,你可以拖拽SingleLineEdit控件到界面上。

SingleLineEdit控件有很多属性可以设置,比如文本颜色、背景颜色、字体等等。

下面是一些常用的属性及其设置方法:1.Text属性:用于设置SingleLineEdit控件的文本内容。

你可以直接在属性窗口中输入文本,或者使用代码设置文本。

2.MultiLine属性:这个属性决定SingleLineEdit控件是否允许输入多行文本。

如果你不想让用户输入多行文本,可以将MultiLine 属性设置为False。

3.Alignment属性:这个属性用于设置SingleLineEdit控件文本的对齐方式。

你可以设置Left、Right、Center等值。

4.BorderStyle属性:这个属性用于设置SingleLineEdit控件的边框样式。

你可以选择实线边框、虚线边框、无边框等样式。

5.Font属性:这个属性用于设置SingleLineEdit控件的字体。

你可以选择不同的字体类型和大小。

使用SingleLineEdit控件的方法非常简单,只需要在代码中获取该控件的引用,然后使用各种方法来操作它即可。

下面是一些常用的方法:1.SetFocus()方法:将焦点设置到SingleLineEdit控件上,这样用户就可以开始输入文本了。

2.GetText()方法:获取SingleLineEdit控件中的文本内容。

3.AppendText()方法:向SingleLineEdit控件中追加文本内容。

4.DeleteText()方法:删除SingleLineEdit控件中的文本内容。

WINSOCK控件在PB中的使用

WINSOCK控件在PB中的使用

下面以一个简单程序为例,说明WINSOCK控件在PB中的使用:一、在窗口中添加WINSOCK控件:在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。

在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。

二、设置信息输入输出文本框:在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入要发送的字符串和接受对方发送的字符串。

三、设置通讯协议:WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。

1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑定remotehost和remoteport属性,如果需要双向通讯,还要设置localport属性。

在甲方(本机地址为:134.1.1.1)窗口的Open事件中加入如下语句:winsock_a.object.protocol=1//winsock通讯协议设为UDP协议winsock_a.object.remotehost="134.1.1.2"//对方的ip地址winsock_a.object.remoteport=6000//对方的winsock通讯端口号winsock_a.object.localport=6001//本机的winsock通讯端口号winsock_a.object.bind//绑定通讯协议在乙方(本机地址为:134.1.1.2)窗口的Open事件中加入如下语句:winsock_b.object.protocol=1//winsock通讯协议设为UDP协议winsock_b.object.remotehost="134.1.1.1"//对方的ip地址winsock_b.object.remoteport=6001//对方的winsock通讯端口号winsock_b.object.localport=6000//本机的winsock通讯端口号winsock_b.object.bin//绑定通讯协议2.TCP协议设置:TCP协议在通讯前需要进行连接。

WIN7环境里PB里面添加控件OLE选择insertcontrol选项卡就会报错自动关..

WIN7环境里PB里面添加控件OLE选择insertcontrol选项卡就会报错自动关..

WIN7 环境里PB‎里面添加控‎件OLE,选择ins‎ertco‎ntrol‎选项卡就会‎报错自动关‎闭解决办法‎(说明:在网上搜了‎一些办法,都没解决,一是每个电‎脑不同,再就是权限‎不同,总结个人电‎脑w in7‎下不同管理‎员账户登陆‎时的解决方‎案,本人电脑上‎P B9和P‎B10两个‎都已安装)试试这个方‎法:原理分析当我们点击‎O LE控件‎中的ins‎e rt contr‎o l时,pb会搜索‎那些控件可‎用,并且在PB‎中显示出来‎。

PB搜索控‎件的位置为‎:注册表中的‎"HKEY_‎C LASS‎E S_RO‎O T\CLSID‎"下的子项(为DLL、OCX文件‎注册信息)搜索到保存‎的位置在:"HKEY_‎C URRE‎N T_US‎E R\Softw‎a re\Sybas‎e\Power‎B uild‎e r\9.0\OLE Objec‎tBitma‎p s\..."也就是说p‎b搜索CL‎S ID的子‎项保存在O‎L E Objec‎t Bitma‎p s中,当搜索CL‎S ID中的‎D LL或O‎C X控件和‎P B有冲突‎时,CLSID‎后面的DL‎L、OCX控件‎就不会保存‎在OLE Objec‎t Bitma‎p s中,也就是说O‎L E Objec‎t Bitma‎p s没有完‎全加载所有‎控件,有的控件冲‎突导致中断‎使PB报错‎,找出冲突的‎控件是关键‎。

解决办法:(一)运行注册表‎(命令为re‎g edit‎)(二)在注册表中‎找到“HKEY_‎C LASS‎E S_RO‎O T\CLSID‎”并导出保存‎为CLSI‎D.REG,并且用记事‎本打开(三)在注册表中‎找到"HKEY_‎C URRE‎N T_US‎E R\Softw‎a re\Sybas‎e\Power‎B uild‎e r\9.0\OLE Objec‎tBitma‎p s\..."中的最后一‎个子项,比如为“0E59F‎1D5-1FBE-11D0-8FF2-00A0D‎10038‎B C”,证明这个子‎项前的控件‎都是正确的‎。

PB窗口使用技巧之使用窗口属性编程

PB窗口使用技巧之使用窗口属性编程

PB窗口使用技巧之使用窗口属性编程本文再详细介绍几个在编程中经常用到的窗口属性,主要有control[],menuID,WindowState和tag等。

属性tag可以应用于所有的控件、用户对象与菜单,用来保存和控件相关的文本。

因为文本可以随意设置,所以可以根据脚本的目的来设置各个控件的tag内容。

比如,需要显示各个控件的提示信息时,可以给每个控件的tag属性赋予描述控件功能的文本或者使用注意事项的文本;如果需要知道控件的类别,可以给每个控件赋予描述控件所属类别的文字(当然还有其他的方法)。

例如,下面的脚本可以显示frame的帮助信息:w_frame.SetMicroHelp(This.Tag)例如,下面的脚本可以根据tag的取值对各个控件进行初始化:Int li_index,li_totalDataWindow ldw_tempDropDownListbox lddlb_tempRadioButton lrb_templi_total = Upperbound(Parent.Control[])For li_index = 1 To li_totalChoose Case Lower(Parent.Control[li_index].Tag)Case 'DataWindow'ldw_temp = Parent.Control[li_index]ldw_temp.Reset()Case 'DropDownListbox'lddlb_temp = Parent.Control[li_index]lddlb_temp.SelectItem(0)Case 'radiobutton'lrb_temp = Parent.Control[li_index]lrb_temp.Checked = FalseCase Else…End ChooseNext上面的脚本中用到了窗口的Control属性。

Win7系统下Excel2010版本插入Calendar Control 11.0的方法

Win7系统下Excel2010版本插入Calendar Control 11.0的方法

Win7系统下Excel2010版本插入Calendar Control 11.0的方法1、选择excel的“文件”选项,然后选中“选项”:2、再选择“自定义功能区”,查看自定义功能区(B)下设框的“主选项卡”,找到“开发工具”勾选后按“确定”,关闭EXCEL。

3、下载“Mscal.OCX”控件,网上有很多,给个下载链接:/f/63648783.html,下载后把文件“Mscal.OCX”放在系统盘下设文件夹中:C:\windows\syswow64;在C:\windows\syswow64\cmd.exe上点右键,使用“以管理员身份运行”,打开CMD后输入“regsvr32.exe Mscal.ocx”,按回车,系统会提示已成功注册。

4、打开EXCEL,选择“开发工具”选项卡,选择“插入”,选择“其他控件”,弹出其他控件的对话框,选择“CalendarControl 11.0”,按“确定”。

如果没有找到“Calendar Control 11.0”,就选择“注册自定义控件”,查找到“Mscal.ocx”文件注册一下即可。

’5、点“确定”后,会出现画形状图时出现的“+”,鼠标左键点击打开的工作表的任意位置,会出现如下图所示的日历:此图显示该日历控件的名称为“Calendar1”。

6、按下Alt+F11,打开VBA的程序编辑界面,如下图:7、在代码输入框中加入如下代码:Private Sub Calendar1_Click()ActiveCell = Format(Calendar1.Value, "yyyy-mm-dd") '设置日期格式,此工作可以直接通过设置某列单元格格式一次性完成Calendar1.Visible = False '单击日历控件后隐藏之End SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Column = 4 Then 'D列为日期输入列,只对应excel的字母列,例如D对应4,'G对应7,不是实际的显示列对应的数字Calendar1.Left = Target.Left + Target.Width '设置日历控件弹出后的位置Calendar1.Top = Target.Top + Target.Height '同上Calendar1.Value = Date '设置默认日期为系统日期Calendar1.Visible = True '使日历控件可见ElseIf Target.Column = 3 Then 'E列为日期输入列Calendar1.Left = Target.Left + Target.WidthCalendar1.Top = Target.Top + Target.HeightCalendar1.Value = DateCalendar1.Visible = TrueElseIf Target.Column = 2 Then 'F列为日期输入列Calendar1.Left = Target.Left + Target.WidthCalendar1.Top = Target.Top + Target.HeightCalendar1.Value = DateCalendar1.Visible = TrueElseCalendar1.Visible = False '单击其他列时隐藏日历控件End IfEnd Sub点击“保存”,将出现如下界面:选择否,出现如下界面:在保存类型一栏,选择如图所示的“Excel启用宏的工作簿”,点击保存。

关于win7无法加入MSCOMM控件的解决办法

关于win7无法加入MSCOMM控件的解决办法

关于win7无法加入MSCOMM控件的解决办法
使用win7开发一直遇到很多莫名其妙的问题,如题就是,竟然提示无法插入,操作过程如下:
1.我使用的是VC6.0,有些老,不过比较熟悉而已,点Project->Add to project-> Components and contrls..
2.选择Registered ActiveX Controls文件夹下的Microsoft Communications Contrl,Version 6.0...选择插入
3.竟然提示如此的警告!让人郁闷
实在迫于无奈,我本想使用我以前建立好的MSCOMM.H和MSCOMM.CPP来使用串口控件,但是在可视化界面我找到了另外的方法可以插入。

如下所示:
1.在对话框处按右键,选择Insert ActiveX Contrl...
2.这时我这里出现了这个问题,可能你们不会遇到吧,我这里选取消,继续
3.取消后,可以选择插入的控件了,哈哈,其实串口控件早已注册
4.往下走,找到如图所示的控件名
5.点击OK即可完成插入了,效果如图所示:
问题的解决方法是多样的,这里只是其中一种解决办法。

PB中使用FORMULA ONE入门介绍

PB中使用FORMULA ONE入门介绍

PB中使用FORMULA ONE入门介绍2002-09-03 10:12作者:出处:责任编辑:在使用POWERBUILDER编程中,往往会遇到处理复杂表格的情况,这些表格数量很大,表格结构复杂,如用一般的FREEFORM风格的数据窗口来实现,则报表编程工作会占相当大的时间及精力,一旦报表格式略有改变,则程序的维护工作会很繁琐。

其实VISUAL COMPONENTS的FORMULA ONE就是一个与POWERBUILDER结合非常紧密的报表工具,我们可以从POWERBUILDER进入FORMULA ONE,还可以在POWERBUILDER下直接使用FORMULA ONE提供的各种函数,因为FORMULA ONE的文件小,与数据库的存取操作速度较快,所以建议使用它来制作报表。

下面详细介绍它的使用方法:一、安装及使用FORMULA ONEformula one在本站有下载,注意6.0版本安装过程中要输入序列号,否则使用时会告警。

安装完毕后,运行vcf1.exe可看到如上的程序环境,其文件后缀名为vts,它兼容中文,具备类似EXCEL的功能:如格式编排、制作表格线、移动和复制单元格、单元格的计算、画简单框图等等。

另外,FORMULA ONE中还具有上百种函数,可以在VISUAL C++、VISUAL BASIC、和POWERBUILDER中引用。

对此不再详细说明。

二、在POWERBUILDER窗口中加入一个OLE控件POWERBUILDER支持WINDOWS具备的对象连接与嵌入功能(即OLE功能),我们可以直接在窗口上放置OLE 2.0的控件,然后将WINDOWS支持的OLE对象连接到OLE 2.0控件中,这样就能在POWERBUILDER应用中利用OLE服务器的命令和函数完成对OLE对象的操作工作。

在POWERBUILDER的窗口中点中OLE图标:会出现“插入对象”对话框,选择insert control 标签项(如下图),在对象列表中选择Vci Formula One Workbook,按确定键后,选好插入位置点击鼠标,即加入了一个名为ole_1的OLE对象,在其上用鼠标右键选中OCX Properties项,在Show标签下可将Row Heading和Column Heading项取消选中,将Tabs的值由Bottom改为Off(如下图),加入的OLE对象就是一个没有行头、列头及标签的空白表格。

在Windows应用程序中添加ListControl控件的几种方法

在Windows应用程序中添加ListControl控件的几种方法

一、在Windows应用程序中添加ListControl控件的几种方法1、在对话框中添加控件:创建对话框应用程序,在资源视图中添加对话框。

如下图所示,在控件工具条中选择ListControl控件添加到对话框中,并调整控件尺寸。

在ListControl控件的属性页中设置控件样式(Styles)和扩展样式等。

为了显示详细数据信息,可以设置控件的显示风格为报表视图(Report)。

为了在对话框中使用控件,需要在ClassWizard中为对话框类添加控件成员变量,如下图所示:执行以上操作后,系统自动添加了一个ClistControl对象,并与ListControl控件资源关联,相关代码如下:// ListDialogDlg.h : header file......public:CListCtrl m_cListCtrl;......// ListDialogDlg.cpp : implementation file......void CListDialogDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CListDialogDlg)DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl);//}}AFX_DATA_MAP}......因为本例只为演示在对话框中添加ListControl控件,所以只在对话框初始化消息函数中添加了以下显示控件的示例代码(代码含义请参照MSDN文献):BOOL CListDialogDlg::OnInitDialog(){CDialog::OnInitDialog();......// TODO: Add extra initialization hereDWORD exstyle = m_cListCtrl.GetExtendedStyle();m_cListCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES |LVS_EX_CHECKBOXES | WS_EX_STATICEDGE );CRect rect;m_cListCtrl.GetClientRect(&rect);int nColInterval = rect.Width()/5;m_cListCtrl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);m_cListCtrl.InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);m_cListCtrl.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-4*nColInterval);m_cListCtrl.InsertItem(0,"name");m_cListCtrl.SetItemText(0,1,"value");m_cListCtrl.SetItemText(0,2,"time");......return TRUE; // return TRUE unless you set the focus to a control}2、在单文档视图中自行添加ListControl控件:创建单文档应用程序,如下图所示为视图类添加CListCtrl对象成员变量:如下图所示,在资源视图中打开String Table资源,在右键菜单中选择new string,为将要创建的ListControl控件添加资源编号:为创建和显示控件,在视图的初始化消息函数中添加如下代码:void CAddListView::OnInitialUpdate(){CView::OnInitialUpdate();// TODO: Add your specialized code here and/or call the base classm_cListCtrl.Create( LVS_REPORT,CRect(0,0,800,600),this,IDC_LISTCTRL);m_cListCtrl.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTAS CENDING);//m_cListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES); m_cListCtrl.ShowWindow(SW_SHOW);CRect rect;m_cListCtrl.GetClientRect(&rect);int nColInterval = rect.Width()/5;m_cListCtrl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);m_cListCtrl.InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);m_cListCtrl.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-4*nColInterval);m_cListCtrl.InsertItem(0,"name");m_cListCtrl.SetItemText(0,1,"value");m_cListCtrl.SetItemText(0,2,"time");}3、在ListView视图中显示ListControl控件:创建单文档应用程序,如下图所示,在选择窗口视图类型时,选择CListView视图:在视图类的初始化消息函数中添加如下显示控件的代码:void CTestlistView::OnInitialUpdate(){CListView::OnInitialUpdate();CDC* dc = GetDC();TEXTMETRIC tm;dc->GetTextMetrics(&tm);GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTAS CENDING);GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|L VS_EX_TRACKSELECT);GetListCtrl().InsertColumn(0,"Name",LVCFMT_LEFT,30*tm.tmAveCharWidth,0);GetListCtrl().InsertColumn(1,"Comment",LVCFMT_LEFT,70*tm.tmAveCharWidth,1);// TODO: You may populate your ListView with items by directly accessing// its list control through a call to GetListCtrl().}二、为ListControl控件添加消息处理函数1、关于ListControl控件消息在ListControl控件中有以下消息(通知)可以发送:NM_CLICK、NM_DBLCLK、NM_RCLICK、LVN_COLUMNCLICK、HDN_ITEMCLICK等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报
错自动关闭解决办法
(说明:在网上搜了一些办法,都没解决,一是每个电脑不同,再就是权限不同,总结个人电脑win7下不同管理员账户登陆时的解决方案,本人电脑上PB9和
PB10两个都已安装)
试试这个方法:
原理分析
当我们点击OLE控件中的insert control时,pb会搜索那些控件可用,并且在PB中显示出来。

PB搜索控件的位置为:注册表中的"HKEY_CLASSES_ROOT\CLSID"下的子项(为DLL、OCX文件注册信息)
搜索到保存的位置在:
"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLE Object
Bitmaps\..."
也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID
中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。

解决办法:
(一)运行注册表(命令为regedit)
(二)在注册表中找到“HKEY_CLASSES_ROOT\CLSID”并导出保存为CLSID.REG,并且用记事本打开
(三)在注册表中找到
"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLE Object Bitmaps\..."中的最后一个子项,比如为
“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,证明这个子项前的控件都是正确的。

(四)在用记事本打开CLSID.REG,并且搜索OLE Object Bitmaps最后一个子项比如为:“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,一直往下查找,直到提示查找不到为止,到此为止,记事本以上的控件都是正确的。

然后用关键字“ToolboxBitmap32”再往下搜索,找到第一个带“ToolboxBitmap32”和“control”关键字后,如图
证明这个出问题的控件为”C:\windows\system32\aliedit\aliedit.dll”然后在命令提示符中输入
进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。

如果提示找不到路径,则在“HKEY_CLASSES_ROOT\CLSID”把对应的整个子项删除。

一般只会有一两个控件有冲突,不用担心工作量会很大
也有一种情况,就是在记事本中找到的内容如下:
我们无法找到是哪个dll,这时去注册表CLSID 下面找到项
{a41a4187-5a86-4e26-b40a-856f9035d9cb},展开,选择toolboxbitmap32,在右侧的窗口中双击那一行数据,将数值数据后面加上“,1”,原来应该是没有“,1”的,点击确定。

打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。

注:在win7系统下,系统默认的登陆账户可能是不超级管理员,无法修改注册表的值。

会出现如下错误:
右击注册表中的项,选择权限,将用户赋上权限即可,如果赋值权限失败,则需要以超级管理员的身份登录,登录方法如下:
1、打开组策略(命令gpedit.msc)
2、选择计算机配置-Windows设置-安全设置-本地策略-安全选项,找到账户:
管理员账户状态:改为启用状态。

3、在开始菜单里选择切换用户,这时在切换用户页面会出现administrator用
户,用该账户登录后,打开注册表做相应的修改即可。

相关文档
最新文档