Hi ich habe letztens einen Chat für die Computer in unserer Schule geschrieben. Leider musste ich heute feststellen, das der Chat bei zuviel Text nur bis zur hälfte scrollt, was bei einem Aktualiesieren des Chats alle 2 sek. ziehmlich auf die Nerven geht^^. Also wollte ich mal fragen ob jemand vieleicht den Fehler hier findet.
Ich Benutze zum Scrollen den Befehl
[autoit]_GUICtrlEdit_Scroll($Chat, $SB_PAGEDOWN)
[/autoit]Hier nochmal das ganze Script:
Spoiler anzeigen
Opt("TrayIconHide", 1)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <GuiEdit.au3>
#include <ScrollBarConstants.au3>
$titel = Random(9999999, 9999999999999)
$o1 = GUICreate($titel &"- Chat", 373, 105)
GUISetBkColor(0x303030)
$Pfad = GUICtrlCreateInput(@ScriptDir, 16, 8, 337, 21)
$Nickname = GUICtrlCreateInput(@UserName , 112, 40, 121, 21)
$OKB = GUICtrlCreateButton("OK", 136, 72, 75, 25, 0)
GUISetState(@SW_SHOW, $o1)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $OKB
$Pfad1 = GUICtrlRead($Pfad)
$Nick = GUICtrlRead($Nickname)
GUISetState(@SW_HIDE, $o1)
If FileExists($Pfad1&"\chat.dcd") Then
FileWrite($Pfad1&"\chat.dcd", "<"&$Nick&"> hat den Chat betreten."&@CRLF)
Else
FileWrite($Pfad1&"\"&"chat.dcd", @MDAY&@MON&@YEAR&@CRLF)
FileWrite($Pfad1&"\chat.dcd", "<"&$Nick&"> hat den Chat betreten."&@CRLF)
EndIf
ExitLoop
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
$o2 = GUICreate($titel &"- Chat", 370, 290)
GUISetBkColor(0x303030)
$Chat = GUICtrlCreateEdit("", 8, 8, 353, 113, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetData(-1, "")
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Nachricht = GUICtrlCreateEdit("", 8, 152, 353, 89, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetColor(-1, 0x3B99FE)
$SendB = GUICtrlCreateButton("Senden", 272, 256, 75, 25, 0)
$MinimierenB = GUICtrlCreateButton("Minimieren (F1)", 8, 248, 83, 33, 0)
$RefreshB = GUICtrlCreateButton("Refresh", 144, 128, 75, 17, 0)
$delB = GUICtrlCreateButton("Chat leeren", 112, 248, 91, 33, 0)
$all = GUICtrlCreateCheckbox("", 112, 128, 17, 17)
GUISetState(@SW_SHOW, $o2)
$ref = TimerInit()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileWrite($Pfad1&"\chat.dcd", "<"&$Nick&"> hat den Chat verlassen."&@CRLF)
Exit
Case $MinimierenB
GUISetState(@SW_HIDE, $o2)
Case $SendB
$Nachricht1 = GUICtrlRead($Nachricht)
If $Nachricht1 = "" Then
MsgBox(0, "", "Inhalt?!")
Else
FileWrite($Pfad1&"\"&"chat.dcd", @HOUR&":"&@MIN&" <"&$Nick&"> "&$Nachricht1&@CRLF)
$get = FileRead($Pfad1&"\"&"chat.dcd")
GUICtrlSetData($Nachricht, "")
GUICtrlSetData($Chat, $get)
_GUICtrlEdit_Scroll($Chat, $SB_PAGEDOWN)
EndIf
Case $RefreshB
$get = FileRead($Pfad1&"\"&"chat.dcd")
GUICtrlSetData($Chat, $get)
_GUICtrlEdit_Scroll($Chat, $SB_PAGEDOWN)
Case $delB
$Q = MsgBox(4, "Leeren!", "Soll der Chat für alle Benutzer geleert werden?")
If $Q = 6 Then
FileDelete($Pfad1&"\"&"chat.dcd")
FileWrite($Pfad1&"\"&"chat.dcd", @MDAY&@MON&@YEAR&@CRLF)
EndIf
EndSwitch
If _IsPressed(70) Then
GUISetState(@SW_HIDE, $o2)
EndIf
If _IsPressed(71) Then
GUISetState(@SW_SHOW, $o2)
EndIf
If GUICtrlRead($all) = 1 Then
$time = TimerDiff($ref)
If $time > 2000 Then
$get = FileRead($Pfad1&"\"&"chat.dcd")
GUICtrlSetData($Chat, $get)
_GUICtrlEdit_Scroll($Chat, $SB_PAGEDOWN)
$ref = TimerInit()
EndIf
EndIf
WEnd