搜索
bottom↓
回复: 14

VB的TextBox控件怎样显示固定的行数和固定的字符个数?

[复制链接]

出0入0汤圆

发表于 2008-6-13 09:02:22 | 显示全部楼层 |阅读模式
最近在玩vb,先做一个串口调试的程序,用TextBox控件作数据的接受区,想在每行显示固定的数据个数,比如16个,而且两个之间有空格;显示固定的行数,比如显示最近的80行, 以前的自动删除,不知道如何处理,请高手们指点。(我的接受和发送的数据都是16进制的,下位机为Mega16。)

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

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

出0入22汤圆

发表于 2008-6-13 09:48:45 | 显示全部楼层
试试这个:
点击此处下载 ourdev_309222.rar(文件大小:6K) (原文件名:textTest.rar)

出0入0汤圆

 楼主| 发表于 2008-6-13 10:51:42 | 显示全部楼层
非常感谢,下来看看

出0入0汤圆

 楼主| 发表于 2008-6-13 11:15:50 | 显示全部楼层
谢谢zxq6 小马哈
      上面的问题解决了,不过还有一个新问题,怎样计算TextBox里的十六进制数据的个数,还有就是怎样把这些数据放在一个数组里? 谢谢!

出0入22汤圆

发表于 2008-6-13 11:21:19 | 显示全部楼层
你先把串口过来的数据放到数组里面,然后text调用数组来显示。数组相当于一个显示缓冲。你从串口过来的数据只需要挨个放到数组里面就可以了。

textbox里面的数据个数是根据数组来的。你定义数组大小后,text里面的个数也就可以定了。

出0入0汤圆

 楼主| 发表于 2008-6-13 11:30:04 | 显示全部楼层
再问一个很低级的问题,
比如
Dim Function_Flag As Byte

怎样给 Function_Flag 里每个BIT定义?

不要意思,刚接触vb,连书还没有看过呢

出0入22汤圆

发表于 2008-6-13 11:51:42 | 显示全部楼层
不是太明白你的问题。vb操作的最小单位好像是字节。不能再细分了。
倒是可以对字节的某一个位置位或者清零。

出0入0汤圆

发表于 2008-6-13 12:13:09 | 显示全部楼层
使用AND、OR和1,2,4,8运算就能做位操作了。vb的逻辑运算就是按位运算的。

出0入0汤圆

 楼主| 发表于 2008-6-13 12:30:37 | 显示全部楼层
你先把串口过来的数据放到数组里面,然后text调用数组来显示。数组相当于一个显示缓冲。你从串口过来的数据只需要挨个放到数组里面就可以了。

textbox里面的数据个数是根据数组来的。你定义数组大小后,text里面的个数也就可以定了。

--------------------
接受就是这样做的,不过我要的是把text里的数据通过串口发出去,我要知道我发的是几个数据,郁闷中........



谢谢两位!
    我有点明白了,我的意思是在vb里能不能象单片机那样进行位操作,看来是不行的,不过用7楼的方法就可以了.

出0入22汤圆

发表于 2008-6-13 13:23:55 | 显示全部楼层
总的字符串长度可以用len函数得到。

出0入0汤圆

 楼主| 发表于 2008-6-16 11:14:45 | 显示全部楼层
谢谢zxq6 小马哈的热心, 总的字符串长度可以用len函数得到,这个是没有问题了。

    上次给我的那个关于显示固定行数和我的意思不太一样,我的意思是滚动显示,一次只能接受一行,当达到设定的行数后(80行),只删掉最早的一行,显示最近的这一行,就是显示区始终显示最近的设定行数,不只能不能再次指点,不管怎样都谢谢你.

出0入22汤圆

发表于 2008-6-16 11:30:49 | 显示全部楼层
可以的啊,你那个显示缓冲的数组往前面移动就是了啊。
比如a=a[i+1]

出0入0汤圆

 楼主| 发表于 2008-6-16 13:16:26 | 显示全部楼层
不明白怎么移动,给这段程序贴上来看看

    Select Case MSComm.CommEvent
           Case comEvReceive
                buf = ""
                InByte = MSComm.Input
                DelayTime
                For i = LBound(InByte) To UBound(InByte)
                    buf = buf + Hex(InByte(i)) + Chr(32)
                Next i
                TxtReceive.Text = TxtReceive.Text & "" & buf & vbCrLf
    End Select
End Sub

出0入22汤圆

发表于 2008-6-16 15:00:58 | 显示全部楼层
哎,还是好人做到底吧。给你贴个一个字符一个点击此处下载 ourdev_313002.rar(文件大小:6K) (原文件名:textTest.rar)
字符移动的范例。

出0入0汤圆

 楼主| 发表于 2008-6-16 16:42:39 | 显示全部楼层
Select Case MSComm.CommEvent
           Case comEvReceive
                buf = ""
                InByte = MSComm.Input
                DelayTime
                For i = 0 To UBound(InByte)  'LBound(InByte)
                    Receive_Data(i) = InByte(i)
                    buf = buf + Hex(InByte(i)) + Chr(32)
                Next i
               
                TextLong = Len(TxtReceive.Text)
                TextLow = TextLong / Len(buf)
               
                If TextLow >= 5 Then
                    TxtReceive.Text = Mid(TxtReceive.Text, TextLong - 4 * TextLow - 22) & "" & buf & vbCrLf
                Else
                    TxtReceive.Text = TxtReceive.Text & "" & buf & vbCrLf
                End If
    End Select
================

    这样跟我的意思就比较接近,那个"22"是凑出来的,不知道为什么,如果没有"22",最前面一行会不整齐,希望高手能看看为什么,或着有更好的方法
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-23 22:07

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

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