用PB创建Internet应用
- 格式:doc
- 大小:30.00 KB
- 文档页数:4
实验三在PB中实现第一个应用程序XXXXXXXXXX 大学霸实验目的:1.熟悉PB8.0的集成开发环境2.在PB8.0中连接SQL Server数据库,并使用数据库画笔进行操作;3.通过一个应用实例,了解PB应用程序的对象以及应用程序开发步骤;上机准备1.了解在PB开发环境中操作数据库;(阅读教材:第四章)2.了解在PB集成环境和开发应用程序的流程;(阅读教材:第二、三章)实验步骤:一、进入PB8.0集成环境;二、在数据库画板中完成以下工作1.定义ODBC数据源,它指向实验一中所创建的SQL Server数据库;2.建立DB Profile;3.在PB环境中连接数据库4.在PB环境中操作数据库:浏览数据,更新数据,浏览和修改表结构等5.断开数据库的连接三、建立第一个PB应用程序1.使用实验一所创建的数据库2.实现的详细步骤见教材:p127,第六章《第一个PB应用程序》;3.通过该实例理解PB建立一个应用程序的过程和方法;了解画板环境和视窗操作;4.记录在该应用程序的实现过程中遇到的问题,不清楚的问题,在后面的学习和实验中解决;四、设计一个登录窗口使用用户在窗口的输入信息,作为登录指定的数据库的帐号和密码;连接后,可以根据SQLCA.SQLCODE的值,来判断连接是否成功,并用Messagebox显示不同的提示信息;最终设计结果登陆界面是之后一点点美化的,所以没有在录制视频中出现总结与心得PowerBuilder开发环境PowerBuilder是著名的数据库应用开发工具厂商sybase的子公司PowerSoft于91年6月推出的数据库开发工具,经历多次更新换代,目前已发展到PB12.0。
PB完全按照客户机—服务器体系结构设计,在客户机中,它作为数据库应用程序的开发工具存在。
另外,采用了面向对象和可视化技术,可以方便快捷的开发处理用后台数据库中的数据和数据库管理的系统的数据库应用程序PowerBuilder特点面向对象的编程;支持多种关系数据库管理系统;支持多种平台的开发环境;功能强大、使用方便的数据窗口对象;丰富的数据表现风格;才做方便的可视化集成开发环境;编程方法简便;这是我第一次使用PowerBuilder,在设计窗口时感觉很像之前编程时用到的MFC,不同的控件对应不同的事件,所见即所得,直观方便PB应用程序开发步骤1.系统分析和系统设计;充分了解系统需求,理解系统应该完成的任务2.系统开发和代码测试;建立应用对象,建立窗口和选单;创建数据窗口对象;将数据窗口对象连接到窗口上;编写各种对象的事件处理程序3.系统测试和功能测试;排除系统设计缺陷,检查功能的完整性,操作的方便性,使用的简洁性,运行的可靠性等4.生成安装盘以及交付使用测试无误后,将应用编译成可执行文件。
WinCE配置一、PB开发环境1、Platform Builder简介图1.1就是PB的开发界面。
图1.1 PB开发界面2、建立并编译WinCE平台一、Windows 内核定制启动Platform Builder 4.2,新建Platform Builder 工程。
单击File 菜单下的New Platform 按钮,启动操作系统镜像的建立向导。
图1.2 运行操作系统镜像向导向导启动后先显示如图1.3的欢迎屏幕,直接点Next 按钮。
图1.3 定制操作系统内核欢迎屏幕选择一个相应的开发板支持包(Board Support Packages,BSP)如图1.4 所示。
选择一种开发包后,在对话框的右半部分会显示相应开发包的说明,表明这个开发包支持哪个公司的产品以及相应的芯片。
根据试验箱上的芯片SAMSUNG S3C2410A的要求,选择SAMSUNG SMDK2410:ARMV4,进入下一步。
图1.4 选择BSP选择建立操作系统镜像的基本配置结构(Platform Configuration),如图4.5所示对话框主要是设置准备定义的操作系统镜像的基本配置及工程名称。
首先,在Platform name 处输入工程名字(如ARM2410)。
其次,选择操作系统镜像的基本配置,在对话框的左面有两个选择。
1. Available configurations(可用配置):在这个选项下的列表框中,有多个Windows 已经设定的基本配置结构供选择,如果设计人员设计的产品与列表中保存的基本配置一样,那么只要直接选择就可以完成基本的设定,节省了很多时间,列表框中有以下基本配置内容:(1)Digital Media Receiver(数字媒体接收机)(2)Enterprise Terminal(企业终端)(3)Enterprise Web Pad(企业上网机)(4)Gateway(网关)(5)Industrial Controller(工业控制设备)(6)Internet Appliance(Internet 应用系统)(7)IP Phone(IP 电话)(8)Mobile Handheld(移动手持设备)(9)Mobile Phone(移动电话)(10)Set-Top Box(机顶盒)(11)Tiny Kernel(瘦内核)(12)Windows Thin Client(Windows 瘦客户端/网络PC)2. Custom configuration(自定义配置):自定义配置指不选择基本配置,完全由用户来完成配置工作。
POWERBUILDER教程第一章概述1.1特点1.事件驱动在事件驱动方式中,程序的运行没有固定的流程,程序的代码也是为各种可能发生的事件编写,当程序开始运行后,它可以接受来自系统、用户或其他应用程序触发的事件,然后执行事件代码。
建立窗口、控件和其他应用部件时都含有一组预定义的事件。
例如:clicked(单击),用户也可以定义自己的事件。
2.面向对象Windows应用程序中常见的窗口、菜单、控件在powerbuilder中都是一个个对象。
同时,也可以创建自己的用户对象。
每个对象都有自身的特征和行为(属性、事件和函数)。
Powerbuilder提供了基础类库PFC,它为应用程序开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发高质量、重用好的应用程序。
3.Powerscript语言Powerbuilder中,所有的处理逻辑都是用powerscript语言编写,powerscript是PowerBuilder是专用语言。
4.强大的数据库窗口对象数据窗口对象是PowerBuilder中的一种对象类型,是专门为访问后台的数据库服务的,在数据窗口对象中可以定义数据的来源和数据的显示风格,这样在应用程序就可以把精力完全放在程序的流程控制上,而不用关心具体数据的来源。
如果需要使用数据库中不同的数据,也只要对数据窗口对象进行修改就可以。
5.其他特点支持internet、支持分布式应用、支持多平台、支持大多数关系型数据库(Sybase、MS SQLSERVER、ORACLE等等以及ODBC等其他数据源)等等1.2安装略注:升级至7.0111.3开发环境IDE1 菜单栏图标第一章库文件工具栏图标第二章对象编辑工具栏图标第三章库文件编辑区第四章对象编辑区第五章Datawindow编辑器1.4 预备知识一个PowerBuilder应用程序一般由若干个窗口组成,每个窗口有若干个控件(如按钮、菜单、文本等),每个对象或控件都有若干个事件(如按钮的单击或双击等),每个事件将对应一段程序。
PB数据连接使用步骤步骤一:了解数据源在开始使用PB数据连接之前,首先需要了解要连接的两个数据源,包括数据源的类型、数据结构、数据存储方式等。
这些信息对于后续的数据连接设置和操作非常重要。
步骤二:安装和配置PB数据连接工具步骤三:设置数据连接在PB数据连接工具中,需要进行数据连接的设置。
首先,需要选择要连接的数据源类型,例如数据库、文件、Web服务等。
然后,根据具体的数据源类型,输入相应的连接信息,包括服务器地址、端口号、数据库名称、用户名、密码等。
通过设置这些连接信息,可以建立与数据源的连接。
步骤四:测试数据连接在设置数据连接后,可以进行数据连接的测试。
测试数据连接是为了确保输入的连接信息正确,并且可以成功连接到数据源。
通过测试数据连接,可以检查连接是否成功,以及连接是否稳定和可靠。
步骤五:添加数据源成功建立数据连接后,需要将数据源添加到PB数据连接工具中。
通过添加数据源,可以方便地管理和使用已连接的数据源。
在添加数据源时,需要提供数据源的名称和描述信息,并选择要添加的连接。
步骤六:设置数据传输方式在使用PB数据连接进行数据传输之前,需要设置数据传输方式。
数据传输方式包括增量传输和全量传输两种方式。
增量传输是指只传输数据源中发生变化的数据,而全量传输是指传输整个数据源中的全部数据。
通过设置数据传输方式,可以根据具体的需求选择合适的传输方式。
步骤七:执行数据传输设置完数据传输方式后,可以执行数据传输操作。
在数据传输过程中,PB数据连接工具会自动从一个数据源读取数据,并将数据传输到另一个数据源。
数据传输的速度和稳定性取决于数据源的类型和网络环境。
步骤八:监控和管理数据传输数据传输完成后,可以通过PB数据连接工具对传输结果进行监控和管理。
可以查看传输日志、统计传输结果、处理传输错误等。
通过监控和管理数据传输,可以及时发现并解决传输过程中的问题,确保数据的准确性和完整性。
步骤九:维护和优化数据连接数据连接是一个长期的过程,需要定期进行维护和优化。
在PB中使用WINSOCK控件[2]winsock_a object protocol=//winsock通讯协议设为TCP协议winsock_a object localport=//本机的winsock通讯端口号winsock_a listen()//启动监听在甲方winsock_a控件的Connectionrequest事件中加入如下语句//接受到对方的连接请求后if winsock_a object state< > thenwinsock_a close()end ifwinsock_a accept(requestID)//建立直接连接//requestID是Connectionrequest事件自己的参数在乙方(作为客户端)窗口的Open事件中加入如下语句winsock_b object protocol=//winsock通讯协议设为TCP协议winsock_b object remotehost=//对方的ip地址winsock_b object remoteport=//对方的winsock通讯端口号winsock_b connect() //发出连接请求无论采用哪种协议都要在窗口的Close事件中加入如下语句if winsock_a/*或winsock_b*/ object state< > thenwinsock_a close()end if否则可能第二次使用时发生异常问题三开始通讯在按钮cb_ (caption属性设为发送)的click事件中加入如下语句winsock_a/*或winsock_b*/ object send (sle_ text)在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句//接受到对方数据后string datastrwinsock_a/*或winsock_b*/ object getdata (def datastr )sle_ text=datastr //将数据字符串显示在文本框中以上程序实际上体现了聊天器的底层工作原理稍加修改扩充就可以做成一个很好的聊天软件编辑推荐ASP NET开发培训视频教程Microsoft NET框架程序设计视频教程lishixinzhi/Article/program/PB/201311/24622。
PB(PowerBuilder)是一种流行的编程语言和开发环境,用于构建企业级应用程序。
INET是PowerBuilder中的一个功能,用于实现Internet通信。
PB INET的使用通常涉及以下步骤:
1. 创建一个标准类(Standard Class),选择INET作为该类的基类。
2. 在该类中定义需要使用的变量和函数。
3. 在INET函数中编写代码,以实现所需的Internet通信功能。
例如,可以使用INET函数来发送HTTP请求、接收响应等。
4. 保存并编译该类,生成可重用的库或应用程序。
需要注意的是,PB INET的使用需要一定的编程经验和网络知识。
在使用过程中,需要仔细阅读相关文档和示例代码,并根据具体需求进行适当的修改和调整。
(1)获得安装的打印机在这个例子中,我们生成一个以打印机名的下拉框string printers[]int rtn, i, nbPrintersrtn = RegistryKeys &(\"HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Print\\Printers\", &printers)nbPrinters = UpperBound(printers)FOR i = 1 TO nbPrinterslb_1.addItem(printers[i])NEXT(2)获得当前的用户名和机器名在这个应用中,需要定义下面的两个API函数FUNCTION long GetComputerNameA(ref string ComputerName, ref ulong BufferL ength)LIBRARY \"KERNEL32.DLL\"FUNCTION long GetUserNameA(ref string UserName, ref ulong BufferLength) LIBRARY \"ADVAPI32.DLL\"and thenlong ll_retstring ls_ComputerName, ls_UserNameulong BufferLength = 250 // you may need to adjust this. see Notels_ComputerName = Space(BufferLength)ls_UserName = Space(BufferLength)ll_ret = GetComputerNameA(ls_ComputerName, BufferLength)ll_ret = GetuserNameA(ls_UserName, BufferLength)注意:通过一些实验,在使用函数GetUserNameA获得用户名时,如果定义的BUFFERLE NGTH小于实际的用户名长度,函数可能会出现异常.(3)获得当前的目录首先定义API函数FUNCTION long GetCurrentDirectoryA( long length , ref string path) &LIBRARY \"Kernel32\"接下来long ll_retstring ls_pathls_path = Space(250)ll_ret = GetCurrentDirectoryA(250, ls_path)IF ll_ret > 0 THENls_path = Left(ls_path,ll_ret)MessageBoxBox(\"\", ls_path)ELSEMessagebox(\"Error\",\"Err GetCurrentDirectory \" + String(ll_ret))END IF(4)创建或删除目录首先定义如下API函数FUNCTION boolean CreateDirectoryA(ref string path, long attr)LIBRARY \"kernel32.dll\"FUNCTION boolean RemoveDirectoryA( ref string path )LIBRARY \"kernel32.dll\"接下来CreateDirectoryA( \"C:\\TempDir\", 0 ) // always 0RemoveDirectoryA( \"C:\\TempDir\" )注意:没有办法同时创建两个以上的目录.可以一个一个的创建.(5)文件改名使用下面的函数,把文件\"移动\"成一个新的名字(没有关系,不会真的移动文件,只是改名)Simply \"move\" it under a new name with the functionFUNCTION BOOLEAN MoveFileA(STRING oldfile, STRING newfile)LIBRARY \"Kernel32.dll\"(6)禁止ODBC的“LOGIN”窗口在DbParm中使用如下的连接选项Use this ConnectOption in your DbParm :SQLCA.DBParm=\"ConnectString=\'DSN=mydb;UID=dba;PWD=sql\',\" + & \"ConnectOption=\'SQLDRIVER_CONNECT,SQL_DRIVER_NOPROMPT\'\ "(7)使应用休眠定义:SUBROUTINE Sleep(Long lMilliSec) LIBRARY \"Kernel32.dll\"使应用休眠2秒Sleep(2000)(8)使用文件关联的应用来打开一个文档使用外部函数ShellExecuteA().函数如下定义:FUNCTION long ShellExecuteA &(long hwnd, string lpOperation, &string lpFile, string lpParameters, string lpDirectory, &integer nShowCmd ) LIBRARY \"SHELL32\"在脚本中,例如:启动一个缺省的浏览器string ls_Nulllong ll_rcSetNull(ls_Null)ll_rc = ShellExecuteA &( Handle( This ), \"open\", \"MyPage.html\", ls_Null, ls_Null, 1)可能返回的代码如下:SE_ERR_FNF 2 // file not foundSE_ERR_PNF 3 // path not foundSE_ERR_ACCESSDENIED 5 // access deniedSE_ERR_OOM 8 // out of memorySE_ERR_DLLNOTFOUND 32SE_ERR_SHARE 26SE_ERR_ASSOCINCOMPLETE 27SE_ERR_DDETIMEOUT 28SE_ERR_DDEFAIL 29SE_ERR_DDEBUSY 30SE_ERR_NOASSOC 31使用下面的代码,实现以指定的扩展名对应的程序打开你指定的文件(不是你指定的文件扩展名的关联程序)[structure nvos_shellexecuteinfo]long cbSizelong fMasklong hwndstring lpVerbstring lpFilestring lpParametersstring lpDirectorylong nShowlong hInstApplong lpIDListstring lpClasslong hkeyClasslong dwHotKeylong hIconlong hProcess[External Function]FUNCTION long ShellExecuteEx(REF nvos_shellexecuteinfo lpExecInfo) LIBRARY \"shell32.dll\" ALIAS FOR ShellExecuteExA[powerscript]function boolean of_execute(readonly string as_file, readonly string as_extension)CONSTANT long SEE_MASK_CLASSNAME = 1CONSTANT long SW_NORMAL = 1string ls_classlong ll_retnvos_shellexecuteinfo lnvos_shellexecuteinfoInet l_InetIF lower(as_extension) = \"htm\" OR lower(as_extension) = \"html\" THEN // Open html file with HyperlinkToURL// So, a new browser is launched// (with the code using ShellExecuteEx, it is not sure)GetContextService(\"Internet\", l_Inet)ll_ret = l_Inet.HyperlinkToURL(as_file)IF ll_ret = 1 THENRETURN trueEND IFRETURN falseEND IF// Search for the classname associated with extensionRegistryGet(\"HKEY_CLASSES_ROOT\\.\" + as_extension, \"\", ls_class)IF isNull(ls_class) OR trim(ls_class) = \"\" THEN// The class is not found, try with .txt (why not ?)RegistryGet(\"HKEY_CLASSES_ROOT\\.txt\", \"\", ls_class)END IFIF isNull(ls_class) OR Trim(ls_class) = \"\" THEN// No class : errorRETURN falseEND IFlnvos_shellexecuteinfo.cbsize = 60lnvos_shellexecuteinfo.fMask = SEE_MASK_CLASSNAME // Use classname lnvos_shellexecuteinfo.hwnd = 0lnvos_shellexecuteinfo.lpVerb = \"open\"lnvos_shellexecuteinfo.lpfile = as_filelnvos_shellexecuteinfo.lpClass = ls_classlnvos_shellexecuteinfo.nShow = SW_NORMALll_ret = ShellExecuteEx(lnvos_shellexecuteinfo)IF ll_ret = 0 THEN// ErrorRETURN falseEND IFRETURN true例如,创建一个C:\\test.txt文件,使用如下的脚本:// Open c:\\test.txt with Word, or Wordpad (or with another .doc file viewer) of_execute(\"c:\\test.txt\", \"doc\")// Open c:\\test.txt with the default browserof_execute(\"c:\\test.txt\", \"htm\")这段代码在你打算以不同的扩展名保存文件(保密)时有用。
以下是一个使用PowerBuilder(PB)调用WebService的示例,字数超过1500字。
首先,确保你已经在PowerBuilder中创建了一个WebService方法,并将其发布为IIS 方式。
然后,按照以下步骤进行操作:创建PB的解决方案文件:在PowerBuilder中创建一个新的解决方案文件,并确保引用了一个pbwsclient11.pbd文件。
这个文件在安装路径中可以找到。
创建对象:从"工具箱"中拖动一个"WebServiceProxyWizard"图标到PowerBuilder的设计界面。
这将创建一个新的对象,用于调用WebService。
连接SOAP对象:在代码编辑器中,使用以下代码连接SOAP对象:ls_s1 = "abc"ls_s2 = "def"// 连接SOAP对象if ole_ws.ConnectToNewObject("MSSOAP.SoapClient30") < 0 thenif ole_ws.ConnectToNewObject("MSSOAP.SoapClient") < 0 thenthrow CreateRuntimeError(ls_error)end ifend if这段代码将尝试连接到两个不同的SOAP客户端对象。
如果连接失败,将抛出一个运行时错误。
初始化WebService地址:使用以下代码初始化WebService的地址:vbnetole_ws.mssoapinit(ls_address)其中,ls_address是WebService的WSDL文件路径。
调用方法:使用以下代码调用WebService方法:vbnetls_return = ole_ws.addstr(ls_s1, ls_s2)其中,addstr是WebService方法名,ls_s1和ls_s2是方法的参数。
用PB创建Internet应用(深圳:独孤求败 2003-05-20)Internet和World Wide Web(WWW)已经风靡全球,在WWW上有上百万的商业机会。
通过WWW,可以立即给用户提供信息,提高用户的满意程度。
还可以提供更好的通讯和信息访问,提高企业内部的生产率。
要充分发挥这些优势,企业必须改变它们在Web节点上的"市场小册子",并且提供动态的、数据驱动内容的节点。
它们需要开发工具开发这些新的Internet应用。
新的Internet开发工具不断涌现,PowerBuilder 就是其中之一。
它包含了很多新的Internet特性,使得开发者可以构造动态的Web节点,比如:1、支持"ActiveX控件";2、数据窗口可以将任何数据库中表的数据存储为HTML格式文件;3、数据窗口的Plug-in功能,可以让浏览器在Internet上查看报表;4、窗口的Plug-in功能可以在WWW浏览器上运行PowerBuilder应用;5、Web.PB用于创建动态的、基于Web的应用服务器。
PowerBuilder是一个较优秀的RAD(快速应用开发)工具,非常适应Internet的开发需求。
下面我们详细讨论PowerBuilder 的Internet特性:1、支持ActiveXPowerBuilder提供对Mcrosoft ActiveX Internet控件的广泛支持。
使用从第三方厂家提供的Activ eX控件,可以为PowerBuilder应用增加各种Internet功能,例如:WWW HTML浏览器功能;FTP控件用于传输和共享文件;NNTP控件访问新的群件;POP控件用于Internet电子邮件服务。
例如,如果希望PowerBuilder应用的最终用户可以在PowerBuilder应用的窗口中浏览WWW。
通过使用Visual Components的WebViewerActiveX,在窗口中嵌入一个HTML Web浏览器并且可以通过编程控制它。
开发者可以使用WebViewer内置的函数并且允许用户输入URL(Uniform Resourse Locator),以及在W eb节点间向前和向后移动。
这个控件同时还提供很多属性和方法允许开发者通过编程控制它的功能。
例如,开发者可以使用PageURL属性和PowerScript语言设置URL地址。
开发者还可以通过截断到其它Web节点的连接请求来限制PowerBuilder应用的用户只访问公司的主页。
使用ActiveX的优点表现在以下几个方面:扩展PowerBuilder客户/服务器应用;开发者可以完全通过编程控制这些控件并且可以定制应用的Internet功能;市场上有上百个可供选择的ActiveX组件;不必重复工作——使用预制的、测试过的Internet组件。
2、数据窗口生成HMNL文件数据窗口技术是PowerBuilder访问数据库和进行数据表现的重要技术。
数据窗口提供了鼠标点击方式的SQL语句生成,并且可以将数据以各种形式展现给用户,包括图形方式、交叉表格形式、列表形式和Rich Text格式。
数据窗口可以将其中的数据存储为各种文件格式,例如dBASE、dif、SQL、Excel、WKS、Wndow s mctafile和Powersoft Report(PSR)。
PowerBulder 现在支持一种新的存储格式HTML,可以将数据窗口中的数据存储为HTML文件格式。
使用数据窗口生成HTML文件的优点如下:无需HTML编程,就可以在Internet或Intranet上发布PowerBuilder或InfoMaker的静态数据和报表;将数据窗口生成的HTML合并到其它任何HTML页中,可以增强数据表现;最终用户可以不需要PowerBuilder就能在他们的PC机上查看相关的信息——只需要一个浏览器。
3、数据窗口Plug-in数据窗口的Plug-in功能可以在Web页上显示Powersoft Report(PSR)文件,这必须在Netscape Navi gator或Microsoft Internet Explorer 上查看。
用PowerBuilder DataWindow或者InfoMaker Report创建的报表,可以存储为PSR文件格式,这样就可以通过浏览器来访问。
这种报表保存了数据窗口中所有高级的格式,例如阴影、彩色文本和编辑风格等。
例如:要显示数据窗口文件compensation-report.psr,必须将下面的嵌入标记插入HTML页上:〈embed src=compensation_report.psr width=650 height=350〉一旦该HTML被装入,compensation_report.psr会自动从Web服务器上卸下。
使用数据窗口的Plug-i n功能用户可以使用滚动条浏览数据,打印数据窗口报表,还可以将报表存储成其它文件格式。
数据窗口Plug-in的优点表现在以下几个方面:在WWW上发布复杂的Data Window/InfoMaker报表,加快向WWW用户的发布;克服HTML的限制,提供复杂的图形报表,包括列表形式、交叉表格形式和图形方式。
节省拷贝报表的时间和资金;可以在一个中央位置更新报表。
4、窗口Plug-inPowerBuilder窗口的Plug-in功能是一个将客户/服务器应用扩展到Web上的技术。
窗口的Plug-in功能允许在支持Plug-in的浏览器(如:Netscape Navigator、MicrosoftsInternet Explorer )上运行Pow erBuilder应用。
这种Plug-in 功能允许打开一个包含所有PowerBuilder标准控件的子窗口,例如tab控件、treeh和list view以及OLE对象。
也可以使用数据窗口技术,通过PowerBuilder的直接接口和ODB C接口访问各种数据源。
另外,PowerBuilder窗口Plug-in应用可具有和分布式PowerBuilder应用的接口,这些应用可以运行在其它平台上,如UNIX或Windows NT。
PowerBuilder窗口包含在PowerBuilder动态库(pbd)中,放在Web服务器上。
例如:要装入某PowerBu ilder窗口, 在HTML页上嵌入如下标记:〈embed src=windows_plugin.pbd width=370 height=320 window=w_product〉这里,windows_plugin.pbd是PowerBuilder库的名称,w_product是由浏览器打开的子窗口的名称。
w idth和height 定义了在浏览器中窗口的尺寸。
可以同样用这个嵌入标记来指定其它需要的对象的PowerB uilder库,并且可以用commandparm属性向窗口传递一个字符串参数。
最终用户的PC机上必须安装有Pow erBuilder运行时所需的动态链接库,以便在WWW浏览器中运行窗口。
窗口Plug-in功能的优点表现在以下几个方面:PowerBuilder窗口可以运行在WWW浏览器中,避免了编写大量的HTML和CGI程序;只做很小的修改就可以让现有的应用具有运行在Web上的能力;PowerBuilder支持的高级用户界面功能克服了HTML的不足;可以使用数据窗口的读/写 /更新和删除功能。
5、使用Web.PB进行基于服务器的开发Web.Pb是一种新的技术,可以让PowerBuilder建立基于服务器的Internet应用,允许WWW浏览器访问分布式 PowerBuilder应用的服务。
这些分布式的应用可以使用PowerBuilder所有的功能,例如数据窗口、PowerScript、面向对象等,来建立基于服务器的应用。
并且,PowerBuilder服务器可以动态生成HTML页"飞到"或将HTML发送到 Web浏览器。
这允许用户支持真正的"瘦客户机"体系结构,也就是在客户机上只需要一个WWW浏览器。
Web.PB的体系结构非常简单,并且建立在分布式PowerBuilder的基础上。
Web.PB实际上代替了传统的PowerBuilder客户端应用的位置,允许用户通过WWW浏览器访问分布式的PB应用。
在浏览器中,用户可以访问在分布式PowerBuilder应用中的任何不可视对象的属性和方法。
用户还可以向方法传递参数。
Web服务器与Web.PB通讯将这些信息发送给分布式PowerBuilder应用,应用会执行方法并且将结果以动态HTML 的形式返回给浏览器。
例如,下面的代码放在一个分布式PowerBuilder应用中的"of_get_data"函数中。
这个函数在SQL Any where数据库中搜索姓名的第一个字母与用户输入的字母相同的雇员,用户输入的字母放在search_lette r参数中://定义变量 String ls_html String ls_search_arg long ll_rows_retrieved ls_sear ch_arg=search_letter+% //创建数据存储(非可视化数据窗口)并与一个数据窗口相关联 ds_names=creat e datastore ds_names.dataobjecet="d_names" ds_names.settransobject(sqlca) //检索行 ll_rows_r etrieved=ds_names.retrieve(ls_scarch_arg) //用htmltable属性以HTML表格形式存储结果 if ll_ro ws_retrieved>0 then ls_html=ds_names.object.DataWindow.data.htmltable else ls_html=‘No emp loyees found for this search' end if //返顺包含HTML表格的字符串。
return ls_html 建立了函数后,在HTML页中用下列语法调用它: 〈FORM METHOD="GET"ACTION="/cgi-shl/pbcgi050.exe/of_get_data "〉请键入搜索字母〈INPUT NAME="search_letter"〉〈INPUT TYPE="SUBMIT" value="search"〉</FO RM> Action语句指出使用Web.PB的接口,在这个例子中使用pbcgi050.exe。