十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
求行:
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。成都创新互联专业提供成都网站设计、成都网站建设,网页设计,网站制作(企业站、成都响应式网站建设公司、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)+1
这个代码呢,我的理解呢,是获取在selstart的地方的行数。一般来讲selstart的地方都是光标的地方,然后会给你返回line。不过返回的时候要自己加1。不是很懂这个语法,有懂得可以教我一下
以上是求行数。
求列:
For i = 0 To RichTextBox1.SelStart
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart - i) 0 Then Exit For
j = j + 1
Next i
这个for循环呢,讲的是检查这一行光标前有多少个列,然后用J输出列的个数。
因为VB6.0没有RichTextBox1.GetFirstCharIndexOfCurrentLine这种语法。所以就得自己模拟这个过程。
具体怎么检查的呢,首先将 i 从0循环到光标处,
如果 【光标字符数】处的行数 减去 【光标字符数减去 i 个字符数】处的行数小于0了,我写了个不为零。但此时写小于零就可以。那么代表着换行了,同时也代表着光标到上一行之间有多少字。用j存储循环次数,得出对应列数。(我们中文习惯是叫第一列,但程序实际上是第零列,但在循环的时候就注意到并解决这个问题了)
如果你替换写法,例如
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart + i) 0 Then Exit For
j = j + 1
Next i
这个 J 就对应着光标到该行结尾有几个字符了,如果有需要可以使用,但一般不需要。
那么就像上面说的那样,行列都求出来了,最后用事件和TEXT或者caption表现出来就好了
至于说总行数
RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text)) + 1
通过对最后一个字符的位置(总长度)的行来判断呗,不过也得加一。
可以把某个列为空就当做是空行,你连接字符串是hdr=no,也就是第一行不作为列标题,那么就是用的默认的列标题,F1,F2.。。这些。
比如,第一列的某行为空的话就当做是空行,你可以加这个条件 where len([F1]) 0
如果文本很大,那用for、do就太慢太慢了,我给大家一个快速查询的方法:
Dim Oc,Fs,S,X
Set Fs = Oc.OpenTextFile("C:\Test.Txt", 1)'用FSO打开TXT文件
S = Fs.ReadAll'获取全文
Fs.Close'关闭文件
X = (Len(S) - Len(Replace(S, vbCrLf, ""))) / Len(vbCrLf) + 1 '统计总行数:用字符串替换法得到一共多少个回车,然后再加一就得到总行数了
VB中可以在循环中使用Line Input # 语句一行行读入文本,直到到达文件的结尾。
Line Input # 语句,从已打开的顺序文件中读出一行并将它分配给 String变量。
EOF 函数,返回一个 Integer,它包含 Boolean 值 True,表明已经到达为 Random
或顺序 Input 打开的文件的结尾。
具体代码:
Private Sub Command1_Click()
Dim i As Long
Dim strj() As String
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" "(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 2
' 显示“打开”对话框
CommonDialog1.ShowOpen
' 显示选定文件的名字
Debug.Print CommonDialog1.FileName
str = CommonDialog1.FileName
Open CommonDialog1.FileName For Input As #1
Do Until EOF(1)
Line Input #1, s
Text1.Text = Text1.Text s vbCrLf
i = i + 1
Loop
Close #1
Debug.Print i '总行数
Exit Sub
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub
获取文本行数函数
Const WM_USER = H400
Const EM_GETLINECOUNT = WM_USER + 10
#If Win32 Then
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Integer, _
lParam As Any) As Long
#Else
Private Declare Function SendMessage Lib "user" _
(ByVal hWnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
lParam As Any) As Long
#End If
Function TextLineCount(txtObj As TextBox) As Long
If txtObj.MultiLine = True Then
TextLineCount = SendMessage(txtObj.hWnd, EM_GETLINECOUNT, 0, 0)
Else
TextLineCount = 1
End If
End Function
欢迎插其