textbox的使用
请问各位:如何实现textbox滚动条自动向下滚动?就是像很多聊天软件那样,自己向下滚,把最新输入的字显示出来? 问题点数:50、回复次数:8Top
1 楼Firing_Sky(火的天空)回复于 2000-02-27 15:25:00 得分 5
声明api函数SendMessage,就可以利用
SendMessage(RichEdit1.Handle, EM_SCROLL, SB_LINEDOWN, 0)
实现翻页Top
2 楼jmj()回复于 2000-02-27 18:32:00 得分 5
先声明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)Top
3 楼panda()回复于 2000-02-27 18:33:00 得分 20
我感觉这个textbox只要把multiline属性设置为true
scrollbars的属性加上vertical(2)就可以自动往下滚动亚Top
4 楼benbenlittle()回复于 2000-02-27 19:52:00 得分 5
先声明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
即可
首先判断 有新的输入,然后调用上面的函数就行了
Top
5 楼littletao()回复于 2000-02-28 09:37:00 得分 7
.SelStart = Len(.Text)应该能满足要求Top
6 楼dongdong(阿东)回复于 2000-02-28 14:58:00 得分 0
类似聊天室的TEXT方法,可以将TEXT的多行选项设为TRUE,然后在插入文本时,始终插入到最前面,这样,当文字内容超过一页时,就会自动的出现滚动条,并且可以让输入的新内容始终可见,如:
text1.selstart=0
text1.seltext="hello"
不知可否?Top
7 楼Un1()回复于 2000-02-29 14:35:00 得分 3
支持 littletao , 不过一个更快的方法是:
textbox.selstart=65535Top
8 楼peacock()回复于 2000-03-01 11:37:00 得分 5
加入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
Top




