pb中数据窗口函数小结(转)

pb中数据窗口函数小结(转)

一、连接数据库


连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。
语法格式:
dw_control.SetTrans(TransactionObject)
dw_control.SetTransObject(TransactionObject)
其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。
这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。
但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。
这两个函数都是成功时返回1,发生错误时返回-1。

二、检索数据


用于检索数据的函数只有一个,就是Retrieve()函数。
语法格式:
dw_control.Retrieve()
如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺序一致。
此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。

三、更新数据


当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。
语法格式:
dw_control.Update()
这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子:
Int li_return
li_return = dw_1.Update()
IF li_return = 1 THEN
     COMMIT USING SQLCA;
ELSE
     ROLLBACK USING SQLCA;
END IF
在这段代码中,首先对数据窗口控件进行更新操作。但是更新只是把数据写入到客户机的内存,并没有提交到数据库中。如果更新成功,就把它提交到数据库中,如果更新失败,就回滚到当前的事务。

行操作
行操作的函数主要是对数据库中的数据进行插入、删除或选择操作。

一、插入行


在DataWindow中插入一行,可以使用InsertRow()函数。
语法格式:
dw_control.InsertRow(rownumber)
dw_control
是数据窗口控件名,rownumber是要插入行的的行号。如果这个参数为0,代表在当前DataWindow的最后一行插入一空行。
InsertRow()
函数返回一个长整型值,以此来代表插入的行号。如果插入失败,则返回-1。

二、删除行


要删除DataWindow内的一行数据,则要使用DeleteRow()函数。
语法格式:
dw_control.DeleteRow(rownumber)
其中rownumber是要删除的行号。如果该值为0,表示删除当前行。如果删除成功,返回1,失败则返回-1。

三、设置当前行


如果要设置DataWindow中的某行为当前行,可以使用SetRow()函数。
语法格式:
dw_control.SetRow(rownumber)

其中rownumber是要设置为当前行的行号。如果函数返回1表示成功,返回-1代表失败。

四、获取当前行


如果想要获取DataWindow中的某行为当前行,可以使用GetRow()函数。
语法格式:
dw_control.GetRow()
该函数没有参数,它返回一个长整型,代表当前行号。如果返回-1代表失败。如果返回0代表没有选中任何行。

五、选择行


如果想要在DataWindow中加亮显示某一行或取消加亮显示某一行,可以使用SelectRow()函数。
语法格式:
dw_control.SelectRow(rownumber,select)
其中,rownumber表示要加亮或者取消加这显示的行号,0表示所有行。select是一个布尔类型的值,TRUE表示加亮,FALSE表示取消加亮显示。该函数返回1时表示成功,返回-1时表示失败。
如果想要直接设置某一行为加亮,需要首先取消其它行的加亮显示状态,采用如下的两行代码:
dw_1.SelectRow(0,FALSE)
dw_1.SelectRow(rownumber,TRUE)


六、获取选择行


如果想要获取当前DataWindow中加亮显示的行,可以使用GetSelectRow()函数。
语法格式:
dw_control.GetSelectRow(rownumber)
其中,rownumber为开始查找的行的行号,0表示从头开始查找。该函数返回一个长整数,表示从rownumber开始查找第一个加亮显示的行的行号。如果失败返回0。

七、滚动行


如果在DataWindow的末尾插入一行数据,而当前行是在DataWindow的中央,那么这种插入可能不会被用户觉察。为了改变这种情况,可以滚动行到DataWindow的末尾,这样用户就能发现新的改变。要滚动行,可以使用ScrollToRow()函数。
语法格式:
dw_control.ScrollToRow(rownumber)
该函数返回1时表示成功,返回-1时表示失败。
与ScrollToRow()函数据功能相关的还有如下几个函数:
ScrollPriorRow()
:向上滚动一行
ScrollNextRow()
:向下滚动一行

列操作
列操作类的函数主要是选择指定的列和获取列的信息。

一、获取列


如果要获取当前的列号,可以使用GetColumn()函数,如果要获取当前的列名,可以使用GetColumnName()函数。
语法格式:
dw_control.GetColumn()
dw_control.GetColumnName()
这两个函数都没有参数,GetColumn()函数返回一个长整型值,代表当前的列号,GetColumnName()函数返回当前列的列名。如果返回0,表示当前没有任何列被选择返回-1表示失败。

二、设置列


要设置某一列为DataWindow中的当前列,可以使用SetColumn()函数。
语法格式:
dw_control.SetColumn(column)
其中column既可以是列号,也可以是列名。当该函数返回1时表示成功,返回-1时表示失败。

数据操作
数据操作类的函数主要是对DataWindow中的数据进行获取、设置。

一、获取数据


如果要从DataWindow的指定行和列中获取数据,就要使用GetItem系列的函数。

这个系列的函数共有五个,分别是对字符串、数字、日期、日期时间和小数。
语法格式:
dw_control.GetItemString(rownumber,column)
dw_control.GetItemNumber(rownumber,column)
dw_control.GetItemDate(rownumber,column)
dw_control.GetItemDateTime(rownumber,column)
dw_control.GetItemDecimal(rownumber,column)
其中,rownumber参数表示行号,column可以是列号或列名。

二、设置数据


与获取数据所用的函数不同,设置DataWindow内指定行列处的数据只要使用一个SetItem()函数就可以了。
语法格式:
dw_control.SetItem(rownumber, column, value)
其中rownumber表示行号,column可以是列号,也可以是列名,value表示要设置的值。但是该必须与DataWindow中指定的行列处的数据类型一致,不然PowerBuilder会报错。
SetItem()
函数返回1时表示成功,返回-1时表示失败。

