PB 输入法的特殊改造,指定返回值
概述
天健业务系统F9快捷键开立诊断、检查、检验等项目时,一般会用到默认的输入法,如何调整输入法的反参结构体呢?接下来时具体的使用方法。
本实例用到如下两个文件:
一个用于接收反参的结构体,具体内容可以自行添加,一个是输入法对象;
具体引用的方法可以参见这篇文章,不做过多的赘述:天健系统输入法使用方法F9(pubcomm.pbd)
以下是部分示例代码:
一、实例化加载数据
uo_1.uf_set_userobj(dw_detail,"ue_getResult") //设置接收反参的方法和对象
uo_1.uf_set_storage(is_storage[]) //设置药局参数
uo_1.uf_load_data("诊疗药品协定","01") //设置输入法,以及输入法类型默认01即可
uo_1.uf_unshow() //隐藏输入法对象,不显示二:显示与过滤
uo_1.uf_setFocus() //显示输入法对象
uo_1.uf_set_filter("STORAGE = '" + is_STARGE + "'") //设置过滤条件三、接收反参的方法ue_getresult
str_inputresult_new lst_strinputresult //新输入法的结构
str_inputresult_new lst_strinputresultlog //新输入法的结构
long ll_row,ll_row_countrow,ll_rowlog,ll_sum_row
string ls_diag_type
long ll_PRESC_TYPE
//获取当前行号
ll_row=il_currnt_row
//当前行小于0则不做操作,避免系统故障
IF ll_row<=0 or isnull(ll_row) THEN RETURN
ll_PRESC_TYPE = il_presc_type
//根据处方类型
choose case ll_PRESC_TYPE
case 1
uo_2.uf_getResult(lst_strinputresult)
uo_2.uf_unshow()
//如果返回的项目编码为空,则退出
if trim(lst_strinputresult.item_code)='' or isnull(lst_strinputresult.item_code) then return
//返回值赋予公共结构体
lst_strinputresultlog = lst_strinputresult
case 0
uo_1.uf_getResult(lst_strinputresult)
uo_1.uf_unshow()
//如果返回的项目编码为空,则退出
if trim(lst_strinputresult.item_code)='' or isnull(lst_strinputresult.item_code) then return
//返回值赋予公共结构体
lst_strinputresultlog = lst_strinputresult
end choose
//设置返回的值
this.setitem(ll_row,"drug_code",lst_strinputresult.item_code)
this.setitem(ll_row,"drug_name",lst_strinputresult.item_name)
this.setitem(ll_row,"package_spec",lst_strinputresult.item_spec)
this.setitem(ll_row,"package_units",lst_strinputresult.package_units)
this.setitem(ll_row,"dosage",10)
this.setitem(ll_row,"dosage_units",lst_strinputresult.item_unit)
this.setitem(ll_row,"firm_id",lst_strinputresult.performed_dept)
this.setfocus()
if this.rowcount() > 0 then
dw_master.SetTabOrder("starge",0)
dw_master.SetTabOrder("presc_type",0)
end if四、选择DW一行的方法
//单击选择行 if row<=0 or isnull(row) then return else this.selectrow(0, false) this.selectrow(row, true) end if
五、设置返回时的具体方法
uo_input_keyboard_new 的 uf_set_result
long ll_row
long ll_type_all,ll_type_row
int li_tmp
string ls_col_name,ls_item_result
dec ldc_result
boolean lb_find_result=false
ll_row=dw_1.getrow()
if ll_row<=0 then
return 0
end if
//字段信息行
ll_type_all = ids_type.rowcount()
for ll_type_row=1 to ll_type_all
li_tmp = ids_type.getitemnumber(ll_type_row,"result_sort")
ls_col_name=ids_type.getitemstring(ll_type_row,"data_col")
//保存结果
choose case li_tmp
case 0
//非结果字段
case 1
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.Item_code=ls_item_result
lb_find_result=true
case 2
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.Item_name=ls_item_result
lb_find_result=true
case 3
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.Item_class=ls_item_result
lb_find_result=true
case 4
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.Item_spec=ls_item_result
lb_find_result=true
case 5
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.Item_unit=ls_item_result
lb_find_result=true
case 6
ldc_result = dw_1.getitemnumber(ll_row,ls_col_name)
i_Result.Item_price=ldc_result
lb_find_result=true
case 7
ldc_result = dw_1.getitemnumber(ll_row,ls_col_name)
i_Result.Item_quantity=ldc_result
lb_find_result=true
case 8
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.performed_dept=ls_item_result
lb_find_result=true
case 9
ls_item_result = dw_1.getitemstring(ll_row,ls_col_name)
i_Result.package_units=ls_item_result
lb_find_result=true
case else
messagebox("提示","定义了无效返回结果字段(应当在0-7)")
return -1
end choose
next
if not lb_find_result then
messagebox("提示","没有定义任何返回结果字段。")
return -1
end if
return 0这里的li_tmp值,对应输入法配置信息,请看如下截图:

第一个红框标注的Y 代表其会显示出来,第二个红框对应的就是li_tmp值。这样就可以自定义输入的值了 ,并且可以快速定制自己的输入法使用。

