怎样才能知道TextBox中有多少行了?

xingming_sun 2001-12-05 11:32:05
我做了一个关于自动处理方面的小程序,用TextBox控件来显示程序运行过程
中出现的种种提示信息。我担心TextBox不能显示太多的内容,因而打算
在TextBox显示50行的时候清空TextBox,但是如何才能得知TextBox已经
有50行了呢?拜托各位了,谢谢。

或则有其它的解决方法,烦请告知,不胜感激。
...全文
197 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangzhaoyu 2001-12-05
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim txtLine As Long
txtLine = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
Debug.Print txtLine
End Sub

DeityFox 2001-12-05
  • 打赏
  • 举报
回复
在TextBox中如何得知Caret所在位置

原始来源:cww

'在form中放一个textBox两个label
Const EM_GETSEL = &HB0
Const EM_LINEFROMCHAR = &HC9
Const EM_LINEINDEX = &HBB

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

Public Sub GetCaretPos(ByVal hwnd5 As Long, LineNo As Long, ColNo As Long)
Dim i As Long, j As Long
Dim lParam As Long, wParam As Long
Dim k As Long
i = SendMessage(hwnd5, EM_GETSEL, wParam, lParam)
j = i / 2 ^ 16 '取得目前Caret所在前面有多少个byte
LineNo = SendMessage(hwnd5, EM_LINEFROMCHAR, j, 0) '取得前面有多少行
LineNo = LineNo + 1
k = SendMessage(hwnd5, EM_LINEINDEX, -1, 0)
'取得目前caret所在行前面有多少个byte
ColNo = j - k + 1
End Sub

Private Sub Form_Load()
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo

End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo

End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo

End Sub
DeityFox 2001-12-05
  • 打赏
  • 举报
回复
在TextBox中如何得知所有的行数

原始来源:cww

呼叫方式

Dim LineCnt as Long

LineCnt = TextBoxLineCnt(Text1)


Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Public Const EM_GETLINECOUNT = &HBA

Public Function TextBoxLineCnt(ctl As TextBox) As Long
TextBoxLineCnt = SendMessage(ctl.hwnd, EM_GETLINECOUNT, 0, 0)
End Function

leonkim 2001-12-05
  • 打赏
  • 举报
回复
你可以先算一算TextBox中每行多少个字符,再*50,当LEN(TEXT1)大于这个值时,text1=""
就可以了,最好要区分一个中英文字符。
dapha 2001-12-05
  • 打赏
  • 举报
回复
有一个笨方法就是查找vbcrlf,方法可行如果数据多的话速度较慢
tipstudio_zsp 2001-12-05
  • 打赏
  • 举报
回复
有一个不用api的办法
你查找一下字符串里面有多少个换行符即可
cloud_soft 2001-12-05
  • 打赏
  • 举报