三、数据排序


如果希望对DataWindow内的数据进行重新排序,而又不想重新从数据库中检索数据,可以使用SetSort()和Sort()函数。这两个函数一起完成对DataWindow进行排序的功能。其中SetSort()函数用于设置如何排序,Sort()函数用于对DataWindow实际进行排序
语法格式:
dw_control.SetSort(expression)
dw_control.Sort()
其中expression是一个字符串,表示排序的表达式,它的具体值是一个列名后面加一个空格,然后是"A",表示升序,或"D",表示降序。如果有多个列要同时进行排序,它们之间用逗号隔开。
例:dw_1.SetSort("name A,xh D")
这两个函数都是返回1表示成功,返回-1表示失败。

四、数据过滤


如果希望对DataWindow内的数据进行过滤而不重新从数据库中检索数据,可以使用SetFilter()和Filter()函数。它们一起完成对数据的过滤功能。其中

SetFilter()函数用来设置过滤条件,Filter()函数用于对DataWindow进行过滤。
语法格式:
dw_control.SetFiter(expression)
dw_control.Fiter()
其中expression是一个字符串,表示过滤的条件,它实际是一个逻辑表达式。
例:
dw_1.SetFilter("id>\'003\' AND name like\'
%\'")
dw_1.Filter()
这两个函数都是返回1表示成功,返回-1表示失败。

五、数据检查


PowerBuilder
提供了两个函数用于数据的检查,它们是DeleteCount()和ModifiedCount(),其作用分别是检查DataWindow中的数据自上一次更新到现在,被删除的行数和被修改的行数。它们一般在窗口的CloseQuery事件中使用,用来检查该窗口的DataWindow中的数据是否有尚未保存的修改。
语法格式:
dw_control.DeleteCount()
dw.control.ModifiedCount()
它们分别返回从上一次更新到现在,DataWindow中被删除和被修改的行数。如果没有行被删除或被修改,那么它们返回0。如果出现错误则返回-1。
一般情况下,如果窗口中含有可供修改的数据窗口对象,那么在窗口的CloseQuery事件中通常使用如下代码检查数据窗口对象中是否有尚未保存的数据:
Int li_return
IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN
     li_return = MessageBox("
提示","数据尚未保存,是否保存?",Question!,YesNoCancel!,3)
     CHOOSE CASE li_return
            CASE 1
                 TriggerEvent(\'ue_save\')
                 RETURN 0
            CASE 2
                 RETURN 0
            CASE 3
                 RETURN 1
    END CHOOSE
END IF

 

1.    怎么判断数据窗口中指定字段的数据类型?

Dw_1.describe(“colname.coltype”)

返回类型为:string

pb常用函数(二)(转)

 

GetFocus()
功能确定当前焦点位于哪个控件上。
语法GetFocus ( )
返回值GraphicObject。函数执行成功时返回当前得到焦点控件的引用,发生错误时返回无效引用。用法应用程序利用IsValid()函数可以检测GetFocus()是否返回有效的控件引用。同时,使用TypeOf()函数可以确定控件的类型。
Post()
功能将指定消息加入到某个窗口的消息队列中,这个窗口既可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。
语法Post( handle, messageno, word, long )
参数handlelong类型,指定窗口的系统句柄,将向该窗口邮寄消息messagenoUnsignedInteger类型,指定要邮寄的消息号 wordlong类型,指定与消息一起邮寄的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0longlong类型或string,指定与消息一起邮寄的long型参数值或字符串返回值Boolean。如果任何参数的值为NULLPost()函数返回NULL
用法Post()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。这一点与Send()函数不同,Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Post()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。如果应用程序要邮寄PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用PostEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Post()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。
ProfileInt()
功能从初始化文件(.ini)中读取整型设置值。
语法ProfileInt ( filename, section, key, default )
参数filenamestring类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件sectionstring类型,指定要得到的值所在的节(Sectionkeystring类型,指定要得到的值的名称,不用区分大小写defaultinteger类型,当指定的文件、节名、项目名不存在或不能转换为整数时,函数返回该参数指定的值返回值Integer。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在或不能转换为整数时,函数返回default参数指定的缺省值。如果发生错误,函数返回-1。如果任何参数的值为NULLProfileInt()函数返回NULL
ProfileString()
功能从初始化文件(.ini)中读取字符串型设置值。
语法ProfileString ( filename, section, key, default )
参数filenamestring类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件sectionstring类型,指定要得到的值所在的节(Sectionkeystring类型,指定要得到的值的名称,不用区分大小写defaultstring类型,当指定的文件、节名、项目名不存在时,函数返回该参数指定的值返回值String。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在,函数返回default参数指定的缺省值。如果发生错误,函数返回空字符串。如果任何参数的值为NULLProfileString()函数返回NULL
Restart()
功能停止所有程序段的执行、关闭所有窗口、提交事务、断开与数据库的连接,然后重新启动应用程序。
语法Restart()
返回值Integer。函数执行成功时返回1,发生错误时返回-1
Run()
功能运行指定的应用程序。
语法Run ( string {, windowstate } )
参数stringstring类型,指定要运行的应用程序的名称,其中可以包括路径以及相应的参数,就像在命令行中键入的那样windowstateWindowState枚举类型,可选项,指定程序运行时的窗口状态。有效取值为:Maximized! - 最大化窗口;Minimized! - 最小化窗口;Normal! - 缺省值,正常窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLRun()函数返回NULL
用法使用Run()函数,应用程序能够启动操作系统中的任何程序。当在Run()参数中指定了要启动应用程序的参数时,参数的意义、格式、个数等由具体的应用程序确定。如果在Run()函数的string参数中指定了文件名但没有给出扩展名时,PowerBuilder认为该文件的扩展名为.EXE。要运行扩展名不是.EXE的应用程序(比如.BAT, .COM, .PIF),必须在Run()函数的参数中指定文件的扩展名。
Send()
功能向窗口发送指定的消息并立即执行相应的事件处理程序。
语法Send( handle, messageno, word, long )
参数handlelong类型,指定窗口的系统句柄,将向该窗口发送消息messagenoUnsignedInteger类型,指定要发送的消息号wordlong类型,指定与消息一起发送的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0longlong类型或string,指定与消息一起发送的long型参数值或字符串返回值Long。函数执行成功时返回Windows系统调用SendMessage()的返回值,发生错误时返回-1。如果任何参数的值为NULLSend()函数返回NULL
用法Send()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中,这一点与Post()函数不同,Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Send()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。实际上,Send()函数把它的各个参数直接传送给Windows的系统调用SendMessage()。在各种C++开发工具的WINDOWS.H文件中可以查到各消息编号。如果应用程序要发送PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用TriggerEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Send()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。
SetProfileString()
功能设置初始化文件中指定项的值。
语法SetProfileString ( filename, section, key, value )
参数filenamestring类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件sectionstring类型,指定要设置的值所在的节(Sectionkeystring类型,指定要设置的值的名称,不用区分大小写defaultstring类型,指定要设置项的值返回值Integer。函数执行成功时返回1,指定的文件未找到或指定的文件不能访问时函数返回-1。如果任何参数的值为NULLSetProfileString()函数返回NULL
ShowHelp()
功能显示应用程序帮助,该帮助使用Microsoft Windows帮助系统进行操作。
语法ShowHelp ( helpfile, helpcommand {, typeid } )
参数helpfilestring类型,指定帮助文件的名称helpcommandHelpCommand枚举类型,指定显示帮助的格式。有效取值为:Index! - 显示目录主题,使用该值时不要指定typeid参数;Keyword! - 转移到由指定关键字确定的主题;Topic! - 显示指定主题的帮助typeid:可选项,指定帮助主题返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLShowHelp()函数返回NULL
SignalError()
功能触发应用对象的SystemError事件,通常用于代码调试。
语法SignalError ( { number }, { text } )
参数numberinteger类型,可选项,其值将保存到Error对象的number属性中textstring类型,可选项,其值将保存到Error对象的text属性中返回值Integer。函数执行成功时返回1,发生错误时返回-1
Yield()
功能将控制权转移给其它图形对象,包括非PowerBuilder对象。该函数检测消息队列,如果有消息,就把消息取出。利用该函数可以在执行耗时较长的操作时把控制权转让给其它应用。
语法Yield()
返回值Boolean。如果在消息队列中提取到了消息,那么函数返回TRUE,否则返回FALSE。用法正常情况下,PowerBuilder应用程序在执行一段代码(比如函数或事件处理程序)的过程中不响应用户的操作。对耗时短暂的代码段来说,这种处理方式没有什么不妥的地方,但是,如果某个代码段的执行耗时较长,应用程序又希望为用户提供更多的控制权,那么需要在这段代码中插入Yield()函数,让用户能够进行其它操作,特别在循环执行的代码中更应该如此。应用程序执行Yield()函数后,如果发现消息队列中存在消息,它将允许对象处理这些消息,处理之后,继续Yield()函数后面代码的执行。因此,代码中插入Yield()函数将降低应用程序的运行效率。
Close()
功能关闭窗口并释放窗口以及窗口上的控件所占据的内存。
语法Close(windowname)
参数windowname:要关闭窗口的名称返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数windowname的值为NULLClose()函数返回NULL
用法应用程序使用Open()或其它Open簇函数打开窗口后,不需要窗口时,可以使用Close()关闭窗口并释放窗口以及窗口上所有控件占据的内存。Close()函数的执行过程为:如果要关闭窗口的CloseQuery/Close事件已经编写了事件处理程序,那么执行这些事件处理程序,从屏幕上删除要关闭的窗口、关闭窗口、之后执行调用Close()函数语句后面的语句。当窗口被关闭后,应用程序就不能再访问已经关闭窗口的属性、实例变量、对象函数、以及窗口上的控件了。如果关闭窗口后应用程序依然访问上述特性,那么将引发运行错误。当然,应用程序也可以阻止窗口被关闭,方法很简单,只要在欲阻止关闭窗口的CloseQuery事件处理程序中使用RETURN语句返回1即可,格式为:RETURN1
CloseWithReturn()
功能关闭窗口并将返回值保存在Message对象中,该函数只能对响应窗口使用。
语法CloseWithReturn ( windowname, returnvalue)
参数windowname:要关闭窗口的名称returnvalue:指定关闭窗口时保存到Message对象中的值,调用CloseWithReturn()函数的代码段通过查看Message对象属性的值得到关闭窗口时被关闭窗口传递的值。returnvalue参数必须是下述三种类型之一:StringNumericPowerObject返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数任何的值为NULLCloseWithReturn()函数返回NULL
Open()
功能 打开窗口。该函数有两种语法格式:
语法一、打开编程时已知数据类型的窗口对象;
语法二、打开程序运行后才能确定数据类型的窗口对象。下面分别予以介绍:
语法一、打开编程时已知数据类型的窗口对象
语法Open ( windowvar {, parent } )
参数windowvar:要打开窗口的窗口名,可以使用窗口画笔定义的窗口对象名,也可以使用该窗口对象的某个变量。Open()函数把打开窗口的引用放置到windowvar变量中parent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLOpen()函数返回NULL
语法二、打开程序运行后才能确定数据类型的窗口对象
语法Open ( windowvar, windowtype {, parent } )
参数windowvar:指定窗口变量名,Open()函数把打开窗口的引用放置到该变量中windowtypestring类型,指定要打开窗口的数据类型,该参数指定的窗口数据类型必须与windowvar参数的类型相同或是windowvar类型的后继对象parent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLOpen()函数返回NULL
OpenSheet()
功能在MDI框架窗口中打开MDI子窗口,并在指定菜单中创建选择该子窗口的菜单项。
语法OpenSheet(sheetrefvar{,windowtype},mdiframe{,position{,arrangeopen}})
参数sheetrefvar:指定要作为工作表打开的窗口名windowtypestring类型,可选项,指定要打开窗口的类型(也就是窗口画笔中保存的窗口对象名)mdiframe:指定要放置工作表的MDI框架窗口名position:可选参数,指定所打开的工作表的名称作为一个菜单项显示在第几个菜单标题下面,缺省时,被放在倒数第二个菜单标题下,原因是,大多数商业软件的最后两个菜单标题是WindowHelp,把工作表的名称放到Window菜单标题中用于选择工作表窗口是个合情合理的选择arrangeopenArrangeOpen枚举类型,可选参数,但如果选用了此参数,那么position参数也必须同时指定。arrangeopen参数告诉系统如何显示打开的工作表返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数任何的值为NULLOpenSheet()函数返回NULL
用法arrangeopen参数的可能取值为:Cascaded!把一个工作表放在另一个的上面,每个都向右下方偏移一点,这样所有工作表的标题栏用户都能看到。该值是OpenSheet()函数的缺省选择。Layered!将工作表显示在客户区的左上角,并最大化工作表,使其充满MDI框架窗口的整个客户区。Original!操作动作与Cascaded!参数相同,只是不放大窗口,而以窗口定义时的大小显示。
OpenSheetWithParm()
功能 MDI框架窗口中打开MDI子窗口,同时把参数保存在Message对象中进行传递。
语法OpenSheetWithParm(sheetrefvar,parameter{,windowtype},mdiframe{,position{,arrangeopen}}
参数sheetrefvar:指定要作为工作表打开的窗口名parameter:指定要传递给打开工作表的数据,该数据保存在Message对象的属性中, parameter参数的数据类型必须是下述三种类型之一:StringNumericPowerObjectwindowtypestring类型,可选项,指定是要打开窗口的类型(也就是窗口画笔中保存的窗口对象名)mdiframe:指定要放置工作表的MDI框架窗口名position:可选参数,指定所打开的工作表的名称作为一个菜单项显示在第几个菜单标题下面,缺省时,被放在倒数第二个菜单标题下,原因是,大多数商业软件的最后两个菜单标题是WindowHelp,把工作表的名称放到Window菜单标题中用于选择工作表窗口是个合情合理的选择arrangeopenArrangeOpen枚举类型,可选参数,但如果选用了此参数,那么position参数也必须同时指定。arrangeopen参数告诉系统如何显示打开的工作表返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数任何的值为NULLOpenSheet()函数返回NULL
用法arrangeopen参数的可能取值为:Cascaded!把一个工作表放在另一个的上面,每个都向右下方偏移一点,这样所有工作表的标题栏用户都能看到。该值是OpenSheet()函数的缺省选择。Layered!将工作表显示在客户区的左上角,并最大化工作表,使其充满MDI框架窗口的整个客户区。Original!操作动作与Cascaded!参数相同,只是不放大窗口,而以窗口定义时的大小显示。
OpenWithParm()
功能带参数打开窗口,与打开窗口的Open()函数相似,OpenWithParm()有两种语法格式:
语法一、带参数打开编程时已知数据类型的窗口对象;
语法二、带参数打开程序运行后才能确定数据类型的窗口对象。下面分别予以介绍:
语法一、带参数打开编程时已知数据类型的窗口对象
语法OpenWithParm(windowvar,parameter{,parent})
参数windowvar:要打开窗口的窗口名,可以使用窗口画笔定义的窗口对象名,也可以使用该窗口对象的某个变量。Open()函数把打开窗口的引用放置到windowvar变量中parameter:指定要传递给打开窗口的数据,该数据保存在Message对象的属性中,parameter参数的数据类型必须是下述三种类型之一:StringNumericPowerObjectparent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLOpenWithParm()函数返回NULL
用法消息对象Message有三个属性用于存储OpenWithParm()函数传递给打开窗口的数据。根据parameter参数数据类型的不同,该参数的值保存在Message对象的不同属性中。
语法二、带参数打开程序运行后才能确定数据类型的窗口对象
语法OpenWithParm(windowvar,parameter,windowtype{,parent})
参数windowvar:指定窗口变量名,Open()函数把打开窗口的引用放置到该变量中parameter:指定要传递给打开窗口的数据,该数据保存在Message对象的属性中,parameter参数的数据类型必须是下述三种类型之一:StringNumericPowerObjectwindowtypestring类型,指定要打开窗口的数据类型,该参数指定的窗口数据类型必须与windowvar参数的类型相同或是windowvar类型的后继对象parent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLOpenWithParm()函数返回NULL
CloseChannel()
功能关闭先前用OpenChannel()函数打开的DDE服务器的通道。
语法CloseChannel ( handle {, windowhandle } )
参数handlelong类型,通道句柄,指明要关闭的DDE通道windowhandlelong类型,可选项,指明用做DDE客户的PowerBuilder窗口的窗口句柄返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-2通道不能被关闭-3不能确认服务器-9Handle参数的值为NULL
ExecRemote()
功能请求DDE服务器应用程序执行命令。该函数有两种语法格式:语法一、直接向DDE服务器应用发送一条命令(冷连接方式);语法二、应用程序打开某个通道后向DDE服务器应用发送命令(热连接方式)。下面分别予以介绍。
语法一、直接向DDE服务器应用发送一条命令(冷连接方式);
语法ExecRemote ( command, applname, topicname )
参数commandstring类型,其值为希望DDE服务器应用执行的命令,命令格式和语法需要参看DDE服务器应用的文档applnamestring类型,指定服务器应用的DDE名称topicnamestring类型,指定命令中要使用的DDE应用的数据或实例返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝-3不能终止服务器如果任何参数的值为NULLExecRemote()函数返回NULL
语法二、应用程序打开某个通道后向DDE服务器应用发送命令(热连接方式)
语法ExecRemote ( command, handle {, windowhandle } )
参数commandstring类型,其值为希望DDE服务器应用执行的命令,命令格式和语法需要参看DDE服务器应用的文档handlelong类型,指定使用的DDE通道句柄windowhandlelong类型,可选项,指明用做DDE客户的PowerBuilder窗口的窗口句柄。省略该参数时,当前应用中的活动窗口用做DDE客户返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝-9handle参数的值为NULL
GetDataDDE()
功能从热连接服务器应用中获取数据,并将其保存到指定的字符串变量中。
语法GetDataDDE ( string )
参数stringstring类型变量,用于保存接收到的数据返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLGetDataDDE()函数返回NULL
GetDataDDEOrigin()
功能确定来自热连接DDE服务器应用的数据源,成功时将应用的DDE标识保存在参数指定的变量中。
语法GetDataDDEOrigin ( applstring, topicstring, itemstring )
参数applstringstring类型变量,用于保存服务器应用的名称topicstringstring类型变量,用于保存主题(比如,在Excel中,主题可以是REGION.XLSitemstringstring类型变量,用于保存数据项标识(比如,在Excel中,数据项标识可以是R1C2)返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLGetDataDDEOrigin()函数返回NULL
GetRemote()
功能请求服务器应用传送数据,该函数有两种格式:语法一、请求DDE服务器应用提供数据并将数据保存在变量中,该格式不要求事先打开通道,适用于仅发出少数几个请求的情况;语法二、请求DDE服务器应用提供数据并将数据保存在变量中,该格式适用于热连接的情况,即应用程序已经与服务器建立通道。下面分别予以介绍。
语法一、请求DDE服务器应用提供数据并将数据保存在变量中,该格式不要求事先打开通道,适用于仅发出少数几个请求的情况。
语法GetRemote ( location, target, applname, topicname )
参数locationstring类型,指明要从DDE服务器的哪个位置返回数据。位置的表达方式由具体的DDE服务器决定targetstring类型变量,用于保存返回的数据applnamestring类型,指定DDE服务器应用的DDE名称topicnamestring类型,指定命令中要使用的DDE应用的数据或实例返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝如果任何参数的值为NULLGetRemote()函数返回NULL
语法二、请求DDE服务器应用提供数据并将数据保存在变量中,该格式适用于热连接的情况,即应用程序已经与服务器建立通道。语法GetRemote ( location, target, handle {, windowhandle } )参数locationstring类型,指明要从DDE服务器的哪个位置返回数据。位置的表达方式由具体的DDE服务器决定targetstring类型变量,用于保存返回的数据handlelong类型,指定使用的DDE通道句柄 windowhandlelong类型,可选项,指明用做DDE客户的PowerBuilder窗口的窗口句柄。省略该参数时,当前应用中的活动窗口用做DDE客户。使用handle()函数可以得到窗口句柄。返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝-9Handle参数的值为NULL
OpenChannel()
功能打开连接DDE服务器的通道。
语法OpenChannel ( applname, topicname {, windowhandle } )applnamestring类型,指定DDE服务器应用的DDE名称topicnamestring类型,指定命令中要使用的DDE应用的数据或实例windowhandlelong类型,可选项,指明用做DDE客户的PowerBuilder窗口的窗口句柄。省略该参数时,当前应用中的活动窗口用做DDE客户返回值Long。函数执行成功时返回一个正数作为已打开通道的句柄,发生错误时返回下述值之一:-1打开失败-9句柄为NULL
RespondRemote()
功能发送一条DDE消息,指示是否接受来自远程DDE应用的命令或数据。
语法RespondRemote ( boolean )
参数boolean:其值为boolean量的逻辑表达式,TRUE表示接收先前收到的命令或数据,FALSE表示不接收先前收到的命令或数据返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果boolean参数的值为NULLRespondRemote()函数返回NULL
SetRemote()
功能请求服务器应用把指定项设置为指定值。该函数有两种语法格式:语法一、请求DDE服务器应用接收保存在指定位置的数据,该格式不要求事先打开通道,适用于仅发出少数几个请求的情况;语法二、请求DDE服务器应用接收保存在指定位置的数据,该格式适用于热连接的情况,即应用程序已经与服务器建立通道。下面分别予以介绍。
语法一、请求DDE服务器应用接收保存在指定位置的数据,该格式不要求事先打开通道,适用于仅发出少数几个请求的情况。
语法SetRemote ( location, value, applname, topicname )
参数locationstring类型,指明要DDE服务器的哪一部分接收数据。位置的表达方式由具体的DDE服务器决定valuestring类型变量,指定发送给DDE服务器的数据applnamestring类型,指定DDE服务器应用的DDE名称topicnamestring类型,指定要接收数据的DDE应用的数据或实例返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝如果任何参数的值为NULLSetRemote()函数返回NULL
语法二、请求DDE服务器应用接收保存在指定位置的数据,该格式适用于热连接的情况,即应用程序已经与服务器建立通道。
语法SetRemote ( location, value, handle {, windowhandle } )
参数locationstring类型,指明要DDE服务器的哪一部分接收数据。位置的表达方式由具体的DDE服务器决定valuestring类型变量,指定发送给DDE服务器的数据handlelong类型,指定使用的DDE通道句柄windowhandlelong类型,可选项,指明用做DDE客户的PowerBuilder窗口的窗口句柄。省略该参数时,当前应用中的活动窗口用做DDE客户返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1未启动连接-2请求被拒绝-9Handle参数的值为NULL
StartHotLink()
功能建立与DDE服务器应用的热连接,热连接建立之后,DDE服务器端相关数据的变化会立即触发PowerBuilder应用相关窗口的HotLinkAlarm事件。
语法StartHotLink ( location, applname, topic )
参数locationstring类型,指明DDE服务器哪一部分数据变化时触发窗口的HotLinkAlarm事件。位置的表达方式由具体的DDE服务器决定applnamestring类型,指定DDE服务器应用的DDE名称topicnamestring类型,指定数据改变将触发窗口的HotLinkAlarm事件的DDE应用的数据或实例返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1无指定服务器-2请求被拒绝如果任何参数的值为NULLStartHotLink()函数返回NULL
StopHotLink()
功能关闭与DDE服务器应用的热连接。
语法StopHotLink ( location, applname, topic )
参数locationstring类型,指明要终止DDE服务器哪一部分的热连接。位置的表达方式由具体的DDE服务器决定applnamestring类型,指定DDE服务器应用的DDE名称topicnamestring类型,指定要终止热连接的DDE应用的数据或实例返回值Integer。函数执行成功时返回1,发生错误时返回下述值之一:-1连接未曾启动-2请求被拒绝-3不能终止服务器如果任何参数的值为NULLStopHotLink()函数返回NULL  
CPU()
功能得到自当前应用程序启动后开始CPU所消耗的时间,以毫秒为单位。
语法CPU()
返回值Long。返回自当前应用程序启动后开始CPU所消耗的时间,以毫秒为单位。
Idle()
功能该函数在用户每次活动(例如,按键盘、移动鼠标等)后重置定时器,n秒后触发应用对象的Idle事件。
语法Idle ( n )
参数n:指定空闲时间间隔,以秒为单位。该参数的值设置为0时,停止空闲检测,不再触发应用对象的Idle事件返回值Integer。函数执行成功时返回1,此时启动定时器。如果不能启动定时器或定时器未启动而n的值指定为0时,函数返回-1。如果任何参数的值为NULLIdle()函数返回NULL。用法利用Idle()函数,应用程序可以构造自己的屏幕保护程序,避免安全数据的泄露。当使用Idle()函数已经启动了定时器后,如果再次以非0参数调用Idle()函数,那么该函数重设时间间隔,但并不启动新的定时器。Idle()函数启动定时器后,如果在指定的时间间隔(从用户最近一次操作算起)内没有操作应用程序,那么就触发应用对象的Idle事件,在这个事件中可以编写关闭窗口、退出数据库登录等一系列代码,然后使用Restart()函数重新启动应用程序,起到保密的目的。发生下述任何情况时,系统自动重置定时器(即重新开始计时):n 用户在该应用程序的任何窗口内移动鼠标或单击鼠标(双击鼠标时首先触发单击事件)n 在该应用程序的某个窗口是当前窗口时用户按下了任意一个或多个键n 在该应用程序的窗口最小化时,用户在该应用的图标上单击鼠标或移动鼠标n 在该应用程序的窗口最小化并且该应用程序是当前应用程序(应用名称被加亮显示)时,用户按了任何按键n 可视数据窗口检索数据时引起的编辑控件(指漂浮在数据窗口当前行/列上的编辑控件)重绘操作
Timer()
功能 在指定的时间间隔内反复触发指定窗口的定时器事件。
语法Timer ( interval {, windowname } )
参数interval:指定两次触发Timer事件之间的时间间隔,有效值在065之间。如果该参数的值指定为0,那么关闭定时器,不再触发指定窗口的Timer事件windowname:窗口名,指定时间间隔到时要触发哪个窗口的Timer事件。省略该参数时,触发当前窗口的Timer事件返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULLTimer()函数返回NULL。用法使用Timer()函数可以周期性地触发指定窗口的Timer事件,这样,每当时间间隔过去时,应用程序都可以完成一些周期性的工作,比如绘制简单动画等。将Timer()interval参数设置为非0值时启动定时器并开始计时;将该函数的interval参数设置为0时关闭定时器,终止计时任务。需要注意的是,在Microsoft Windows系统中,该函数能够计时的最小时间间隔为0.055秒(约1/18秒),如果把interval参数的值设置小于0.055,那么该定时器将每隔0.055秒触发一次窗口的Timer事件。Microsoft Windows 3.x最多只支持系统中同时启动16个定时器。
Day()
功能得到日期型数据中的号数(131之间的整数值)
语法Day ( date )
参数date:要得到号数的日期值返回值 Integer。函数执行成功时返回号数(131之间的整数值)。如果date参数的值为NULL,则Day()函数返回NULL
DayName()
功能得到指定日期是一周中的星期几(例如,Sunday, Monday...)
语法DayName ( date )
参数datedate类型值或变量返回值String。函数执行成功时返回指定日期的星期表示(例如,Sunday, Monday...)。如果date参数的值为NULL,则DayName()函数返回NULL
DayNumber()
功能得到日期型数据是一星期中的第几天(17之间的整数表示,星期天为1,星期一为2...)
语法DayNumber ( date )
参数datedate类型值或变量返回值Integer。函数执行成功时返回指定日期是一星期中的第几天(1~7表示,星期天为1,星期一为2...)。如果date参数的值为NULL,则DayNumber()函数返回NULL
DaysAfter()
功能得到两个日期间的天数。
语法DaysAfter ( date1, date2 )
参数date1date类型,指定起始日期date2date类型,指定终止日期返回值Long。函数执行成功时得到两个日期之间的天数。如果date2的日期在date1的前面,那么DaysAfter()函数返回负值。如果任何参数的值为NULL,则DaysAfter()函数返回NULL
Hour()
功能得到时间值中的小时,采用24小时制。
语法Hour ( time )
参数timetime类型的值返回值Integer。函数执行成功时得到time参数中的小时(0023之间)。如果time参数的值为NULL,则Hour()函数返回NULL
Minute()

功能得到时间值中的分钟,有效值在0059之间。
语法Minute ( time )
参数timetime类型的值返回值Integer。函数执行成功时得到time参数中的分钟(0059之间)。如果time参数的值为NULL,则Minute()函数返回NULL
Month()
功能得到日期值中的月份,有效值在112之间。
语法Month ( date )
参数datedate类型的值返回值Integer。函数执行成功时得到date参数中的月份(112之间)。如果date参数的值为NULL,则Month()函数返回NULL
Now()
功能得到客户机的当前系统时间,返回值为Time类型。
语法Now()返回值Time。该函数返回客户机的当前系统时间。
RelativeDate()
功能得到指定日期前多少天或后多少天的日期。
语法RelativeDate(date,n)
参数dateDate类型,指定基准日期ninteger类型,指定天数返回值Date。当n的值大于0时返回参数date指定日期后第n天的日期;当n的值小于0时返回参数date指定日期前第n天的日期。如果任何参数的值为NULL,则RelativeDate()函数返回NULL
RelativeTime()
功能得到指定时间前多少秒或后多少秒的时间,采用24小时制。
语法RelativeTime ( time, n )参数timetime类型,指定基准时间nlong类型,指定秒数返回值Time。当n的值大于0时返回参数time指定时间后第n秒的时间;当n的值小于0时返回参数time指定时间前第n秒的时间。如果任何参数的值为NULL,则RelativeTime()函数返回NULL
Second()
功能得到时间值中的秒,有效值在0059之间。
语法Second ( time )
参数timetime类型的值返回值Integer。函数执行成功时得到time参数中的秒(0059之间)。如果time参数的值为NULL,则Second()函数返回NULL
Today()
功能得到当前系统日期,在某些情况下,同时得到当前系统时间。
语法Today()返回值Date。该函数返回当前系统日期。用法单独调用Today()函数时,该函数总是返回当前系统日期,但是,虽然Today()函数的返回值类型为Date,在该函数用做某些函数的参数、而该参数要求DateTime类型的值时,Today()函数也能够在返回当前系统日期的同时返回当前系统时间。再如,Today()函数作为数据窗口控件SetItem()函数的参数,该函数参数中指定的数据窗口列的数据类型为DateTime,那么当前系统日期和时间将同时设置到数据窗口指定项中。
Year()
功能得到日期值中的年度(有效取值10003000)
语法Year(date)
参数datedate类型的值返回值Integer。函数执行成功时得到date参数中的年份(采用四位数字),发生错误时返回1900,如果date参数的值为NULL,则Year()函数返回NULL。用法当应用程序把有两位数字表示年份的字符串转换成日期时,PowerBuilder根据下述规则选择世纪:如果年份值在0049之间,PowerBuilder将年份中的世纪(前两位数字)当作20;如果年份值在5099之间,PowerBuilder将年份中的世纪(前两位数字)当作19。比如,字符串"20-10-25"PowerBuilder转换为2020-10-25;字符串"98-10-25"PowerBuilder转换为1998-10-25。因此,如果应用程序中需要指定1950年之前的日期,应该使用四位数字表示年份,以避免引起歧义。PowerBuilder能够处理的年份从10003000之间。  
FileClose()
功能关闭先前用FileOpen()函数打开的文件。
语法FileClose ( fileno )
参数filenointeger,指定要关闭文件的文件句柄,该句柄使用FileOpen()函数打开文件时得到返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果fileno参数的值为NULL,那么FileClose()函数返回NULL
FileDelete()
功能删除指定的文件。
语法FileDelete ( filename )
参数filenamestring类型,指定要删除文件的文件名,其中可以包含路径返回值Boolean。函数执行成功时返回TRUE,发生错误时返回FALSE。如果filename参数的值为NULL,那么FileDelete()函数返回NULL
FileExists()
功能检查指定的文件是否存在。
语法FileExists ( filename )
参数filenamestring类型,指定要检查存在性的文件的文件名,其中可以包含路径返回值Boolean。如果指定文件存在时返回TRUE,不存在时返回FALSE。如果filename参数的值为NULL,那么FileExists()函数返回NULL。用法如果filename参数指定的文件被另一个应用加锁锁住,那么FileExists()函数也将返回FALSE
FileLength()
功能得到指定文件的长度(以字节为单位)。
语法FileLength ( filename )
参数filenamestring类型,指定要得到其长度的文件的文件名,其中可以包含路径返回值Long。函数执行成功时返回指定文件的长度(以字节为单位)。如果指定的文件不存在,函数返回-1。如果filename参数的值为NULL,那么FileLength()函数返回NULL
FileOpen()
功能以指定的读写方式打开指定的文件,同时返回该文件的句柄。
语法FileOpen(filename{,filemode{,fileaccess{,filelock{,writemode,{creator,filetype}}}}})
参数filenamestring类型,指定要打开文件的名称,其中可以包含路径 filemodeFileMode枚举类型,可选项,指定文件打开方式。有效取值为:?LineMode! - 缺省值,行模式;?StreamMode! - 流模式fileaccessFileAccess枚举类型,可选项,指定文件访问方式。有效取值为:?Read! - 缺省值,只读方式,这样打开的文件只能进行读操作;?Write! - 只写方式,这样打开的文件只能进行写操作?filelockFileLock枚举类型,可选项,指定文件加锁方式。有效取值为:n LockReadWrite! - 缺省值,只有打开该文件的用户能够访问该文件,其它用 户对该文件的访问均被拒绝;n LockRead! - 只有打开该文件的用户能够读该文件,但其它任何用户均可写该文件;n LockWrite! - 只有打开该文件的用户能够写该文件,但其它任何用户均可读该文件;n Shared! - 所有用户均可读写该文件writemodeWriteMode枚举类型,可选项,当fileaccess参数指定为Write!时,该参数指定在指定文件已经存在时数据的添加方式。有效取值为:?Append! - 缺省值,将数据添加到原文件尾部;?Replace! - 覆盖原有数据creator:可选项,用于Macintosh机,使用四个字符的字符串指定文件的创建者。指定该参数后,必须同时指定filetype参数filetype:可选项,用于Macintosh机,使用四个字符的字符串指定文件类型返回值Integer。函数执行成功时返回打开文件的句柄,随后的文件操作函数利用该句柄完成对文件的操作。发生错误时函数返回-1。如果任何参数的值为NULL,那么FileOpen()函数返回NULL。用法当文件以行模式打开时,每执行一次FileRead()函数读取一行数据;每执行一次FileWrite()函数,该函数自动在写出的字符串末尾增加一个回车(CR)换行(LF)符(这是应用程序在Windows 系统中运行时的情况,在UNIX下只加一个换行字符)。当文件以流模式打开时,执行一次FileRead()函数读取32,765个字节的数据,如果余下数据没有这么多,那么FileRead()函数就读取所有余下的数据;执行一次FileWrite()函数时,最多可写入32,765个字节的数据,并且不添加回车换行字符。当文件以写方式使用FileOpen()函数打开时,如果指定的文件不存在,那么FileOpen()函数创建该文件。
FileRead()
功能从指定文件中读取数据。
语法FileRead ( fileno, variable )
参数filenointeger类型,指定文件句柄(由FileOpen()函数得到)variablestringblob类型的变量,用于保存读取的数据返回值Integer。函数执行成功时返回读取的字符数或字节数;如果在读取任何字符前读到了文件结束符(EOF),则FileRead()函数返回-100;当指定文件以行模式打开时,如果在读取任何字符之前遇到了回车(CR)或换行(LF)字符,则FileRead()函数返回0。如果发生其它错误,FileRead()函数返回-1。如果任何参数的值为NULL,那么FileRead()函数返回NULL。用法当指定文件以行模式(Line Mode)打开时,FileRead()函数一次读取一行数据,并把它保存到参数variable中,然后跳过行结束符(回车换行符,操作系统不同,使用的字符也不同),把文件指针移动到下一行的起始位置。当文件以流模式(Stream Mode)打开时,FileRead()函数或一直读取到文件结尾,或读取32,765字节的数据,决定于两者哪个数据长度更短些。
FileSeek()
功能将文件指针移动到指定位置。读写文件时相应函数会自动移动文件指针。
语法FileSeek ( fileno, position, origin )
参数filenointeger类型,指定文件句柄(由FileOpen()函数得到)positionlong类型,指定相对于origin参数指定位置的新位置偏移量,以字节为单位originSeekType枚举类型,指定从哪里开始移动文件指针,即指针移动的基准。有效取值为:?FromBeginning! - 缺省值,从文件开头移动指针;?FromCurrent! - 从当前位置移动文件指针;?FromEnd! - 从文件结尾处移动文件指针返回值Long。函数执行成功时返回指针移动后的指针位置。如果任何参数的值为NULL,那么FileSeek()函数返回NULL


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页