当前位置: 代码迷 >> PB >> 条码输入框失去焦点有关问题
  详细解决方案

条码输入框失去焦点有关问题

热度:41   发布时间:2016-04-29 06:40:22.0
条码输入框失去焦点问题
PB做的条码输入客户端,把输入焦点定位到可输入的控件上,一扫描相应的条形码信息就输入到文本框中去了,但是如果没有输入焦点,或另一个不相干的程序获得输入焦点,那就有点乱套了。我想实现的是,不管什么情况,不需要把輸入焦點定位到可輸入的控件上,只要扫描器一工作,我的程序的可輸入框就能获得当前的条形码信息。请问该如何实现呢?

------解决方案--------------------
自己写驱动,或者写个钩子(可以用c或者delphi之类的来写),有键盘输入时自动触发指定的事件,然后处理
------解决方案--------------------
如果焦点在非输入框中,能得到输入的信息?
------解决方案--------------------
在窗口的key事件里写代码,你爱送到那就送到那
给一段代码示例,在这段代码里,读出扫描枪的字符,然后送到文本框,然后检索数据
为了防止手输入,有一小段代码是检测时间的,不过我已经屏蔽掉了
----------------
//已通过条码枪测试,条码枪是单字送来的
choose case key
case key0!
is_key=is_key+'0'
case key1!
is_key=is_key+'1'
case key2!
is_key=is_key+'2'
case key3!
is_key=is_key+'3'
case key4!
is_key=is_key+'4'
case key5!
is_key=is_key+'5'
case key6!
is_key=is_key+'6'
case key7!
is_key=is_key+'7'
case key8!
is_key=is_key+'8'
case key9!
is_key=is_key+'9'
end choose

//录入第一个字符时,记录时间
if len(is_key)=1  then idt_s = now()

string ls_s,ls_e
if keydown(keyenter!) then
idt_e = now()

ls_s = string(idt_s,'fff')
ls_e = string(idt_e,'fff')

// if abs(secondsafter(idt_s,idt_e)) +(long(ls_e) -  long(ls_s))* 0.001 > 0.1 then 
// is_key = ''
// return
// end if

sle_hykh.text = is_key
is_key=''

st_rtv.triggerevent(clicked!)
end if
  相关解决方案