当前位置:首页 > 技能相关 > 实施日记 > 正文内容

天健系统输入法使用方法F9(pubcomm.pbd)

admin1年前 (2024-04-12)实施日记3260 修订时间:2024-04-12 21:20:47

天健业务系统F9快捷键开立诊断、检查、检验等项目时,一般会用到默认的输入法,如何在新建的窗口中使用呢?接下来时具体的使用方法。

一、初始化输入法

在新建窗体的open事件或者其他窗口加载时操作的事件中,初始化输入法

//加载输入法
uo_diag_input.uf_set_userobj(dw_2,"ue_getResult")
uo_diag_input.uf_load_data("西医诊断","01")
uo_diag_input.uf_unshow()

以上内容解读:

1.1 uo_diag_input为pubcomm.pbd的uo_input_keyboard对象的实例化,需要引入新建窗口。

image.png

uo_input_keyboard.zip

1.2 指定接收返回值的控件和具体事件

uo_diag_input.uf_set_userobj(dw_2,"ue_getResult")

1.3 加载指定字典内容

uo_diag_input.uf_load_data("西医诊断","01")

西医诊断为表格input_setting中配置的指定视图。

1.4 隐藏输入法窗口,加载时不显示

uo_diag_input.uf_unshow()

二、绑定输入法控件dw_2创建 pbm_dwnkey 方法事件

事件如下:

image.png

代码如下:

// 处理F1_F12等窗口的key事件 20240412注释原有代码
If wf_key(key)=0  Then Return -1
//上述IF语句可以忽略,根据实际需求决定,可以做一下前置性操作
choose case key
	case KeyF9!
		long ll_row
		string ls_diag_type
		ll_row = dw_2.getrow()
		choose case GetColumnName()
			case "diag_desc"
				ls_diag_type = dw_2.getitemString(ll_row,"diag_type")
				choose case ls_diag_type
			      case "西医诊断"
						uo_diag_input.uf_setFocus()
					case "中医诊断"
						uo_cdiag.uf_setFocus()
				end choose		
	   end choose
end choose

wf_key代码如下:

// 返回值: 0 为执行了按键处理,-1为未执行
choose case key
	case keyF11!
		return 0
	case keyF5!
		return 0
	case KeyEscape!
		return 0
	case else
		Return -1
end choose

三、落实ue_getResult事件,用以接收返回值和设置值显示位置

事件如下:

image.png

精简代码如下:

strinputresult    lst_strinputresult        //新输入法的结构
strinputresult    lst_strinputresultlog     //新输入法的结构
long ll_row,ll_row_countrow,ll_rowlog,ll_sum_row
string ls_diag_type
//获取当前行号
ll_row=GetRow()
//当前行小于0则不做操作,避免系统故障 
IF ll_row<=0 or isnull(ll_row) THEN RETURN 
//获取操作字段名
ls_columnname=GetColumnName()
//根据字段名执行不同操作
choose case ls_columnname
	case 'diag_desc'
	        //根据不同诊断类型设置不同方法和事件,这个与keydown对应
		ls_diag_type = dw_2.getitemString(ll_row,"diag_type")
		choose case ls_diag_type
			case '西医诊断'
				uo_diag_input.uf_getResult(lst_strinputresult)
				uo_diag_input.uf_unshow()
				//如果返回的项目编码为空,则退出
				if trim(lst_strinputresult.item_code)='' or isnull(lst_strinputresult.item_code) then return
				//返回值赋予公共结构体
				lst_strinputresultlog = lst_strinputresult 
			case '中医诊断'
				uo_cdiag.uf_getResult(lst_strinputresult)
		                uo_cdiag.uf_unshow()
		                //如果返回的项目编码为空,则退出
				if trim(lst_strinputresult.item_code)='' or isnull(lst_strinputresult.item_code) then return
				//中医诊断会有弹窗,这个具体医院具体分析,非必要。选择症型、治则
				OpenWithParm(w_cdiag_item_NEW,lst_strinputresult)
				//返回值赋予公共结构体
				lst_strinputresultlog = Message.PowerObjectparm
		end choose
		//设置返回值
		ll_row_countrow = dw_2.rowcount()
		ll_sum_row =0
		//判断返回的项目标号是否已存在,存在则不允许再次开立(这里时特殊的方面,例如诊断不允许重复)
		for ll_rowlog =1 to ll_row_countrow
			if lst_strinputresultlog.item_code = dw_2.getitemstring(ll_rowlog,"item_code") then
			  ll_sum_row = ll_sum_row + 1
		   end if
		next
		//不存在重复值则显示,否则提示存在 
		if ll_sum_row =0 then
		   this.Setitem(ll_row,"diag_desc", lst_strinputresultlog.item_name)
		   this.Setitem(ll_row,"diag_code", lst_strinputresultlog.item_code)
	        else
		    messagebox("提示","新开诊断与历史诊断冲突,开立失败,诊断名称:"+lst_strinputresultlog.item_name+",诊断编码:"+lst_strinputresultlog.item_code + ".")
		    ll_sum_row =0
	        end if	
end choose
this.setfocus()

备注:以上代码uo_diag_input.uf_setFocus()是用来显示输入法和设置筛选条件的,默认书写即可

 您阅读本篇文章共花了: 

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

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

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

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

分享给朋友:

发表评论

访客

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