随笔 - 6  文章 - 129  trackbacks - 0
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(14)

随笔档案(6)

文章分类(467)

文章档案(423)

相册

收藏夹(18)

JAVA

搜索

  •  

积分与排名

  • 积分 - 815441
  • 排名 - 49

最新评论

阅读排行榜

评论排行榜

文章来源:http://www.itfensi.com/exploit/FoxPro/11702662832718_8.html
这一章主要介绍了什么是PFC的Services ,以及如何使用它们。

  一、应用程序服务

   PFC提供了以下各种应用程序Services :

DataWindow caching

Debugging

Error

Application preference

Most recently uesed object

Security

Transaction registration

  你必须通过n_cst_appmanager(应用程序管理器)来控制这些 Services (这些Services实际上是应用程序管理器的是数据成员)。应用程序管理器(application manager)通过调用成员函数来开启与关闭Services 。由于它们在应用程序管理器的范围内有效。而应用管理器是全局变量,因此你可以在你的应用程序的任何地方是使用应用程序Services 。

  1. DataWindow caching service

  概要:

Datawindow caching service为Datawindow提供了数据缓冲。它将数据保存在内存中,从而减少了程序访问数据库的频率,加快了程序的执行速度。 Datawindowcaching service支持如下的数据源:

  l_ Datawindow对象,它的数据可以来自于数据库表也可以来自存储过程。

  l_ SQL语句

  l_ Datawindow控件

  l_ DataStore对象

  l_ 数组中的数据

  l_ 文件

  PFC使用Powerbuilder的Datastore来实现Datawindow caching service 。它对的对象是n_cst_dwcache 。

  PFC的代码实际只在父类对象中这本书讲述的都是扩展类的对象,就像 n_cst_dwcache 。而实际上PFC的代码全在父类的对象中(pfc_n_cst_dwcache)。

  使用方法

  使用DataWindow caching 可以将数据库访问频率降到最低,可以加快程序运行速度。

  2 开启DataWindow caching

  l_ 调用n_cst_appmanager的of_SetDWCache函数

  gnv_app.of_SetDWCache(TRUE)

  (1) 使用Datawindow caching :

(1). 调用of_Register函数进行数据缓存,同时依据不同的数据提供相应的参数。

  l_ 缓存Datawindow对象从数据库中检索出的数据时:你需要传递标识符(identifier)、事务对象、Datawindow对象名、其他参数(如果存在的话)。

  l_ 缓存SQL语句从数据库中检索出的数据时:你需要传递标识符(indentifier)、事务对象、SQL语句。

  l_ 将数据缓存到数组中:传递标识符(identifier)、Datawindow对象名、数据。

  l_ 缓存DataWindow控件中的数据:传递标识符(identifier)、Datawindow控件。

  l_ 缓存DataStore中的数据:传递标识符(identifier)、DataStore对象。

  l_ 缓存文件中的数据:传递标识符(identifier)、文件名。

  (2) 你可以使用函数of_IsRegistered(参数是对象本身),确定DataWindow对象是否已经在caching service中注册了。

  (3) 调用函数of_GetRegistered函数访问已经缓存的数据。

   Gnv_app.inv_dwcache.of_GetRegistered(攄_emplist敚琲ds_datastore)

   Ids_datastore.ShareData(dw_emplist)

  (4) 调用函数of_Refresh检索已经缓存数据的DataWindow 。

  (5). 调用函数of_UnRegister函数停止数据缓存服务。

  (6) (可选)调用n_cst_appmanager的of_SetDWCache函数关闭DataWindow cachi ng service 。

  gnv_app.of_SetDWCache(FALSE)

  通常你没必要显示的关闭DataWindow caching service 。PFC在删除对象n_cst_dwcache时会自动的关闭它。

  2. Debugging service

  概要:

  Debugging service 在应用程序遇到错误时会自动显示错误信息。PFC的消息路由当发现需要调用的事件不存在时便会使用Debugging service显示出错信息。

  重要说明:PFC debugging service 只是一个开发工具。在用户的应用程序中不要开启它。

  使用方法

  使用debugging service 可以帮助你在PFC的开发过程中解决问题。

  (1) 调用n_cst_appmanager的of_SetDebug函数开启Debugging service 。

   gnv_app.of_SetDebug(TRUE)

  (2) PFC的对象首先检测应用程序的debugging状态,然后在适当的情况下显示错误信息。

  (3) (可选)调用n_cst_appmanager的 of_SetDebug函数关闭Debugging service。

   gnv_app.of_SetDebug(FALSE)

  多数情况下,你不需要显示的关闭Debugging service 。

 3. Application preference service

  概要:

  你可以利用Application preference service保存、恢复应用程序、用户的信息到INI文件或WINDOWS的注册表中。保存和恢复应用程序设置有如下两个好处:

  l_ 延续性:保存应用程序的设置可以使得用户在下次使用软件时可以看到他上次关闭软件的样子。也就是说用户不必每次使用软件时都重新设置他的软件环境

  l_ 容易维护:你可以无须更改n_cst_appmanager的代码的情况下更新应用程序的设置。

  PFC通过用户自定义对象n_cst_apppreference提供Application preference ser vice 。

  这个Service保存应用程序的如下信息:

  用户键(User key)

