$PBExportHeader$w_msg_send.srw
forward
global type w_msg_send from w_publ_base
end type
type sle_msgtitle from singlelineedit within w_msg_send
end type
type st_2 from statictext within w_msg_send
end type
type mle_objdpm from multilineedit within w_msg_send
end type
type dw_1 from u_dw_rbtnfilter within w_msg_send
end type
type rb_usergrp from radiobutton within w_msg_send
end type
type rb_user from radiobutton within w_msg_send
end type
type cb_que from uo_imflatbutton within w_msg_send
end type
type cb_1 from uo_imflatbutton within w_msg_send
end type
type st_1 from statictext within w_msg_send
end type
type sle_billcode from singlelineedit within w_msg_send
end type
type st_3 from statictext within w_msg_send
end type
type dw_msg_fj from datawindow within w_msg_send
end type
type uo_html from uo_html_editor within w_msg_send
end type
type ln_bar from line within w_msg_send
end type
type ln_bar2 from line within w_msg_send
end type
type r_bar from rectangle within w_msg_send
end type
end forward
global type w_msg_send from w_publ_base
integer x = 23
integer y = 24
integer width = 3502
integer height = 2468
string title = "请输入新消息"
event ue_fj_del ( )
event ue_fj_del_all ( )
event ue_fj_add_link ( )
event ue_fj_add ( )
sle_msgtitle sle_msgtitle
st_2 st_2
mle_objdpm mle_objdpm
dw_1 dw_1
rb_usergrp rb_usergrp
rb_user rb_user
cb_que cb_que
cb_1 cb_1
st_1 st_1
sle_billcode sle_billcode
st_3 st_3
dw_msg_fj dw_msg_fj
uo_html uo_html
ln_bar ln_bar
ln_bar2 ln_bar2
r_bar r_bar
end type
global w_msg_send w_msg_send
type variables
uo_transmsg uo_msg
Blob ins_fjdata[] //附件转换为的blob
Long ins_max_fj = 0//附件数目
end variables
forward prototypes
public function integer wf_addobjdpm (string arg_objdpm)
public function integer wf_dw ()
end prototypes
event ue_fj_del();Long lrow
Long ls_i,ls_j = 0
Blob ls_filedata[]
lrow = dw_msg_fj.GetRow()
IF lrow <= 0 THEN
MessageBox('系统提示','请先选择目标!')
RETURN
END IF
FOR ls_i = 1 To (lrow - 1)
ls_j++
ls_filedata[ls_j] = ins_fjdata[ls_i]
NEXT
FOR ls_i = (lrow + 1) TO UpperBound(ins_fjdata)
ls_j++
ls_filedata[ls_j] = ins_fjdata[ls_i]
NEXT
ins_fjdata[] = ls_filedata[]
ins_max_fj = UpperBound(ins_fjdata)
dw_msg_fj.DeleteRow(lrow)
end event
event ue_fj_del_all();Long ls_i
Blob ls_null[]
ins_fjdata[] = ls_null[]
ins_max_fj = 0
IF dw_msg_fj.RowCount() > 0 THEN
FOR ls_i = dw_msg_fj.RowCount() TO 1 STEP -1
dw_msg_fj.DeleteRow(ls_i)
NEXT
END IF
end event
event ue_fj_add_link();s_inputbox s_ipb
String ls_linkpath = ''
Long ls_newrow
s_ipb.Title = '请输入超链接路径'
OpenWithParm(w_inputbox,s_ipb)
ls_linkpath = Message.StringParm
IF Trim(ls_linkpath) = '' THEN
RETURN
END IF
ls_newrow = dw_msg_fj.InsertRow(0)
dw_msg_fj.Object.fjname[ls_newrow] = ls_linkpath
dw_msg_fj.Object.fjpath[ls_newrow] = ls_linkpath
dw_msg_fj.Object.fjtype[ls_newrow] = 1 //0为文件,1为超链接
ins_max_fj++
ins_fjdata[ins_max_fj] = Blob(ls_linkpath)
end event
event ue_fj_add();Integer i
Long ls_i,ls_j,ls_newrow,ls_filesize
Blob ls_filedata
String Pathname,ls_filename
String Filename[],errmsg
i = GetFileSaveName("选择附件",Pathname,Filename[],"*","程序文件,*.*")
IF i = 1 AND Trim(Pathname) <> '' THEN
FOR ls_i = 1 TO UpperBound(Filename)
IF UpperBound(Filename) = 1 THEN
ls_filename = Pathname
ELSE
ls_filename = Pathname + '\'+Filename[ls_i]
END IF
IF dw_msg_fj.Find( 'fjpath='+"'"+ls_filename+"'", 0, dw_msg_fj.RowCount()) > 0 THEN
CONTINUE;
END IF
IF f_filetoblob(ls_filename,ls_filedata,errmsg) = 0 THEN
MessageBox('系统提示',errmsg)
RETURN
END IF
ls_filesize = Len(ls_filedata)
ls_newrow = dw_msg_fj.InsertRow(0)
dw_msg_fj.Object.fjname[ls_newrow] = Filename[ls_i]
dw_msg_fj.Object.fjpath[ls_newrow] = ls_filename
dw_msg_fj.Object.fjsize[ls_newrow] = ls_filesize
ins_max_fj++
ins_fjdata[ins_max_fj] = ls_filedata
NEXT
END IF
end event
public function integer wf_addobjdpm (string arg_objdpm);string tmp_objdpm
tmp_objdpm=trim(mle_objdpm.text)
if tmp_objdpm = '' then
mle_objdpm.text=arg_objdpm
else
if pos(tmp_objdpm,arg_objdpm,1) > 0 and len(tmp_objdpm) = len(arg_objdpm) then return 0
if pos(tmp_objdpm,';'+arg_objdpm+';',1) > 0 then return 0
if pos(tmp_objdpm,arg_objdpm+';',1) > 0 then return 0
if pos(tmp_objdpm,';'+arg_objdpm,1) > 0 then return 0
mle_objdpm.text=tmp_objdpm + ';'+arg_objdpm
end if
return 1
end function
public function integer wf_dw ();dw_1.setredraw(false)
if rb_user.checked then
dw_1.dataobject='dw_objdpm_user'
else
dw_1.dataobject='dw_objdpm_usergrp'
end if
dw_1.settransobject(sqlca)
dw_1.retrieve(sys_scid)
dw_1.setredraw(true)
return 1
end function
on w_msg_send.create
int iCurrent
call super::create
this.sle_msgtitle=create sle_msgtitle
this.st_2=create st_2
this.mle_objdpm=create mle_objdpm
this.dw_1=create dw_1
this.rb_usergrp=create rb_usergrp
this.rb_user=create rb_user
this.cb_que=create cb_que
this.cb_1=create cb_1
this.st_1=create st_1
this.sle_billcode=create sle_billcode
this.st_3=create st_3
this.dw_msg_fj=create dw_msg_fj
this.uo_html=create uo_html
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.sle_msgtitle
this.Control[iCurrent+2]=this.st_2
this.Control[iCurrent+3]=this.mle_objdpm
this.Control[iCurrent+4]=this.dw_1
this.Control[iCurrent+5]=this.rb_usergrp
this.Control[iCurrent+6]=this.rb_user
this.Control[iCurrent+7]=this.cb_que
this.Control[iCurrent+8]=this.cb_1
this.Control[iCurrent+9]=this.st_1
this.Control[iCurrent+10]=this.sle_billcode
this.Control[iCurrent+11]=this.st_3
this.Control[iCurrent+12]=this.dw_msg_fj
this.Control[iCurrent+13]=this.uo_html
this.Control[iCurrent+14]=this.ln_bar
this.Control[iCurrent+15]=this.ln_bar2
this.Control[iCurrent+16]=this.r_bar
end on
on w_msg_send.destroy
call super::destroy
destroy(this.sle_msgtitle)
destroy(this.st_2)
destroy(this.mle_objdpm)
destroy(this.dw_1)
destroy(this.rb_usergrp)
destroy(this.rb_user)
destroy(this.cb_que)
destroy(this.cb_1)
destroy(this.st_1)
destroy(this.sle_billcode)
destroy(this.st_3)
destroy(this.dw_msg_fj)
destroy(this.uo_html)
destroy(this.ln_bar)
destroy(this.ln_bar2)
destroy(this.r_bar)
end on
event close;f_setProfileString (sys_empid,this.classname(), "x",string(this.x))
f_setProfileString (sys_empid,this.classname(), "y",string(this.y))
end event
event open;THIS.TriggerEvent('ue_before_open')
s_admsg s_msg
s_msg = Message.PowerObjectParm
wf_dw()
IF Integer(f_ProfileString (sys_empid,THIS.ClassName(), "x",String(THIS.X))) = 0 THEN
THIS.X = 23
THIS.Y = 24
ELSE
THIS.X = Integer(f_ProfileString (sys_empid,THIS.ClassName(), "x",String(THIS.X)))
THIS.Y = Integer(f_ProfileString (sys_empid,THIS.ClassName(), "y",String(THIS.Y)))
END IF
IF s_msg.ifback = 1 THEN
mle_objdpm.Text = s_msg.sendemp
sle_billcode.Text = s_msg.billcode
sle_msgtitle.Text = '回复:'+s_msg.msgtitle
uo_html.uf_sethtml('
' + s_msg.msg)
else
sle_billcode.Text = s_msg.billcode
END IF
end event
event key;if keydown(KeyControl!) and keydown(keyS!) then
cb_que.triggerevent(clicked!)
return 1
end if
end event
event resize;call super::resize;if newwidth < 3493 then this.width = 3493
if newheight < 2388 then this.height = 2388
ln_bar.endx = this.width
ln_bar2.endx = this.width
r_bar.width = this.width
dw_1.x = this.width - dw_1.width - 40
rb_user.x = dw_1.x + 50
rb_usergrp.x = dw_1.x + 300
mle_objdpm.width = dw_1.x - mle_objdpm.x
sle_msgtitle.width = mle_objdpm.width
uo_html.width = dw_1.x - uo_html.x
dw_msg_fj.width = uo_html.width
dw_1.height = this.height - dw_1.y - 140
uo_html.height = this.height - uo_html.y - dw_msg_fj.height - 140
dw_msg_fj.y = uo_html.y + uo_html.height
end event
type cb_func from w_publ_base`cb_func within w_msg_send
boolean visible = false
integer x = 14
integer y = 1092
integer width = 133
integer taborder = 10
boolean enabled = false
string text = ""
end type
type cb_exit from w_publ_base`cb_exit within w_msg_send
integer x = 594
integer width = 151
integer height = 164
integer taborder = 110
integer picsize = 16
toolbaralignment pic_align = alignattop!
boolean border = false
end type
type sle_msgtitle from singlelineedit within w_msg_send
event key pbm_keydown
integer x = 256
integer y = 504
integer width = 2546
integer height = 84
integer taborder = 30
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
boolean autohscroll = false
borderstyle borderstyle = stylelowered!
end type
event modified;keybd_event ( 9, 0, 0 , 0 ) // 按下tab
keybd_event ( 9, 0, 2, 0 ) // 释放tab
return 1
end event
type st_2 from statictext within w_msg_send
integer x = 23
integer y = 520
integer width = 224
integer height = 48
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 134217739
boolean enabled = false
string text = "标题:"
alignment alignment = right!
boolean focusrectangle = false
end type
type mle_objdpm from multilineedit within w_msg_send
event key pbm_dwnkey
integer x = 256
integer y = 200
integer width = 2542
integer height = 296
integer taborder = 20
boolean bringtotop = true
integer textsize = -11
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
boolean vscrollbar = true
boolean displayonly = true
borderstyle borderstyle = stylelowered!
end type
type dw_1 from u_dw_rbtnfilter within w_msg_send
integer x = 2821
integer y = 260
integer width = 658
integer height = 1764
integer taborder = 130
boolean bringtotop = true
string dataobject = "dw_objdpm_user"
boolean vscrollbar = true
boolean rbutton_filter_use = true
end type
event rowfocuschanged;if currentrow<=0 then return
this.selectrow(0,false)
this.selectrow(currentrow,true)
end event
event doubleclicked;if row<=0 then return
string ls_objdpm
if rb_user.checked then
ls_objdpm=dw_1.object.username[row]
else
ls_objdpm=dw_1.object.usergroup[row]
end if
wf_addobjdpm(ls_objdpm)
end event
type rb_usergrp from radiobutton within w_msg_send
integer x = 3118
integer y = 196
integer width = 247
integer height = 52
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 134217739
string text = "用户组"
end type
event clicked;wf_dw()
end event
type rb_user from radiobutton within w_msg_send
integer x = 2871
integer y = 196
integer width = 247
integer height = 52
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 134217739
string text = "用户"
boolean checked = true
end type
event clicked;wf_dw()
end event
type cb_que from uo_imflatbutton within w_msg_send
integer width = 398
integer height = 164
integer taborder = 60
string text = "发送[Ctrl+s]"
string normalpicname = "email_view2.bmp"
integer picsize = 16
toolbaralignment pic_align = alignattop!
boolean border = false
end type
event clicked;call super::clicked;String ls_objdpm,ls_msgtitle,ls_s_msg,arg_msg,ls_billcode
Boolean ifcommit
Long ls_i
ls_objdpm = Trim(mle_objdpm.Text)
ls_msgtitle = Trim(sle_msgtitle.Text)
ls_s_msg = Trim(uo_html.uf_gethtml( ))
ls_billcode = Trim(sle_billcode.Text)
IF ins_max_fj = 0 THEN
ifcommit = TRUE
ELSE
ifcommit = FALSE
END IF
IF uo_msg.f_create_admsg(sys_empid,publ_operator,ls_objdpm,ls_msgtitle,ls_s_msg,arg_msg,0,ls_billcode,ifcommit) = 0 THEN
MessageBox('系统提示','消息发送失败{'+arg_msg+'}')
RETURN
END IF
FOR ls_i = 1 TO ins_max_fj
IF ls_i = ins_max_fj THEN
ifcommit = TRUE
ELSE
ifcommit = FALSE
END IF
IF uo_msg.f_save_fj(uo_msg.uo_msgid,dw_msg_fj.Object.fjname[ls_i],ins_fjdata[ls_i],dw_msg_fj.Object.fjsize[ls_i],dw_msg_fj.Object.fjtype[ls_i],arg_msg,ifcommit) = 0 THEN
MessageBox('系统提示','消息发送失败{'+arg_msg+'}')
RETURN
END IF
NEXT
Close(PARENT)
end event
type cb_1 from uo_imflatbutton within w_msg_send
integer x = 398
integer width = 197
integer height = 164
integer taborder = 70
boolean bringtotop = true
string text = "附件"
string normalpicname = "email_fj.bmp"
integer picsize = 16
toolbaralignment pic_align = alignattop!
boolean border = false
end type
event clicked;call super::clicked; m_Dfc_Control_PopupMenu dmPopupMenu
String menustr,ls_level
menustr = "Text=添附件~tEvent=ue_fj_add"
menustr = menustr + "|" + "Text=添链接~tEvent=ue_fj_add_link"
menustr = menustr + "|" + "Text=-"
menustr = menustr + "|" + "Text=删条目~tEvent=ue_fj_del"
menustr = menustr + "|" + "Text=清空~tEvent=ue_fj_del_all"
IF Len(Trim(menustr)) <> 0 THEN
dmPopupMenu = CREATE m_Dfc_Control_PopupMenu
dmPopupMenu.mf_BuildMenu(THIS, menustr)
dmPopupMenu.mf_PopMenu()
DESTROY dmPopupMenu
END IF
end event
type st_1 from statictext within w_msg_send
integer x = 23
integer y = 200
integer width = 224
integer height = 48
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 134217739
string text = "收件人:"
alignment alignment = right!
boolean focusrectangle = false
end type
type sle_billcode from singlelineedit within w_msg_send
event key pbm_keydown
integer x = 256
integer y = 596
integer width = 704
integer height = 84
integer taborder = 40
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
boolean autohscroll = false
borderstyle borderstyle = stylelowered!
end type
event modified;keybd_event ( 9, 0, 0 , 0 ) // 按下tab
keybd_event ( 9, 0, 2, 0 ) // 释放tab
return 1
end event
type st_3 from statictext within w_msg_send
integer x = 23
integer y = 612
integer width = 224
integer height = 48
boolean bringtotop = true
integer textsize = -9
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 134217739
string text = "相关号:"
alignment alignment = right!
boolean focusrectangle = false
end type
type dw_msg_fj from datawindow within w_msg_send
integer y = 1668
integer width = 2807
integer height = 696
integer taborder = 90
boolean bringtotop = true
string dataobject = "dw_msg_fj"
boolean hscrollbar = true
boolean vscrollbar = true
boolean livescroll = true
borderstyle borderstyle = stylelowered!
end type
event rbuttondown; m_Dfc_Control_PopupMenu dmPopupMenu
String menustr,ls_level
menustr = "Text=添附件~tEvent=ue_fj_add"
menustr = menustr + "|" + "Text=添链接~tEvent=ue_fj_add_link"
menustr = menustr + "|" + "Text=-"
if row > 0 then
this.scrolltorow(row)
menustr = menustr + "|" + "Text=删条目~tEvent=ue_fj_del"
end if
menustr = menustr + "|" + "Text=清空~tEvent=ue_fj_del_all"
IF Len(Trim(menustr)) <> 0 THEN
dmPopupMenu = CREATE m_Dfc_Control_PopupMenu
dmPopupMenu.mf_BuildMenu(THIS, menustr)
dmPopupMenu.mf_PopMenu()
DESTROY dmPopupMenu
END IF
end event
event rowfocuschanged;this.selectrow(0, false)
if currentrow > 0 then
this.selectrow(currentrow, true)
end if
end event
type uo_html from uo_html_editor within w_msg_send
integer y = 696
integer width = 2807
integer height = 912
integer taborder = 60
boolean bringtotop = true
end type
on uo_html.destroy
call uo_html_editor::destroy
end on
type ln_bar from line within w_msg_send
long linecolor = 268435456
integer linethickness = 4
integer beginy = 172
integer endx = 3200
integer endy = 172
end type
type ln_bar2 from line within w_msg_send
long linecolor = 16777215
integer linethickness = 4
integer beginx = 14
integer beginy = 176
integer endx = 3278
integer endy = 176
end type
type r_bar from rectangle within w_msg_send
long linecolor = 16777215
integer linethickness = 4
long fillcolor = 1073741824
integer x = 2126
integer y = 40
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