这里说的DataWindow是指dataobject的那个,而不是DataWindow Control
DataWindow可以有几个参数,但是PB并没有提供专门的函数去取得这些参数,DW Syntax也没有指出用那些关系可以去除这些参数信息。但是这些信息还是可以直接取得
dw_control.object.dataWindow.table.arguments
取出来的是一个字符串,参数之间通过~n连接,参数名和参数类型之间通过~t连接
比如有参数arg1/String和arg2/Number,我们用上述语句得到的结果就会是
"arg1~tString~narg2~tNumber"
所以这里取出来还需要做一些出来才能利用这些信息
// 定义一个custom user object去记录参数信息
(PB代码)
$PBExportHeader$nvo_dw_args.sru
forward
global type nvo_dw_args from nonvisualobject
end type
end forward
global type nvo_dw_args from nonvisualobject autoinstantiate
end type
type variables
string argName
string argType
end variables
on nvo_dw_args.create
call super::create
TriggerEvent( this, "constructor" )
end on
on nvo_dw_args.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
event constructor;/**
* This object use to store the argument info of datawindow
* argName store argument's name
* argType store argument's data type
*/
end event
// 读取和分析参数并返回参数信息
(PB代码)
$PBExportHeader$n_cst_dw_util2.sru
forward
global type n_cst_dw_util2 from nonvisualobject
end type
end forward
global type n_cst_dw_util2 from nonvisualobject
end type
global n_cst_dw_util2 n_cst_dw_util2
type variables
DataWindow idw
end variables
forward prototypes
public function integer of_getarguments (ref nvo_dw_args args[])
end prototypes
public function integer of_getarguments (ref nvo_dw_args args[]);/**
* get the registe datawindow arguments.
* the arguments will be store into nvo_dw_args array args[]
* @param ref args[]- nvo_dw_args
* @return integer
* - return the arguments count if successful
* - return 0 if no arguments
* - return -1 if invalid idw or error
* @author Ben
* @history
* 1. created 21-Apr-2008 Ben
*/
string ls_argStr
string ls_tmpArg
integer li_pos, li_posTab, li_index
if not isValid(idw) then return -1
ls_argStr = idw.object.dataWindow.table.arguments
if isNull(ls_argStr) or ls_argStr = "" then return 0
do
li_pos = pos(ls_argStr, '~n')
if li_pos > 0 then
ls_tmpArg = left(ls_argStr, li_pos - 1)
ls_argStr = right(ls_argStr, len(ls_argStr) - li_pos)
else
ls_tmpArg = ls_argStr
end if
if not isNull(ls_tmpArg) and ls_tmpArg <> "" then
li_posTab = pos(ls_tmpArg, '~t')
if li_posTab > 0 then
li_index = upperBound(args) + 1
args[li_index].argName = left(ls_tmpArg, li_posTab - 1)
args[li_index].argType = right(ls_tmpArg, len(ls_tmpArg) - li_posTab)
end if
end if
loop while li_pos > 0
return 1
end function
on n_cst_dw_util2.create
call super::create
TriggerEvent( this, "constructor" )
end on
on n_cst_dw_util2.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
返回的nvo_dw_args数组包含了参数名和参数类型,这样比较方便使用.
分享到:
相关推荐
文中提供有关DataWindow的案例,在案例体现出DataWindow控件函数及使用技巧。通过学习能快速掌握DataWindow控件
2、打开窗体——〉点击工具箱——〉右键选择——〉添加选项卡(命名为:DataWindow)——〉.NET Freamework组件——〉浏览——〉找到C:\Windows\Microsoft.NET\assembly\GAC_32\Sybase.PowerBuilder.DataWindow.Win\...
pb中用DataWindow实现对多表的修改;pb中用DataWindow实现对多表的修改;pb中用DataWindow实现对多表的修改;pb中用DataWindow实现对多表的修改;pb中用DataWindow实现对多表的修改;pb中用DataWindow实现对多表的修改;pb...
datawindow.net直连测试
indate(日期时间)字段
datawindow数据窗体
DataWindow数据窗口资料
datawindow.net 2.5 full
pb中xml导入datawindow源码
DataWindow.net2.0的操作手册及例子
DataWindow.net打印功能的实现方法
DataWindow.NET V2.0.rar
this is an independent library to support type-ahead for dropdown datawindow in powerbuilder 12.5
Datawindow 导出到PDF文件 很多情况下都要用到此功能 今天试了 效果很好 分享给大家使用
这个东东干什么用的就不说了,该知道的就知道了,不知道的就别知道了, 将9097文件夹下的文件覆盖到安装路径 \Sybase\DataWindow .NET 2.5 以及\Sybase\DataWindow Designer 2.5即可.
DataWindow .NET 2.5 完美破解补丁,VS2005中也可以使用
PB12 datawindow保存为bmp 采用api函数来实现
pb datawindow 手册 pb datawindow 手册
datawindow.net做的简单例子web销售订单
使用datawindow.descirbe/modify动态生成datawindow的范例程序