$PBExportHeader$uo_mle_demo.sru forward global type uo_mle_demo from multilineedit end type end forward global type uo_mle_demo from multilineedit integer width = 1486 integer height = 540 event keydown pbm_keydown event keyup pbm_keyup event ue_textchanged ( ) event char pbm_char event ue_topmost ( string arg_in, ref string arg_out ) end type global uo_mle_demo uo_mle_demo type variables private: string _oldtext public: string Separater[] = {";", "~r~n"} end variables event keyup;if this._oldtext <> this.text then this.trigger event ue_textChanged() end if this._oldtext = this.text end event event ue_textchanged();string ls_org, ls_parm, ls_des long ll_start, ll_end, ll_pos long ll_selStart, ll_selLen, ll_tmp string ls_separater long i ll_start = 1 do while (true) ll_pos = 0 for i = 1 to upperbound(this.separater) ll_tmp = pos(this.text, this.separater[i], ll_start) if ll_tmp = 0 then continue if ll_pos = 0 or ll_tmp < ll_pos then ll_pos = ll_tmp ls_separater = this.separater[i] end if next if ll_pos = 0 then ll_end = len(this.text) exit end if if ll_pos >= this.Position( ) then ll_end = ll_pos - 1 exit else ll_start = ll_pos + len(ls_separater) end if loop ls_parm = mid(this.text, ll_start, ll_end - ll_start + 1) if trim(ls_parm) = '' then return end if this.trigger event ue_topmost(ls_parm, ls_des) ll_selStart = ll_start + len(ls_parm) ll_selLen = len(ls_des) - len(ls_parm) this.text = mid(this.text, 1, ll_start - 1) + ls_des + mid(this.text, ll_end + 1, len(this.text) - ll_end) this.selecttext(ll_selStart, ll_selLen) end event event char;if key = '~r' and this.selectedlength( ) > 0 then this.selecttext(this.selectedstart() + this.selectedlength(), 0) return 1 end if if this.selectedlength( ) > 0 then this.clear() end if this._oldtext = this.text end event event ue_topmost(string arg_in, ref string arg_out);arg_out = arg_in end event on uo_mle_demo.create end on on uo_mle_demo.destroy end on event constructor;this._oldtext = this.text end event