#Include <GuiEdit.au3>
#Include <ScrollBarConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 313, 150, 226, 375)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 289, 130)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
For $i = 1 To 30
_write()
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _write()
GUICtrlSetData($Edit1,GUICtrlRead($Edit1) & "这是行 " & $i & @CRLF) ;----------------这个方法很有用的,楼主应该能明白什么意思吧
;~ _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) ;----------滚动到最底部
_GUICtrlEdit_LineScroll($Edit1, 0, _GUICtrlEdit_GetLineCount($Edit1)) ;----------这句也是滚动到最底部
Sleep(50)
EndFunc 回复 15# sanmoking
谢谢楼上这位兄弟,算是比较完美解决了。你的思维很活跃啊。
我原以为有UDF,或者样式的方式解决这个问题。复制数据再增加的办法始终感觉到有点笨,在数据大的情况下,会有些效率问题。 恩,14楼就是用的udf来解决的,用的是逐步增加而不是复制全部数据再增加的办法
_GUICtrlEdit_InsertText($Edit1,$i &" "& Chr(10), _GUICtrlEdit_GetTextLen($Edit1) )
_GUICtrlEdit_GetTextLen($Edit1) 是获取edit有多少个字符
_GUICtrlEdit_InsertText是在那个位置插入文字。。。
所以上面那行的意思就是在最后一个字符的位置插入新的内容,但是我在测试的时候,只要有中文就会出错,也不知道是不是我的版本有问题。。。。而且这个udf函数也并不是完美节决了用户干扰的问题,如果用户拖选了一部分字符,在增加新内容的时候就会把拖选的字符替换成新的。。。你可以试一下。。。。
方法很多,就是看你怎么用了。。。殊途同归。。。 本帖最后由 sanmoking 于 2010-1-1 01:26 编辑
如果怕用户手动删除部分字符干扰到。。。。那就参考4楼的方法,多设置一个看不见的edit控件,就算用户删除那个显示在窗体中的edit一部分字符,那个隐藏的是删不掉的,下次更新还会还原的。。。。
其实完全不必担心数据量的问题,纯字符形式的内容你想他能占多大资源?100万汉字字符才相当于2M...
例子
#Include <GuiEdit.au3>
#Include <ScrollBarConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 313, 289, 226, 375)
$Edit1 = "" ;----------------这个变量其实就相当于那个看不见的控件
$Edit2 = GUICtrlCreateEdit("", 8, 8, 289, 265) ;----------------窗体上显示出来的输入框
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
For $i = 1 To 30
_write()
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _write()
$Edit1 = $Edit1&"这是行 " & $i & @CRLF
GUICtrlSetData($Edit2,$Edit1,"")
_GUICtrlEdit_Scroll($Edit2, $SB_SCROLLCARET) ;----------------滚动到最底部
Sleep(100)
EndFunc ;==>_write
页:
1
[2]