這裡說的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的使用技巧 IT man
csdn blogdatawindow的使用技巧 bsp 當retrieve時不清除原有datawindow資料 當你呼叫retrieve函式,powerbuilder自動清除原有datawindow然後retrieve資料。在datawindowretrievestart事件中,使用return2...
C 中使用pb的dataWindow
使用方法詳細看 注意 需在 工具箱 中新增 新增選項卡 命名該選項卡後右擊選擇 選擇項 將dll檔案引用進來。出現問題1 缺少sybase引用,將目標框架改為 net framwork 4 此時會出現問題2.出現問題2 混合模式程式集是針對 v2.0.50727 版的執行時生成的,在沒有配置其他資訊...
STL提取引數模版的型別
一 解決的問題 1 其實是可以推導出函式的返回值型別的 但是是無法在模版類的外面進行使用的 下面的兩種情況是編譯通過的 1 templatet print t x 2 templatestruct a 2 解決t無法在類模版的外面進行使用的問題 例如 函式定義 templatestruct b ty...