请登录[¤ 阳光论坛 ¤]参与讨论


阳光宝宝
90

 □ 主题: 多行文本组合代码
 □ 内容: 1楼

      假设在你自编的记事本中,有这样的文本: 
       
      ① 
      ② 
      ③ 
      ④ 
      ⑤ 
      北京 
      上海 
      天津 
      重庆 
      深圳 
       
        你要编辑成这样的形式: 
       
      ①北京 
      ②上海 
      ③天津 
      ④重庆 
      ⑤深圳 
       
        你是不是要先复制再粘贴来回折腾5次?这还只是有5个条目的情况,如果有100个甚至更多,你还不烦死?你一定会想:如果能一次搞定该多好啊!不错,人越懒才越有创新,本功能正是来解决这个问题的。代码如下: 
       
       
      Option Explicit 
       
      * Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
       
      * Sub Command1_Click() 
      On Error GoTo 100 
      Dim Pos1 As Long, Pos2 As Long, k As Integer, L As Long, Line As Long, st1 As String, st2() As String 
       
      st1 = Clipboard.GetText: If Len(st1) = 0 Then Exit Sub 
      Do While Right$(st1, 2) = Chr(13) & Chr(10): st1 = Left$(st1, Len(st1) - 2): Loop ''去掉字串后面的回车 
      Do While Left$(st1, 2) = Chr(13) & Chr(10): st1 = Mid$(st1, 3): Loop ''去掉字串前面的回车 
      st2 = Split(st1, vbCrLf) 
       
      Line = SendMessage(Text1.hWnd, 186, 0, 0) - 1 ''获取文本总行数 
      SendMessage Text1.hWnd, 176, 0, L ''获取光标在文本中的位置 
      Pos1 = SendMessage(Text1.hWnd, 201, L, 0) ''获取光标所在行号 
       
      Do 
       Pos2 = SendMessage(Text1.hWnd, 187, Pos1, 0) ''获取该行首字符位置 
       L = SendMessage(Text1.hWnd, 193, Pos2, 0) ''获取该行的长度 
       st1 = Space(L) 
       SendMessage Text1.hWnd, 196, Pos1, ByVal st1 ''获取该行字串 
       Text1.SetFocus 
       SendMessage Text1.hWnd, 177, Pos2, ByVal Pos2 + L ''反相显示选定内容 
       st1 = st1 & st2(k) 
       SendMessage Text1.hWnd, 194, 0, ByVal st1 ''用指定文本替换选定内容 
       Pos1 = Pos1 + 1: k = k + 1 
      Loop Until k > UBound(st2) Or Pos1 > Line 
       
      100 
      End Sub 
       
       
        使用方法与通常的复制粘贴没有什么区别:先一次性复制整个的字符串(从“北京”到“深圳”),再将光标定位到“①”(在“①”的前面或者后面都行),点击本功能按纽,就一切OK了!代码很简单又有注释,笔者就不详细分析了。本代码同样适用于富文本框。 
      
——
      
争分夺秒背单词 → subsequent  a.随后的,后来的
 □ 发帖时间:2012-2-20|11:11:56 |回复|返回|

 页次:1/1页 每页10  本主题贴数0 分页: 1


你还没有登录论坛,所以不能发表你的意见。你可以选择:

1、我已注册,我要

2、我还没注册,我要

3、太麻烦了,我还是

Go Top

Copyright by(C)2003-2015 http://abc.sy578.cn