MicroHelp

Help File

Version

Logo bitmap

Copyright notice

DDETimeOut property

DisplayName property

DWMessage Title property

MicrohelpDefault property

RightToLeft property

ToolbarFrameTitle property

ToolbarPopMenuText property

ToolbarSheetTitle property

ToolbarUserControl property

Application preference service 同时保存如下的用户信息

ToolbarText property

ToolbarTips property

User ID

  保存、恢复设置

  Application perference service 在应用程序开启的时候会自动恢复应用程序在关闭时保存的设置。这些信息可以保存到注册表中(只限于Windows95和Windows NT)或者INI文件中。你可以按照如下说明:

  l_ 保存到注册表中:调用函数of_SetUserKey ,指定你需要保存的键。

  l_ 保存到INI文件中:调用函数of_SetUserINIFile ,指定用于保存信息的INI文件名。

  使用步骤:

  (1) 调用n_cst_appmanager的of_SetAppPref函数开启Application preference s ervice 。

  gnv_app.of_SetAppPref(TURE)

  (2) 依据不同的执行平台采用不同的方式保存应用程序信息。下面的例子就是在应用程序的构造事件中保存应用程序的信息。同时假设你已经在 n_cst_appmanager中建立好了应用程序信息键、用户信息键、应用程序INI文件、用户INI文件。

IF this.of_IsRegistryAvailable() THEN

this.inv_apppref.of_SetAppKey(this.of_GetAppKey()) this.inv_

apppref.of_SetUserKey(this.of_GetUserKey())

ELSE

this.inv_apppref.of_SetAppINIFile(this.of_GetAppINIFile()) this.inv_ap

ppref.of_SetUserINIFile(this.of_GetUserINIFile())

END IF

  (3) 调用函数of_SetRestoreApp和of_SetRestoreUser函数设置需要保存信息的类型:

this.inv_apppref.of_SetRestoreApp(TRUE)

this.inv_apppref.of_SetRestoreUser(TURE)

  4. Most recentily used object service

  概要

  你可以使用Most recentily used object service(最近使用对象Service)将最经使用的对象、表单列在文件菜单下。默认情况下只允许显示5个最经使用对象。

  但是,你可以改变这个数量。

  PFC 通过n_cst_mru用户自定义对象提供MRU Service(Most recentily uesd ob ject service)。

  MRU Service在应用程序启动时会自动的将应用程序关闭时保存的最经使用过的对象信息加载到应用程序中。这些信息可以保存到注册表或者INI文件中。你可以通过如下的方式:

  l_ 保存到注册表中:调用函数of_SetUserKey函数确定要保存到注册表中的MRU信息。

  l_ 保存到INI文件中:调用函数of_SetUserINIFile函数指定用于保存MRU信息的INI文件。

  l_ 你必须还要额外编写代码:

  为了使用MRU Service ,你必须在你想启用MRU Service的窗口的两个事件中编写代码。

  l_ pfc_MRUProcess :在窗口开启时加载MRU信息。

  l_ pfc_PreMRUSave :在窗口关闭时保存MRU信息。

  与PFC菜单的结合

  PFC的 m_master菜单的FILE菜单包括了五个MRU菜单项,你还可以自己添加。

  如果你的应用程序没有使用PFC的菜单,那么请以 m_master为模板建立你自己的M RU菜单项。

  使用MRU Service步骤

  (1) 调用n_cst_appmanager中的of_SetMRU函数开启MRU Service 。

   gnv_app.of_SetMRU(TRUE)

  (2) 调用n_cst_appmanager的函数of_SetUserKey(尽适用于WIN95与WINNT)或of

   _SetUserINIFile函数(使用于所有的平台)确定需要保留的信息。下面的例子假设你已经为n_cst_appmanager建立好了的用户键(保存到注册表)或者INI文件(保存到INI文件)。下面的代码位于应用程序管理器(n_cst_appmanager)的构造事件。