回复
sendmessage, 晚了
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows 的常见问题 这些是有关 Microsoft Visual FoxPro 最常见的问题。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: --------------------------------------------------------------------- 部分 1. 技术支持与市场 部分 2. Visual FoxPro 6.0 新增功能 部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植 部分 4. Visual FoxPro 常见问题 --------------------------------------------------------------------- 部分 1. 技术支持与市场 问题 1-1: 从何处可以获得产品的更新版本? 答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 和更新的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 如何获得技术支持,以及如何报告软件错误? 答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见问题的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。 问题 1-4. 什么是 Knowledge Base?如何使用它? 答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: support.microsoft.com 问题 1-5: 是否会有 Visual FoxPro 6.0a? 答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不会使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还会在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。 问题 1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品? 答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。 问题 1-7: 哪里可以找到 Visual FoxPro 的使用示例? 答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的新示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用新的 HOME(2) 函数方便地找到已安装示例的位置。 除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供新的示例。
20200420使用VB6.0求33选6的全组合数(解决变长字符串超过1MB之后写入的问题) 最近需要求组合数(买双色球生成号码用^_) 以前在大学专门学习过VB6.0,今后会迁移到VC6.0。 预计会在2020.5.1强化一下MFC,就可以了! 我也不知道边长字符串到底写入多少回崩溃。(现阶段人也不年轻了,也没有这么多时间去研究了!有兴趣的同学跟帖告诉我一下,在此谢过了!) ​ VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 12825 ClientLeft = 450 ClientTop = 615 ClientWidth = 14535 LinkTopic = "Form1" ScaleHeight = 12825 ScaleWidth = 14535 Begin VB.TextBox Text2 BeginProperty Font Name = "宋体" Size = 14.25 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 12255 Left = 600 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 1 Top = 360 Width = 6135 End Begin VB.CommandButton Command2 Caption = "求33选6的全组合数" BeginProperty Font Name = "宋体" Size = 26.25 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 975 Left = 8040 TabIndex = 0 Top = 5520 Width = 4935 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Command1_Click() End Sub Private Sub Command2_Click() Dim h1%, h2%, h3%, h4%, h5%, h6% Dim h6sum% Dim i% Dim j% Dim temp% Dim count% Dim guangyayuan(35) As Integer Dim wutongshan(35) As Integer Dim guangyayuan6(35) As Integer Dim hong1%, hong2%, hong3%, hong4%, hong5%, hong6% Dim strWj As String ' For hong1 = 1 To 10 ' 'For hong2 = hong1 To 11 ' For hong2 = hong1 + 1 To 11 ' For hong3 = hong2 + 1 To 12 ' For hong4 = hong3 + 1 To 13 ' For hong5 = hong4 + 1 To 14 ' For hong6 = hong5 + 1 To 15 For hong1 = 1 To 28 For hong2 = hong1 + 1 To 29 For hong3 = hong2 + 1 To 30 For hong4 = hong3 + 1 To 31 For hong5 = hong4 + 1 To 32 For hong6 = hong5 + 1 To 33 'Text2 = Text2 & hong1 & "," & hong2 & "," & hong3 & "," & hong4 & "," & hong5 & "," & hong6 & vbCrLf strWj = strWj & hong1 & "," & hong2 & "," & hong3 & "," & hong4 & "," & hong5 & "," & hong6 & vbCrLf Next hong6 Next hong5 Next hong4 Next hong3 Next hong2 Next hong1 'Close #2 'Open "d:\ScoreW2.txt" For Output As #1 'Open "d:\求12选3的全组合数.txt" For Output As #1 Open "d:\求33选6的全组合数.txt" For Output As #1 'Write #1, Text2 Write #1, strWj Close #1 End Sub 我这里采用了一个最简单粗暴的做法,将每一组的六个号码立即写入磁盘。(具体交给操作系统了) 求33选6的全组合数.txt 大概23MB。 大致内容: "1,2,3,4,5,6 " "1,2,3,4,5,7 " "1,2,3,4,5,8 " "1,2,3,4,5,9 " "1,2,3,4,5,10 " "1,2,3,4,5,11 " "1,2,3,4,5,12 " "1,2,3,4,5,13 " "1,2,3,4,5,14 " "1,2,3,4,5,15 " "1,2,3,4,5,16 " "1,2,3,4,5,17 " "1,2,3,4,5,18 " "1,2,3,4,5,19 " "1,2,3,4,5,20 " "1,2,3,4,5,21 " "1,2,3,4,5,22 " "1,2,3,4,5,23 " "1,2,3,4,5,24 " "1,2,3,4,5,25 " "1,2,3,4,5,26 …… " "25,28,30,31,32,33 " "25,29,30,31,32,33 " "26,27,28,29,30,31 " "26,27,28,29,30,32 " "26,27,28,29,30,33 " "26,27,28,29,31,32 " "26,27,28,29,31,33 " "26,27,28,29,32,33 " "26,27,28,30,31,32 " "26,27,28,30,31,33 " "26,27,28,30,32,33 " "26,27,28,31,32,33 " "26,27,29,30,31,32 " "26,27,29,30,31,33 " "26,27,29,30,32,33 " "26,27,29,31,32,33 " "26,27,30,31,32,33 " "26,28,29,30,31,32 " "26,28,29,30,31,33 " "26,28,29,30,32,33 " "26,28,29,31,32,33 " "26,28,30,31,32,33 " "26,29,30,31,32,33 " "27,28,29,30,31,32 " "27,28,29,30,31,33 " "27,28,29,30,32,33 " "27,28,29,31,32,33 " "27,28,30,31,32,33 " "27,29,30,31,32,33 " "28,29,30,31,32,33 " 读者可能很容易看到会多一个英文的引号,这个怎么解决呢? https://zhidao.baidu.com/question/7939187.html 用vb读写文件时,写成的文本文件每都有双引号,怎么才能把双引号去掉啊? 怎样写的文件,才能没有双引号啊? wangtk1982 2006-05-30 使用print语句 不用用write 本回答由提问者推荐 3 评论(1) 分享 举报 monkywin 2006-05-30 用print写入文件。 用input读取文本。 修正之后: VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 12825 ClientLeft = 450 ClientTop = 615 ClientWidth = 14535 LinkTopic = "Form1" ScaleHeight = 12825 ScaleWidth = 14535 Begin VB.TextBox Text2 BeginProperty Font Name = "宋体"

7,771

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