$PBExportHeader$w_fingerprintcollect.srw forward global type w_fingerprintcollect from w_publ_base end type type dw_1 from u_dw_rbtnfilter within w_fingerprintcollect end type type cb_collect from uo_imflatbutton within w_fingerprintcollect end type type cb_del from uo_imflatbutton within w_fingerprintcollect end type type cb_fresh from uo_imflatbutton within w_fingerprintcollect end type type cb_check from uo_imflatbutton within w_fingerprintcollect end type type st_1 from statictext within w_fingerprintcollect end type type ln_bar from line within w_fingerprintcollect end type type ln_bar2 from line within w_fingerprintcollect end type type r_bar from rectangle within w_fingerprintcollect end type end forward global type w_fingerprintcollect from w_publ_base integer width = 2149 integer height = 1616 string title = "指纹采集" dw_1 dw_1 cb_collect cb_collect cb_del cb_del cb_fresh cb_fresh cb_check cb_check st_1 st_1 ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar end type global w_fingerprintcollect w_fingerprintcollect type variables uo_fingerprint uo_fp boolean lb_collect = false end variables forward prototypes public subroutine wf_lockui (boolean arg_lock) end prototypes public subroutine wf_lockui (boolean arg_lock);dw_1.enabled = not arg_lock cb_fresh.enabled = not arg_lock cb_check.enabled = not arg_lock cb_del.enabled = not arg_lock cb_collect.enabled = not arg_lock cb_exit.enabled = not arg_lock lb_collect = arg_lock end subroutine on w_fingerprintcollect.create int iCurrent call super::create this.dw_1=create dw_1 this.cb_collect=create cb_collect this.cb_del=create cb_del this.cb_fresh=create cb_fresh this.cb_check=create cb_check this.st_1=create st_1 this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_1 this.Control[iCurrent+2]=this.cb_collect this.Control[iCurrent+3]=this.cb_del this.Control[iCurrent+4]=this.cb_fresh this.Control[iCurrent+5]=this.cb_check this.Control[iCurrent+6]=this.st_1 this.Control[iCurrent+7]=this.ln_bar this.Control[iCurrent+8]=this.ln_bar2 this.Control[iCurrent+9]=this.r_bar end on on w_fingerprintcollect.destroy call super::destroy destroy(this.dw_1) destroy(this.cb_collect) destroy(this.cb_del) destroy(this.cb_fresh) destroy(this.cb_check) destroy(this.st_1) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) end on event open;call super::open;dw_1.settrans(sqlca) dw_1.retrieve(sys_scid) end event event resize;call super::resize;ln_bar.EndX = THIS.Width ln_bar2.EndX = THIS.Width r_bar.Width = THIS.Width end event event closequery;call super::closequery;if lb_collect then return 1 uo_fp.uf_abort() end event type cb_func from w_publ_base`cb_func within w_fingerprintcollect boolean visible = false integer x = 1298 integer y = 920 end type type cb_exit from w_publ_base`cb_exit within w_fingerprintcollect integer x = 933 integer width = 151 integer height = 164 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type dw_1 from u_dw_rbtnfilter within w_fingerprintcollect integer y = 188 integer width = 2103 integer height = 1328 boolean bringtotop = true string dataobject = "dw_user_fp" end type event rowfocuschanged;call super::rowfocuschanged;this.selectrow(0, false) if currentrow > 0 then this.selectrow(currentrow, true) end event type cb_collect from uo_imflatbutton within w_fingerprintcollect integer x = 151 integer width = 261 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "采集指纹" string normalpicname = "new.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row Long i Blob lb_finger String ls_msg ll_row = dw_1.GetRow() IF ll_row <= 0 THEN RETURN dw_1.AcceptText() IF dw_1.Object.fingercount[ll_row] >= 5 THEN MessageBox('提示','每个用户的指纹采集数量不能超过5个') GOTO ext END IF wf_lockUI(TRUE) Open(w_sys_wait_fp) w_sys_wait_fp.Show() w_sys_wait_fp.wf_set_msg('正在收集指纹...') FOR i = 1 TO 3 IF uo_fp.uf_regfingerprint(REF lb_finger, REF ls_msg) <> 1 THEN w_sys_wait_fp.wf_set_msg('采集失败,' + ls_msg + ',还有重复次数' + String(3 - i) + '次') IF i = 3 THEN MessageBox('提示','采集失败,' + ls_msg) GOTO ext END IF ELSE EXIT END IF NEXT w_sys_wait_fp.Hide() Close(w_sys_wait_fp) String ll_userid Long ll_scid Long ll_empid ll_userid = dw_1.Object.u_user_userid[ll_row] ll_scid = dw_1.Object.u_user_scid[ll_row] ll_empid = dw_1.Object.u_user_empid[ll_row] Long cnt SELECT count(*) INTO :cnt FROM u_user_fp Where UserID = :ll_userid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '查询指纹信息失败 ' + sqlca.SQLErrText) GOTO ext ELSEIF cnt = 0 THEN INSERT INTO u_user_fp ( scid, Empid, userid ) VALUES ( :ll_scid, :ll_empid, :ll_userid ) ; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '插入指纹信息失败 ' + sqlca.SQLErrText) GOTO ext END IF COMMIT; END IF IF dw_1.Object.fingercount[ll_row] <= 0 THEN UPDATEBLOB u_user_fp Set fingers = :lb_finger Where UserID = :ll_userid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '保存失败 ' + sqlca.SQLErrText) GOTO ext END IF COMMIT; ELSE Blob lb_org SELECTBLOB fingers INTO :lb_org FROM u_user_fp Where UserID = :ll_userid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '查询数据指纹失败 ' + sqlca.SQLErrText) GOTO ext END IF lb_org = lb_org + lb_finger UPDATEBLOB u_user_fp Set fingers = :lb_org Where UserID = :ll_userid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '保存失败 ' + sqlca.SQLErrText) GOTO ext END IF COMMIT; END IF MessageBox('提示', '指纹采集成功') cb_fresh.TriggerEvent('clicked') ext: IF IsValid(w_sys_wait_fp) THEN Close(w_sys_wait_fp) wf_lockUI(FALSE) end event type cb_del from uo_imflatbutton within w_fingerprintcollect integer x = 672 integer width = 261 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "删除指纹" string normalpicname = "delete.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;long ll_row ll_row = dw_1.GetRow() if ll_row <= 0 then return IF MessageBox ("询问","是否确定要删除选中用户所有指纹信息吗?",Question!,YesNo! ) = 2 THEN RETURN blob lb_null setnull(lb_null) string ll_userid ll_userid = dw_1.object.u_user_userid[ll_row] update u_user_fp set fingers = null where userid = :ll_userid; if sqlca.sqlcode <> 0 then MessageBox('错误', '删除指纹信息失败 ' + sqlca.sqlerrtext) return end if commit; cb_fresh.triggerevent('clicked') end event type cb_fresh from uo_imflatbutton within w_fingerprintcollect integer width = 151 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "刷新" string normalpicname = "refresh.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;long ll_row ll_row = dw_1.GetRow() dw_1.retrieve(sys_scid) if ll_row > 0 then dw_1.scrolltorow(ll_row) end if end event type cb_check from uo_imflatbutton within w_fingerprintcollect integer x = 411 integer width = 261 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "验证指纹" string normalpicname = "open.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row,i ll_row = dw_1.GetRow() IF ll_row <= 0 THEN RETURN String ll_userid ll_userid = dw_1.Object.u_user_userid[ll_row] Blob lb_data wf_lockUI(TRUE) SELECTBLOB fingers INTO :lb_data FROM u_user_fp Where UserID = :ll_userid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误', '获取指纹信息失败 ' + sqlca.SQLErrText) GOTO ext END IF String ls_msg Open(w_sys_wait_fp) w_sys_wait_fp.Show() w_sys_wait_fp.wf_set_msg('正在验证指纹...') FOR i = 1 TO 3 IF uo_fp.uf_verifyfingerprint(lb_data, ls_msg) <> 1 THEN w_sys_wait_fp.wf_set_msg(ls_msg + ',还有重复次数' + String(3 - i) + '次') IF i = 3 THEN MessageBox('提示', ls_msg) GOTO ext END IF ELSE EXIT END IF NEXT w_sys_wait_fp.Hide() Close(w_sys_wait_fp) MessageBox('提示', '验证成功') ext: IF IsValid(w_sys_wait_fp) THEN Close(w_sys_wait_fp) wf_lockUI(FALSE) end event type st_1 from statictext within w_fingerprintcollect integer x = 1143 integer y = 8 integer width = 942 integer height = 160 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 255 long backcolor = 67108864 string text = "说明:每个用户最多可设置5个指纹,采集指纹时请使用一根指头的第一节指纹匀速在指纹采集器上滑行3次." boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type ln_bar from line within w_fingerprintcollect long linecolor = 268435456 integer linethickness = 4 integer beginy = 172 integer endx = 3200 integer endy = 172 end type type ln_bar2 from line within w_fingerprintcollect long linecolor = 16777215 integer linethickness = 4 integer beginx = 9 integer beginy = 176 integer endx = 3273 integer endy = 176 end type type r_bar from rectangle within w_fingerprintcollect long linecolor = 16777215 integer linethickness = 4 long fillcolor = 1073741824 integer x = 1221 integer y = 12 integer width = 87 integer height = 68 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar.beginy - 5 end event