IF this.of_IsRegistryAvailable() THEN

this.inv_mru.of_SetUserKey(this.of_GetUserKey())

ELSE

this.inv_mru.of_SetUserINIFile(this.of_GetUserINIFile())

END IF

(3) Register IDs with the MRU service by calling the n_cst_mru of_Regis

ter function. An ID is the identifier that the window will use to retr

ieve information out of the MRU service. This is an example of code yo

u can add to the pfc_PreOpen event of the MDI frame window:

IF IsValid(gnv_app.inv_mru) THEN gnv_app.inv_mru.of_Register("myapp")

END IF

(4) Extend the pfc_MRUProcess event in each window that uses exclusive

processing, adding code to open the sheet passing the necessary argume

nts (be sure to add similar code to the frame window if you want to sp

ecify exclusive items on the frame menu):

Window lw_frame, lw_window n_cst_menu lnv_menu n_cst_mruattrib lnv_mru

attrib // Check parameters. IF IsNull(ai_row) THEN Return -1 END IF

IF NOT IsValid(gnv_app.inv_mru) THEN Return -1 END IF // Retrieve row

from DataStore. gnv_app.inv_mru.of_GetItem & (ai_row, lnv_mruattri

b) // Get the MDI frame, if necessary. lnv_menu.of_GetMDIFrame(this.me

nuid, lw_frame) OpenSheet(lw_window, & lnv_mruattrib.is_classname,

lw_frame) Return 1

Performing other actions in the pfc_MRUProcess eventTo see other types

of processing you can perform in the pfc_MRUProcess event, see the co

mments in the pfc_w_master pfc_MRUProcess event.5Extend the pfc_PreMRU

Save event in each window that uses the MRU service. In this event, po

pulate the n_cst_mruattrib object with the id, classname, key, item, a

nd MicroHelp to be saved:

anv_mruattrib.is_id = "myapp" anv_mruattrib.is_classname = this.ClassN

ame() anv_mruattrib.is_menuitemname = this.Title anv_mruattrib.is_menu

itemkey = this.ClassName() anv_mruattrib.is_menuitemmhelp = & "O

pens " + this.Title Return 1 6Extend the pfc_MRURestore event in eac

h window that uses the MRU service. In this event, set the ID of the i

nformation you want to display on the menu:

If IsValid(gnv_app.inv_mru) Then Return gnv_app.inv_mru.of_Restore

("myapp", This) End If

