请问有这样一个函数吗?

QuickSoft 2002-05-07 11:15:25
一个TEXTBOX,我用时间控件动态添加文本,我想让TEXTBOX最多只能显示十行文本应该怎么做?谁能给个代码参考一下呢?谢谢!
...全文
30 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyu1221 2002-05-07
  • 打赏
  • 举报
回复
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
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4


'这段代码是如果超过10行,就把前面的几行去掉,最后剩下10行
'你可以把以下这段代码放在你的定时器中。
Private Sub Command1_Click()
Dim nCount As Long
Dim s As String
s = String(256, " ") ’一行的最大长度,可以修改
nCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
Do Until nCount < 10
nCount = SendMessage(Text1.hwnd, EM_GETLINE, 0, ByVal s)
Text1.SelStart = 0
Text1.SelLength = nCount + 2
Text1.SelText = ""
nCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
Loop
End Sub

QuickSoft 2002-05-07
  • 打赏
  • 举报
回复
各位老大给个完整的代码行吗?
chenyu5188 2002-05-07
  • 打赏
  • 举报
回复
visualtree(梦想依旧)老兄的思路可行夷~!!!
QuickSoft 2002-05-07
  • 打赏
  • 举报
回复
老大,,呵呵!!小弟太菜了,只是懂点VB,不懂VC呀
visualtree 2002-05-07
  • 打赏
  • 举报
回复
在SDK可以这样处理,对VB不是很熟悉,给你一点参考
先调用这个API得到edit控件的行数
iCount = SendMessage (hwndEdit, EM_GETLINECOUNT, 0, 0) ;
然后再进行判断
QuickSoft 2002-05-07
  • 打赏
  • 举报
回复
具体怎么用呢?老大..急啊
cheng_sland 2002-05-07
  • 打赏
  • 举报
回复
同意楼上的朋友说法,用api
lovingkiss 2002-05-07
  • 打赏
  • 举报
回复
函数就没有,但是很难控制10行啊;
因为根据VBcrlf是不准确的,用Api吧;
asciiman 2002-05-07
  • 打赏
  • 举报
回复
正文框的 MaxLength 可以设定最大字数.
QuickSoft 2002-05-07
  • 打赏
  • 举报
回复
谢谢,我已经解决了..不过我用了一个比较笨的方法

dim i as integer,b as integer,str as string
for i= 0 to len(text1.text)
str=left(text1.text,i)
if instr(str,vbcrlf) then exit for
next i
if instr(text1.text,vbcrlf) then
b=b+1
end if
if b>10 then
d=clng(len(text1.text)-len(str))
text1.text=right(text1.text,d)
b=10
end if
KiteGirl 2002-05-07
  • 打赏
  • 举报
回复
其实这个问题如果用控件考虑很麻烦,你的问题无非是这样:

1、动态添加字符串。采用动态数组完成,每次添加一行就
ReDim Preserve StrArray(UBound(StrArray)+1)
StrArray(UBound(StrArray))=新行的数据

2、只在TextBox里显示十行。
定义一个变量做显示行的指针。
Dim pubLineStart As long

显示10行的程序
tStr=""
For tLine=0 to 9
tStr=tStr & Chr(13) & Chr(10) & StrArray(pubLineStart+tLine)
Next

TextBox.text=tStr

实际上你编写程序不必过度依赖控件,以上程序就是一个例子。上面的程序分为两个部分:核心和界面。也就是说:存储字符并且完成操作的不是TextBox,而是数组StrArray。而TextBox仅仅作为显示其中10行的一个显示工具。

7,763

社区成员

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

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