textbox的使用

Focus_zhao 2000-02-27 12:52:00
请问各位:如何实现textbox滚动条自动向下滚动?就是像很多聊天软件那样,自己向下滚,把最新输入的字显示出来?
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
peacock 2000-03-01
  • 打赏
  • 举报
回复
加入TextBox控件,设置修改MultiLine 为 True。
写入以下代码:

Const EM_GETLINECOUNT = &HBA

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim LastLine As Long '最后的行数
Dim LineHeight '每行的高度
Private Sub Form_Load()
Set Me.Font = Text1.Font
LineHeight = Me.TextHeight("TT")
End Sub

Private Sub Text1_Change()
Dim Ret As Long
Ret = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&) '取行数
If Ret <> LastLine Then
If Text1.Height + Text1.Top + LineHeight > Me.ScaleHeight And Ret > 1 Then
If LastLine <= Ret - 1 Then
Exit Sub '如果已经是最大高度,保持
End If
LastLine = Ret - 1 '超过最大高度
Else
LastLine = Ret
End If
Text1.Height = LastLine * LineHeight '修改高度
End If
End Sub

Private Sub Text1_GotFocus()
LastLine = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&)
End Sub
Un1 2000-02-29
  • 打赏
  • 举报
回复
支持 littletao , 不过一个更快的方法是:
textbox.selstart=65535
littletao 2000-02-28
  • 打赏
  • 举报
回复
.SelStart = Len(.Text)应该能满足要求
dongdong 2000-02-28
  • 打赏
  • 举报
回复
类似聊天室的TEXT方法,可以将TEXT的多行选项设为TRUE,然后在插入文本时,始终插入到最前面,这样,当文字内容超过一页时,就会自动的出现滚动条,并且可以让输入的新内容始终可见,如:
text1.selstart=0
text1.seltext="hello"
不知可否?
benbenlittle 2000-02-27
  • 打赏
  • 举报
回复
先声明API函数
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
其中 wParam 表示水平移动的行数 若为负值为向左移动.
lParam表示垂直移动行数 若为负值为向上移动.
不过由于 lParam为any类型,所以若传数值 前面加上一个ByVal
例如
SendMessage text.hwnd EM_LINESCROLL ,0,ByVal 1
即可
首先判断 有新的输入,然后调用上面的函数就行了
BrettWangPeng 2000-02-27
  • 打赏
  • 举报
回复
我感觉这个textbox只要把multiline属性设置为true
scrollbars的属性加上vertical(2)就可以自动往下滚动亚
jmj 2000-02-27
  • 打赏
  • 举报
回复
先声明API函数
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
使用TIME控件,在timer事件中调用
lonRet = SendMessage(richedit1.hwnd, WM_VSCROLL, SB_LINEDOWN, 0)
Firing_Sky 2000-02-27
  • 打赏
  • 举报
回复
声明api函数SendMessage,就可以利用
SendMessage(RichEdit1.Handle, EM_SCROLL, SB_LINEDOWN, 0)
实现翻页

7,759

社区成员

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

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