5. Error message service

  概要

  Error Message service提供了许多用于显示、纪录应用程序的错误信息。你既可以显示PowerBuilder提供的标准的Message对话框,也可以显示PFC 的W_Message对话框。两种显示效果都具有如下的功能:

  l_ 消息日志:将消息纪录到文件中,支持多种平台。PFC会自动的将严重级别大于某个值的消息纪录到文件中。

  l_ 支持MAPI:通过Email发出错误警告。PFC会自动将严重级别大于某个值的消息作为邮件发出。

  l_ 消息数据库:通过已经定义好的形式(可以是数据库或文件)来存取消息。定义好了消息格式,使得消息有一种标准的形式、消息的重复减到最少、容易查询。

  l_ 参数替代:消息可以具有参数,这样它会依据程序运行而变化。

  l_ 不显示,直接纪录:消息可以不显示直接纪录到日志中。

  l_ 注释与打印:用户可以打印消息,甚至可以增加注释。对消息日志用于邮件时非常有用的。

  l_ 自动关闭:w_message过了数秒后会自动关闭。

  W_message 位图

  如果你使用w_message ,位图在运行时必须有效。

  用法

  Error service可以处理应用程序所有的错误信息。如果你打算将错误信息保存到数据库中,你可以使用PFC.DB中关于消息的几个表,或使用消息管道将它传到你的数据库中。

  使用Messages表

  大多数情况下,你应该将Messages表复制到你的数据库中。这个表已经包含了PFC的错误信息格式。

  使用步骤:

  (1) 调用n_cst_appmanager的of_SetError函数开启error message service(创建n_cst_error实例),下面的代码位于n_cst_appmanager的pfc_Open事件:

   this.of_SetError(TRUE)

  (2) 定义错误消息的源:

  l_ 如果消息源是文件,调用如下函数:

   this.inv_error.of_SetPredefinedSource(揷:/eisapp/eiserr.txt?

  l_ 如果消息源是数据库,调用如下函数:

  this.inv_error.of_SetPredefinedSource (itr_error)

  消息源:当你使用文件作为消息源时,文件中必须包括PFC.DB中Messages表中的所有数据。同时列必须由TAB键隔开。

PFC uses predefined messages in certain situations. If you enable the

error message service and receive message display errors, make sure th

e error message source has been established correctly. Additional user

-defined messages must conform to the format of the messages table (al

so used by the d_definedmessages DataWindow object).

  l_ (可选)设置日志文件名(调用函数of_SetLogFile参数为空字符串可以不进行日志纪录):

   this.inv_error.of_SetLogFile(擟:/pb6/errlog.txt敚?

  l_ (可选)设置用户ID(用于日志文件):

this.inv_error.of_SetUser(this.of_GetUserID())

  l_ (可选)设置什么类型的消息需要自动纪录:

this.inv_error.of_SetNotifySeverity(5)

this.inv_error.of_SetLogSeverity(4)

  l_ (可选)如果你的应用程序使用了错误自动通告功能。你需要设置当前用户的Email、密码。还可以设置其他的Email用户与密码。下面的例子展示了如何设置Email ID与Password 。

this.inv_error.of_SetNotifyConnection(ims_mailsess) this.inv_error.of

_SetNotifyWho(is_autonotify)

  说明:以上的代码都可以在n_cst_appmanager的pfc_Open事件中。

  l_ 在应用程序的错误检测中,使用函数of_Message显示对话框。同时你还可以将它纪录到日志中。函数of_Message可以使用数据库中的消息,也可以动态的指定消息。下面的例子就是使用数据库中的消息:

  gnv_app.inv_error.of_Message

  使用参数表(只限于已定义的消息)

  (1) 在消息表中定义如下的数据。%运行时将被替换:

   EIS1030 Unable to find the file % in %

  (2) 定义一个参数数组:

  String ls_parms[]

  ls_parms[1] = 揕ogfile.txt?

   ls_parm[2] = 揷:/windows/system?

  (3) 调用of_Message ,传递参数:

  gnv_app.inv_error.of_Message(擡IS1030敚琹s_parms)

  PFC在显示消息时使用数组中的第一个元素替换第一个% ,第二元素替换第二个%。

 6. Security service

  概要

  PFC的安全机制可以处理许多你的应用程序安全性问题。它包括应用程序管理员组件、安全对象(security object)n_cst_security 。

  用法:在使用Security service时,你必须要定义用户组与用户,然后分别与窗口、菜单、用户对象、控件相关联,然后再编写代码。

  使用步骤:

  (1) 定义用户、用户组。参考第七章擯FC Utilities?

  为你的窗口控件、菜单、用户对象、其他控件定义安全属性。

  (2) 调用n_cst_appmanager的of_SetSecurity函数创建安全对象this.of_SetSecurity(TRUE)

  (3) 为安全对象建立一个事务对象。

  Itr_sec = Create n_tr

  Connect using itr_sec;

  (4) 调用函数of_InitSecurity初始化安全对象。

   This.inv_security.of_InitSecurity(itr_sec.擡ISAPP敚琯nv_app.of_GetUserID()

  (5) 以上的代码全部在n_cst_appmanager的pfc_Open事件中编写。

  (6) 应用程序关闭时,断开事务对象的连接、删除事务对象。以下的例子在n_cst _appmanager的pfc_Close事件中。

  Disconnect using itr_sec;

  Destroy itr_sec

  7. 在你需要使用安全对象的窗口的Open事件或pfc_PreOpen事件中调用函数of_SetSecurity()

IF NOT gnv_app.inv_security.of_SetSecurity(this) THEN

MessageBox("Security","Unable to set security")

Close(this)

End if

  说明:你可以在其他对象(Datawindow、可视用户对象、菜单,所有你想实现安全机制的对象)。

  7. Transaction registration service

  概要

   Transaction registration service可以追踪你的应用程序中的事务对象的使用过程。这个服务只对基于n_tr的对象有效。PFC使用n_cst_trregistration 对象实现Transaction registration service 。

  用法

  当应用程序中使用多个事务对象时,你应该使用Transaction registration service跟踪所有的事务对象。当你的应用程序关闭时,该对象将会自动删除所有已注册的事务对象。使用n_tr的函数 of_SetAutoRollback设置ib_autorollback的值。如果ib_SetAutoRollback的值为False ,则事务对象关闭时将会自动提交。如果ib_SetAutoRollback的值为True ,则事务对象关闭时会自动回滚。

  启动 Transaction registration service

  l_ 调用n_cst_appmanager的of_SetTrRegistration函数 gnv_app.of_SetTrRegistration(True)当应用程序关闭时,应用程序会自动删除 Trasaction registration service 。

  注册事务对象:

  l_ 调用n_cst_trregistration的of_Register函数 gnv_app.inv_trregistration.of_Register(SQLCA) 控制当事务对象正处于连接时被删除时的行为l_ 调用n_tr的of_SetAutoRollback函数SQLCA.of_SetAutoRollback(True)如果你设置为True ,同时该对象正处于连接状态,当它被删除时Service会回滚该事务。如果你设置为False ,Service回提交该事务。尽管如此,你应该显示的提交或回滚、断开连接。

  2 Datawindow服务

  概要

  大部分的PowerBuilder的应用程序都大量的使用了Datawindow控件。PFC因此提供了功能强大的Datawindow Services 。大部分的Service使用时只需一点代码或者根本不需要编码。PFC的Datawindow Servies实际上都是由一个公共的父类对象(不可视用户自定义对象)继承而来。这个父类对象包括了许多Service的函数、事件、实例变量。同时么每个Datawindow Service还有自己的函数、事件、实例变量。

  访问Datawindow Services

  为了使用DataWindow Services,你应该建立基于u_dw的Datawindow对象。U_dw对象包括:

  l_ 用于开启、关闭Datawindow Services的函数。

  l_ 用于调用各种Services的函数、事件、实例变量的引用变量。

  l_ 调用Datawindow Service的函数、事件的Precoded事件、用户事件

  l_ 可供你编写代码的空事件在你的应用程序中所有的DataWindow控件都必须是u_dw的子类。

  开启DataWindow Services

  只开启Datawindow控件需要的Servie ,这样才能将应用程序的负荷将到最小。以下表格列出了所有的Datawindow Service ,以及对应的对象。

   DataWindow Service 对应的对象

Datawindow service的基类 n_cst_dwsrv

Dropdown search service n_cst_dwsrv_dropdownsearch

Filters service n_cst_dwsrv_filter

Find andreplace service n_cst_dwsrv_find

Linkage service n_cst_dwsrv_linkage

Multitable update service n_cst_dwsrv_multitable

Print preview service n_cst_dwsrv_printpreview

DataWindow property service n_cst_dwsrv_property

Querymode service n_cst_dwsrv_querymode

Reporting service n_cst_dwsrv_report

Required column service n_cst_dwsrv_reqcolumn

DataWindow resize service n_cst_dwsrv_resize

Row management service n_cst_dwsrv_rowmanager

Row selection service n_cst_dwsrv_rowselection

Sort service n_cst_dwsrv_sort

 8. DataWindow Services 的父类

  概要

   DataWindow Services的父类包括了所有DataWindow Services需要的Instance变量、事件、函数。PFC使用n_cst_dwsrv实现DataWindow Services的父类。

  DataStore Service:DataStore Service的对象是n_cst_dssrv

  用法

  你可以使用这些Service实现如下功能

  l_ 获取、设置DataWindow信息

  l_ 修改、获取DataWindow脚本函数

  l_ 默认DataWindow service

  父类函数在子类中有效

  因为n_cst_dwsrv是所有DataWindow services的父类,因此所有在n_cst_dwsrv的函数在它的子类中都有效。

  开启Basic DataWindow service

  l_ 调用u_dw的of_SetBase函数

   dw_emplist.of_SetBase(TRUE)

  当Datawindow被删除时u_dw会自动删除该Service 。

  访问DataWindow

  l_ 调用n_cst_dwsrv中的函数

  l_ 定义类型为n_cst_conversion的变量

  n_cst_conversion inv_conversion

  因为n_cst_conversion是自动实例化,因此不需要使用Create或者Destroy语句。

  调用转换服务的函数:

  l_ 调用函数

  下面的例子假设inv_conversion是实例变量:

   String ls_checked

  Ls_checked = inv_conversion.of_String(cbx_confirmed.Enabled)

  MessageBox

  7 日期/时间服务

  概要

  PFC的日期/时间提供了许多用于计算日期、时间的函数。例如,你可以使用of_SecondsAfter函数计算两个时间之间的秒数。它对应的对象是n_cst_datatime 。

  对象 n_cst_datatime对象是自动实例化,因此你无须使用Create或Destroy语句。

  使用说明:

  你可以使用日期/时间服务进行有关日期/时间的计算。该服务提供了以下函数:

  l_ 将Julian日期转换成Gregorian日期

  l_ 将秒数转换成小时

  l_ 将秒数转换成天数

  l_ 将Gregorian日期转换成Julian日期

  l_ 计算两日期之间的年数

  l_ 计算两日期之间的月份

  l_ 计算两日期之间的周数

  l_ 计算两日期之间的秒数

  l_ 计算两日期之间的毫秒

  l_ 判断日期是否有效

  l_ 判断某日是否是平日(非周日)。原文:Determine if a date falls on a weekday

  l_ 判断某日是否是周末

  l_ Halt processing until a specified date/time

  你可以将n_cst_datetime定义成全局变量、实例变量、局部变量。

  日期/时间函数使用说明 变量类型

  贯穿整个应用程序 全局变量或者n_cst_appmanager的实例变量

  针对一个对象 该对象的实例变量

  针对一段代码 局部变量

  开启日期/时间服务:

  l_ 定义类型为n_cst_datetime的变量

  n_cst_datetime inv_datetime

  类型n_cst_datetime是自动实例化的,因此无须使用 Create或Destroy语句调用日期/时间服务的函数:

  l_ 直接调用函数

  下面的例子假设 inv_datetime是实例变量

  Long ll_seconds,ll_days

  Ll_seconds = Long(sle_seconds.Text)

  Ll_days = inv_datetime.of_Days(ll_seconds)

  MessageBox(擠ate/Time敚琒 tring(ll_seconds)+ ?seconds is equal t

  o ?+ String(ll_days) + ?days。摚?

 8 文件服务

  概要

  PFC的文件服务使得你的应用程序可以具备文件管理器功能。例如,你可以使用f_FileRename函数改变文件名称。文件服务支持多种操作系统,针对各种操作系统该服务会自动的调用相应的外部函数。它对应的对象是n_cst_filesrv 。

  使用说明:

  通过文件服务你可以使用如下操作:

  l_ Assembling a concatenated filename 。

  l_ 建立、删除目录。

  l_ 读、写、重命名、复制文件。适用于大于32765字节的文件。

  l_ 访问文件信息,包括日期、时间。

  l_ 在一个目录下创建、排序文件。

  你可以将n_cst_filesrv定义成全局、实例、局部变量。

  使用情况 变量类型

  贯穿整个应用程序 全局变量或者n_cst_appmanager的实例变量针对一个对象 对象的实例变量针对一段代码 局部变量由于PFC会根据特定的平台创建n_cst_filesrv的子类。因此它没有使用PB的自动实例化功能。你必须显示的调用Destroy语句删除该对象。

  开启文件服务:

  1. 定义类型为n_cst_filesve的变量

   n_cst_filesrv inv_filesrv

  2. 调用全局函数f_set_filesrv:

   f_SetFilesrv(inv_filesrv,TRUE)

  该函数会自动的建立对象inv_filesrv 。

  3. 使用完毕后删除对象

  Destroy inv_filesrv

  调用文件服务的函数:

  l_ 直接调用函数

  该例子调用函数of_FileRead访问文件信息。该例子假设inv_filesrv是实例变量:

Integer li_return

String ls_file[]

li_return = inv_filesrv.of_FileRead(sle_filename.text, ls_file)

CHOOSE CASE li_return

CASE ?

MessageBox("Error", "Error accessing file")

CASE ELSE

// File processing goes here

END CHOOSE

  删除该服务:

l_ 使用DESTROY语句

DESTROY inv_filesrv

  9 INI文件服务

  概要

  PFC的INI文件服务提供了许多读、写INI文件的函数。它对应的对象是n_cst_ini file。

  使用说明:

  你可以使用INI文件做到如下:

  l_ 检索INI文件中的所有键

  l_ 检索INI文件中的所有段

  l_ 删除INI文件中的所有行

  l_ 删除INI文件中一行

  l_ 删除INI文件中一段

  你可以同时使用ProfileInt、ProfileString、 SetProfileString访问INI文件。

  INI文件服务对大小写不敏感。

  开启INI文件服务:

  l_ 定义类型为n_cst_inifile的变量:

  n_cst_inifile inv_ini_handler

  该类型属于自动实例化,因此你无须调用Create与Destroy 。

  使用INI文件服务:

  l_ 调用n_cst_inifile的对象函数:

String ls_keys[]

Integer li_count, li_size

Li_size = inv_ini_handler.of_GetKeys(gnv_app.of_GetAppINIFile(),?

CustApp s_keys)

Lb_keys.Reset()

For li_count = 1 to li_size

Lb_keys.AddItem(ls_keys[li_count])

Next

10 数字服务

  概要

  PFC的数字服务提供的函数使得你可以处理二进制数。例如,你可以使用of_GetB it函数判断一位是开还是关。

  使用说明:

  你可以使用数字服务中的函数做到:

  l_ 判断一位是开还是关

  l_ 将十进制转换成二进制

  l_ 将二进制转换成十进制

  与Window SDK共同使用该对象:Windows SDK中许多函数都使用位返回值。因此你需要使用函数f_GetBit。

  你可以将n_cst_numerical定义成全局、实例、局部变量使用说明 变量类型贯穿整个应用程序 全局变量或者n_cst_appmanager的实例变量针对一个对象 对象的实例的变量针对一段脚本 局部变量开启数字服务:

   l_ 定义类型为n_cst_numerical的变量

  n_cst_numerical inv_numerical

  类型n_cst_numerical自动实例化,你无须使用Create或者Destroy语句。

  调用数字服务(numerical service)函数:

  l_ 直接调用函数

  下面的例子假设 inv_numerical是实例变量:

Long ll_base10

String ls_binary

Ll_base10 = Long(sle_base10.text)

Ls_binary = inv_numerical.of_Binary(ll_base10)

MessageBox("Numerical", String(ll_base10) + " base 10 is equal to " +

String(ll_base10) + " base 10 is equal to " + ls_binary + " in binary.

")

  11 平台服务

  概要

  PFC的平台服务提供的函数使到你的应用程序可以使用特定平台的函数。你可以使用该服务实现支持多平台的应用程序,而无须在你的应用程序中加入有关平台检测的代码。例如,你可以调用函数 of_GetFreeMemory确定现在所剩的内存大小。平台服务此时便会依据不同的平台调用相应的外部函数而完成工作。该服务对应的对象是 n_cst_platform以及不同平台的相应的子类。

  打印与页面设置对话框:PFC的平台服务会根据不同的平台作相应的调整。

  使用说明:

  平台服务提供的函数有:

  l_ 确定可用内存空间

   l_ 确定可用资源空间

  l_ 确定某一字符串的高度、宽度,单位是PBUs

  你可以将 n_cst_platform定义成全局变量、实例变量、局部变量使用说明 变量说明贯穿整个应用程序 全局变量、n_cst_appmanager的实例变量针对一个变量 对象的实例变量针对一段代码 局部变量平台服务没有使用自动实例化功能,因此你必须显示的删除n_cst_platform 。

  在Macintosh上:在 Macintosh上函数of_GetTextSize无法使用。

  开启平台服务:

  (1) 定义类型n_cst_platform的变量:

  n_cst_platform inv_platform

   (2) 调用f_SetPlatform全局函数

  f_SetPlatform(inv_platform,TRUE)

  函数f_SetPlatform会自动建立该对象。

  调用平台服务函数:

  l_ 直接调用函数

  下面的例子调用函数of_GetFreememory在状态栏处显示可用内存的大小。

Long ll_free_monery

ll_free_memory = inv_platform.of_GetFreeMemory()

gnv_app.of_GetFrame(). SetMicroHelp(擣ree memory:?+ String(ll_

free_memory))

  删除服务

  l 调用 Destroy 语句

  Destroy inv_platform

未完。。。


posted on 2010-07-01 21:35 Ke 阅读(1668) 评论(0)  编辑  收藏 所属分类: powerBuilder

只有注册用户登录后才能发表评论。


网站导航: