匹配任意字符:[原创]实现任意文本框的字符插入来源: 发布时间:星期四, 2009年2月12日 浏览:78次 评论:0
实现任意文本框插入 在access窗体中个窗体下有多个子窗体而个子窗体又有多个文本框当在文本框输入时往往需要插入些(比如些特殊以组合框列表存放)类似于记事本插入但记事本由于只有个窗口(即个文本框)而窗体中有多个文本框不可能对每个文本框进行编码原来以为需要api等但没有成功摸索许久的后发现通过screen对象里些思路方法能很简单解决上述问题 前提:假设个窗体中个文本框(txt)个组合框(cbo)文本框用于输入组合框存放 目标:文本框输入时点击组合框值该值能插入到文本框已选中位置 基本思路: (1) 鼠标点击组合框前用全局变量记录下光标位置(selstart,sellength)窍门技巧:在鼠标移到组合框时发生事件此时光标还停留在文本框位置 IntStart = Screen.ActiveControl.SelStart Sellength = Screen.ActiveControl.SelLength (2) 选中组合框后将光标还回文本框并且通过原来光标位置对文本框重新选择将选择值用组合框中内容替换掉即可 Screen.PreviousControl.SetFocus Screen.ActiveControl.SelStart = IntStart Screen.ActiveControl.SelLength = Sellength Screen.ActiveControl.SelText = cboSpecialChar Screen.ActiveControl.SelStart = IntStart + Len(cbo) Screen.ActiveControl.SelLength = 0 (3) 由于(1)是在mousemove时发生时mousedown后光标已经转移到了组合框所以需要在mousedown前就记录下光标位置这需要定窍门技巧 具体讨论原代码在:http://www.office-cn.net/bbs/dispbbs.asp?boardid=2&id=28581 上也非常感谢上面各access高手(huanghaicg1,海狸先生,tmtony等)提供宝贵建议~~~ [email protected] 具体代码: Dim fN As Boolean, IntStart As Integer, Sellength As Integer Private Sub cbo_AfterUpdate On Error GoTo err_txt Screen.PreviousControl.SetFocus Screen.ActiveControl.SelStart = IntStart Screen.ActiveControl.SelLength = Sellength Screen.ActiveControl.SelText = cboSpecialChar Screen.ActiveControl.SelStart = IntStart + Len(cbo) Screen.ActiveControl.SelLength = 0 err_exit: Exit Sub err_txt: Resume err_exit End Sub Private Sub cbo_LostFocus fN = False End Sub Private Sub cbo_MouseDown(Button As Integer, Sht As Integer, X As Single, Y As Single) fN = True End Sub Private Sub cbo_MouseMove(Button As Integer, Sht As Integer, X As Single, Y As Single) On Error GoTo err_cboSpecialChar_MouseMove If Not fN Then IntStart = Screen.ActiveControl.SelStart Sellength = Screen.ActiveControl.SelLength End If Exit Sub err_cboSpecialChar_MouseMove: Exit Sub End Sub 0
相关文章读者评论发表评论 |