Automatisch in einem Fenster nach unten scrollen

  • Hi,
    ich habe eine art Chat geschrieben, wobei das Chatfenster so ähnlich wie bei ICQ aussieht. Wenn jemand eine neue Nachricht geschrieben hat, wird diese unten angefügt. Sobald das Fenster voll ist, kann man mit einem Scroll-Balken nach unten scrollen. Da dies natürlich sehr aufwändig ist, wäre es ganz gut, wenn immer automatisch nach unten gescrollt wird, sobald eine neue Nachricht kommt... Weiß jemand wie das geht???

    Einmal editiert, zuletzt von robs01 (23. Oktober 2009 um 15:47)

  • Schau mal hier rein
    https://autoit.de/index.php?page…80&pageNo=4
    Die jungs scheinen damit auch ein problem zu haben - vielleicht gibts ja mittlerweile schon ne lösung - dann kannst du dich ja mal mit denen kurzschließen. Mir fällt allerdings auch grad nix gescheites zu deinem Problem ein...

    EDIT: funkey da sieht man mal wieder wie Ahnungslos ich doch bin...

  • Wenn es das fenster selber ist dann sieh dir mal

    [autoit]

    _GUIScrollBars_ScrollWindow(

    [/autoit]

    an und dazu _GUIScrollBars_Init

  • Hm oke danke schonmal... aber ich habe das jetzt mal mit dem Code probiert. Aber irg-wie funktioniert es noch nicht so richtig. Wo muss ich das denn genau bei meinem Skript(Anhang) einfügen?

    _GUICtrlEdit_Scroll($Edit1, $SB_LINEDOWN)

    2 Mal editiert, zuletzt von robs01 (24. Oktober 2009 um 11:00)

  • bitteschön ;)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #include <string.au3>
    #Include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>
    #NoTrayIcon

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

    HotKeySet("{F4}", "hide")
    HotKeySet("{F3}", "show")

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

    MsgBox(262208, "Wichtige Information", "Der Schulchat kann mit der Taste <F4> versteckt werden und anschließend wieder mit der Taste <F3> sichtbar gemacht werden")
    $pfad = @DesktopDir & "\NetControl.new"
    $user = @UserName

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

    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Schul-Chat 1.0 Beta", 467, 442, 405, 112)
    Global $Edit1 = GUICtrlCreateEdit("", 9, 6, 442, 298, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL))
    Global $Edit2 = GUICtrlCreateEdit("", 12, 318, 442, 73, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
    Global $Button1 = GUICtrlCreateButton("Senden", 351, 405, 103, 25, $WS_GROUP)
    Global $Button2 = GUICtrlCreateButton("Chatverlauf löschen", 13, 405, 110, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    Global $Form1_AccelTable[1][2] = [["{ENTER}", $Button1]]
    GUISetAccelerators($Form1_AccelTable)
    _GUICtrlEdit_Scroll($Edit1, $SB_PAGEDOWN)
    #EndRegion ### END Koda GUI section ###

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

    Send("... ist dem Schul-Chat um " & @HOUR & ":" & @MIN & " Uhr beigetreten. {ENTER}")

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

    While 1
    $read2 = _StringEncrypt(0, FileRead($pfad), "1")
    If $read2 <> GuiCtrlRead($Edit1) Then
    GUICtrlSetData($Edit1, $read2)
    _GUICtrlEdit_Scroll($Edit1, $SB_PAGEDOWN)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $read = GUICtrlRead($Edit2)
    If $read = "" Then
    MsgBox(64, "Information", "Du kannst keine Nachricht ohne Inhalt senden!")
    Else
    FileDelete($pfad)
    FileWrite($pfad, _StringEncrypt(1, $read2 & $user & ": " & $read & @CRLF, "1"))
    GUICtrlSetData($Edit2, "")
    EndIf
    Case $Button2
    $msgbox = Msgbox(52, "Warnung", "Bist du dir sicher, dass du den Chatverlauf von ALLEN Computern löschen willst?")
    If $msgbox = 6 Then
    FileDelete($pfad)
    EndIf
    EndSwitch
    WEnd

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

    Func hide()
    winsetstate("Schul-Chat 1.0 Beta", "", @SW_HIDE)
    EndFunc

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

    Func show()
    winsetstate("Schul-Chat 1.0 Beta", "", @SW_SHOW)
    EndFunc

    [/autoit]

    es muss dort hin wenn auch der text von edit1 gesetzt wird