搜索
bottom↓
回复: 17

上位机中:请教个简单VB6 文本框问题

[复制链接]

出0入0汤圆

发表于 2007-12-13 09:28:01 | 显示全部楼层 |阅读模式
文本框text1已经打开多行功能
如何在接收数据达到最底行时,让垂直滚栏出现在最下方,这样就可以看到实时接收到的数据,而不是默认的出现在最上方

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入22汤圆

发表于 2007-12-13 09:32:16 | 显示全部楼层
好像是text1.selstart=len(text1.text)

出0入0汤圆

 楼主| 发表于 2007-12-13 09:40:15 | 显示全部楼层
刚试了下,【1楼】 zxq6 小马哈
你所说的不行,我所说的是,当垂直滚栏一开始出现时就出现在最下方

出0入0汤圆

发表于 2007-12-13 10:21:27 | 显示全部楼层
想做成一个像Debug窗口一样的东西吧,这需要一点点小技巧的:
text1.selstart=&H7FFF          ' text1.selstart=len(text1.text)
text1.seltext=newstring        ' set new string

出0入0汤圆

 楼主| 发表于 2007-12-13 10:44:08 | 显示全部楼层
垂直滚条一开始出现时就出现在最下方 的实现方法?

出0入0汤圆

发表于 2007-12-13 12:56:47 | 显示全部楼层
我也想知道。。。。

出0入22汤圆

发表于 2007-12-13 13:01:48 | 显示全部楼层
方法肯定是可以滴,只是你没有用对。
新建一个工程,填入以下代码,建立2个必要的控件,试试看?

Option Explicit

Private Sub Command1_Click()
    Text1.Text = Text1.Text & "Text1.Text"
End Sub

Private Sub Text1_Change()
    Text1.SelStart = Len(Text1.Text)
End Sub

出0入0汤圆

 楼主| 发表于 2007-12-14 08:23:43 | 显示全部楼层
谢谢:zxq6 小马哈

出0入0汤圆

发表于 2007-12-20 12:31:10 | 显示全部楼层
zxq6 小马哈   Text1.Text 显示太闪了  !!!

出0入0汤圆

发表于 2007-12-20 12:55:48 | 显示全部楼层
看看三楼吧,你还当我是随便说说?知道这样用的人不多,理解为什么这样的人就凤毛麟角了。
对于每次输出一行的应用,6楼的方法是很耗时间的,原因是进行了大量的方法间文本拷贝,而3楼的方法就没有文本拷贝,效率提高n多。

出0入0汤圆

发表于 2007-12-20 14:15:41 | 显示全部楼层
Private Sub Text1_Change()
text1.selstart=&H7FFF          ' text1.selstart=len(text1.text)
text1.seltext=newstring        ' set new string
End Sub

Text1.Text  显示还是太闪啊  滚动条也闪   我的是20MS接受一个数据   新手请教!!

出0入0汤圆

发表于 2007-12-20 14:48:02 | 显示全部楼层
你知道Text1_Change事件干什么的吗?象你这样用很容易造成事件循环,就是说在事件处理过程再触发相同事件(按道理text1.seltext=newstring 会触发Change事件),很容易把程序写死的,所以text1.seltext=newstring 不应该在Change事件中出现。

出0入0汤圆

发表于 2007-12-20 15:04:07 | 显示全部楼层
Private Sub Text1_Change()  
text1.selstart=&H7FFF          ' text1.selstart=len(text1.text)  
End Sub  

显示还是太闪啊


  text1.seltext=newstring        ' set new string  应该放在那呢?

怎么才能想串口调试助手那样稳定显示就好了 !

出0入22汤圆

发表于 2007-12-20 16:34:17 | 显示全部楼层
favr真是高手呢~
楼主,应该这样用:

Option Explicit

Private Sub Form_Load()
    Timer1.Interval = 5
End Sub

Private Sub Text1_Change()
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Timer1_Timer()
    Text1.SelStart = &H7FFF          ' text1.selstart=len(text1.text)
    Text1.SelText = "newstring"      ' set new string
End Sub

出0入0汤圆

发表于 2007-12-20 19:39:49 | 显示全部楼层
送佛送到西吧。
楼上这样用不说不对,但一般不这样用;应该明白:
    Text1.SelStart = &H7FFF         
    Text1.SelText = "newstring"      
这两句什么意思,文本框的SelStart方法设置文本框内选择文本的起始位置,原理上用Text1.SelStart = Len(Text1.Text)是最准确的,但就这么一条语句比较耗时间,和VB内的Len(vb_String)不一样,Text1对象的文本内容是私有的,必须通过Text接口返回真实内容,然后传递给Len函数计算(而在Len VB的String类型的变量可以直接检查String类型长度区得到,根本不用算);使用常数&H7FFF就比较简单了,反正是字符串的最后,懒得算它;第二句的意思是把新内容加到光标处(和第一句结合就是添加到文本最后),不用任何文本拷贝。
所以这两句已经包含了楼上Text1_Change事件的内容,语句放在什么地方好呢?就是你要加入新文本的地方。

出0入0汤圆

发表于 2009-6-24 09:58:43 | 显示全部楼层
大家好我是vb新手请大家多多关照,我想问一下如何才能学好vb

出0入0汤圆

发表于 2009-6-24 10:38:22 | 显示全部楼层
学好的方法就是好好学

出0入70汤圆

发表于 2009-6-24 14:15:49 | 显示全部楼层
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

用API操作的方法

SendMessage Text1.hWnd, &H115, 7, 0
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 20:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表