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值。这样就可以自定义输入的值了 ,并且可以快速定制自己的输入法使用。