如何取得文本框中包含指定字符串的行
来源:互联网 发布:mac os设置默认输入法 编辑:程序博客网 时间:2024/05/21 13:56
文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了获取包含指定字符串的行,并演示了如何获取文本框中文本总行数和任意指定行的文本内容。
'add a textbox with "multiline=true","scrollbars=2".
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SendMessageByNum Lib "USER32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "USER32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam _
As Long, ByVal lParam As String) As Long
Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4
Private Const EM_LINELENGTH = &HC1
Function GetLineText(ByVal txtbox As TextBox, ByVal LineIndex As Long) As String '返回指定行的内容
Dim lc As Long, linechar As Long
linechar = SendMessageByNum(txtbox.hWnd, EM_LINEINDEX, LineIndex, 0)
lc = SendMessageByNum(txtbox.hWnd, EM_LINELENGTH, linechar, 0) + 1
GetLineText = String(lc + 2, 0)
Mid(GetLineText, 1, 1) = Chr(lc And &HFF)
Mid(GetLineText, 2, 1) = Chr(lc / &H100)
lc = SendMessageByString(txtbox.hWnd, EM_GETLINE, LineIndex, GetLineText)
GetLineText = Left(GetLineText, lc)
End Function
Function getlinewithstr(ByVal txtbox As TextBox, ByVal mystr As String) As String
Dim linecount As Long, temp() As String, i As Long
linecount = SendMessage(txtbox.hWnd, EM_GETLINECOUNT, 0, 0) '返回行数
ReDim temp(1 To linecount)
For i = 1 To linecount
temp(i) = "第" & i & "行:" & GetLineText(txtbox, i - 1) '添加行号
Next
getlinewithstr = Join(Filter(temp, mystr), vbCrLf) ' 字符串过滤
Erase temp
End Function
Private Sub Command1_Click()
MsgBox getlinewithstr(Text1, "CSDN"), 0, "包含“CSDN”的行"
End Sub
Private Sub Form_Load()
Dim a(25) As String, i As Long
For i = 0 To 25
a(i) = String(50, Chr(i + 97))
Next
Text1.Text = Join(a, "CSDN")
End Sub
- 如何取得文本框中包含指定字符串的行
- 如何取得文本框中包含指定字符串的行
- 字符串中包含指定字符串
- shell-判断指定文件中是否包含指定的字符串
- 在C#中取得指定长度的字符串
- 在C#中取得指定长度的字符串
- 在C#中取得指定长度的字符串
- grep如何搜索不包含指定字符串的文本
- 查询文件中包含多少个指定的字符串
- 取得文本框内容加到连接字符串中,出错
- 判断字符串是否包含指定的字符串
- Vim删除不包含指定字符串的行
- 从文本文件里抽取包含指定字符串的行
- SHELL脚本替换包含指定字符串的行
- 如何解决闭包只能取得包含函数中任何变量的最后一个值
- 如何取得字符串中字符长度
- 查找包含指定字符串的文件
- 找出包含指定字符串的文本文件名称
- 能否判断动态数组有没有被分配过?
- 递归与排列
- 利用EXCEL 实现字符串的计算
- 利用API 实现字符串表达式的计算
- 关于天文数字十进制与十六进制间的转换
- 如何取得文本框中包含指定字符串的行
- 大数阶乘的计算(一)
- 大数阶乘的计算(二)
- 关于日期的中文转换
- 大数阶乘的计算(三)
- 实现货币金额中文大写转换的程序
- 全国15亿人口中选1000个代表有多少种选法?
- 整数幂的求解
- 大数阶乘的计算(五)