Chat Automatisch Scrollen geht nur bis zur hälfte.

  • 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
    [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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()

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    If _IsPressed(70) Then
    GUISetState(@SW_HIDE, $o2)
    EndIf
    If _IsPressed(71) Then
    GUISetState(@SW_SHOW, $o2)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Einmal editiert, zuletzt von Cornfl4kes (26. November 2008 um 16:16)