ajoe 发表于 2008-6-13 09:02:22

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

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

zxq6 发表于 2008-6-13 09:48:45

试试这个:
点击此处下载 ourdev_309222.rar(文件大小:6K) (原文件名:textTest.rar)

ajoe 发表于 2008-6-13 10:51:42

非常感谢,下来看看

ajoe 发表于 2008-6-13 11:15:50

谢谢zxq6 小马哈
      上面的问题解决了,不过还有一个新问题,怎样计算TextBox里的十六进制数据的个数,还有就是怎样把这些数据放在一个数组里? 谢谢!

zxq6 发表于 2008-6-13 11:21:19

你先把串口过来的数据放到数组里面,然后text调用数组来显示。数组相当于一个显示缓冲。你从串口过来的数据只需要挨个放到数组里面就可以了。

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

ajoe 发表于 2008-6-13 11:30:04

再问一个很低级的问题,
比如
Dim Function_Flag As Byte

怎样给 Function_Flag 里每个BIT定义?

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

zxq6 发表于 2008-6-13 11:51:42

不是太明白你的问题。vb操作的最小单位好像是字节。不能再细分了。
倒是可以对字节的某一个位置位或者清零。

yyccaa 发表于 2008-6-13 12:13:09

使用AND、OR和1,2,4,8运算就能做位操作了。vb的逻辑运算就是按位运算的。

ajoe 发表于 2008-6-13 12:30:37

你先把串口过来的数据放到数组里面,然后text调用数组来显示。数组相当于一个显示缓冲。你从串口过来的数据只需要挨个放到数组里面就可以了。

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

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



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

zxq6 发表于 2008-6-13 13:23:55

总的字符串长度可以用len函数得到。

ajoe 发表于 2008-6-16 11:14:45

谢谢zxq6 小马哈的热心, 总的字符串长度可以用len函数得到,这个是没有问题了。

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

zxq6 发表于 2008-6-16 11:30:49

可以的啊,你那个显示缓冲的数组往前面移动就是了啊。
比如a=a

ajoe 发表于 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

zxq6 发表于 2008-6-16 15:00:58

哎,还是好人做到底吧。给你贴个一个字符一个点击此处下载 ourdev_313002.rar(文件大小:6K) (原文件名:textTest.rar)
字符移动的范例。

ajoe 发表于 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",最前面一行会不整齐,希望高手能看看为什么,或着有更好的方法
页: [1]
查看完整版本: VB的TextBox控件怎样显示固定的行数和固定的字符个数?