当前位置:首页 > 技能相关 > PowerBuilder > 正文内容

PB 输入法的特殊改造,指定返回值

admin3个月前 (03-02)PowerBuilder490 修订时间:2025-03-02 14:50:30

概述

天健业务系统F9快捷键开立诊断、检查、检验等项目时,一般会用到默认的输入法,如何调整输入法的反参结构体呢?接下来时具体的使用方法。

本实例用到如下两个文件:

uo_input_keyboard_new.zip

str_inputresult_new.zip

一个用于接收反参的结构体,具体内容可以自行添加,一个是输入法对象;

具体引用的方法可以参见这篇文章,不做过多的赘述:天健系统输入法使用方法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值,对应输入法配置信息,请看如下截图:

image.png

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

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=456

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。