EditBox - GuiCtrlSetData

  • Guten Abend,

    ich habe folgendes Problem. Undzwar versuche in Log Dateien in einem Edit einer Gui so gut wie Zeitgleich zu übernehmen.
    D.H. ich lese die letzte Zeile ein und füge dieses mit GuiCtrlSetData in mein Edit ein.

    [autoit]

    Func Read()
    $g = FileReadLine(@ScriptDir & "\General_Log.log",-1)
    If $g <> $og Then
    $og = $g
    If GUICtrlRead($eLog) = "" Then
    GUICtrlSetData($eLog,$g)
    Else
    GUICtrlSetData($eLog,GUICtrlRead($eLog) & @CRLF & $g)
    EndIf
    EndIf
    $e = FileReadLine(@ScriptDir & "\logs\Events.txt",-1)
    If $e <> $oe Then
    $oe = $e
    If GUICtrlRead($eLog) = "" Then
    GUICtrlSetData($eLog,$e)
    Else
    GUICtrlSetData($eLog,GUICtrlRead($eLog) & @CRLF & $e)
    EndIf
    EndIf
    EndFunc

    [/autoit]

    An sich klappt es ja auch, jedoch Scrollt die Editbox nicht automatisch mit nach unten. Kennt da wer eine Lösung ? Ich habe fast alle verschiedenen Edit Styles probiert, diese haben mich aber nicht weiter gebracht.

    Bei unklarheiten bitte melden

    MfG SiLenCa

    Einmal editiert, zuletzt von SiLenCa (30. Juni 2010 um 11:29)

  • Du kannst den Edit folgerndermaßen erstellen : GUICtrlCreateEdit("", 0, 0, $width, $height, $ES_AUTOVSCROLL + $WS_VSCROLL + $WS_HSCROLL + $ES_READONLY)

    Dann sollte es auch klappen!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Danke für die schnelle Antwort.

    Leider hatte ich bereits versucht mit diesen Styles welches nicht funktioniert.

  • Ich habe heute im engl. Forum dieses Skript erstellt.

    Vielleicht hilft dir das Skript:

    Spoiler anzeigen
    [autoit]


    ;Coded by UEZ Build 2010-06-30
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>
    #Include <GuiEdit.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $iMemo, $new_line
    $width = 1024
    $height = 600
    $hGUI = GUICreate("Realtime Log Reader by UEZ 2010", $width, $height, -1, -1, Default, $WS_EX_TOPMOST)
    $iMemo = GUICtrlCreateEdit("", 0, 0, $width, $height, $ES_AUTOVSCROLL + $WS_VSCROLL + $WS_HSCROLL + $ES_READONLY)
    GUICtrlSetLimit(-1, 0x7FFFFFFF)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()
    If $CmdLine[0] > 0 And FileExists($CmdLine[1]) Then
    $file = $CmdLine[1]
    Else
    $file = @WindowsDir & "\WindowsUpdate.log"
    EndIf
    $hFile = FileOpen($file)
    $txt = FileRead($hFile)

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

    GUICtrlSetData($iMemo, $txt, 1)
    _GUICtrlEdit_LineScroll($iMemo, 1, 0xfffffff)
    $cl = _FileCountLines($File)
    $fs = FileGetSize($file)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    While Sleep(1000)
    $fs_new = FileGetSize($file)
    If $fs < $fs_new Then
    $cl_new = _FileCountLines($file)
    For $i = $cl + 1 To $cl_new
    $new_line &= FileReadLine($hFile, $i) & @CRLF
    Next
    GUICtrlSetData($iMemo, $new_line, 1)
    ;~ _GUICtrlEdit_LineScroll($iMemo, 0, 0xfffffff)
    $cl = $cl_new
    $fs = $fs_new
    $new_line = ""
    EndIf
    Wend

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

    Func _Exit()
    FileClose($hFile)
    GUIDelete($hGUI)
    Exit
    EndFunc

    [/autoit]

    Gruß,
    UEZ

  • Vielen Dank.

    Habe jetzt

    [autoit]

    _GUICtrlEdit_LineScroll($eLog, 1, 0xfffffff)

    [/autoit]

    Nach Jedem GuiCtrlSetData hinzugefügt und es scheint zu funktionieren. Verstehe zwar das 0xfffffff nicht genau, da der Parameter doch normalerweise eine Zahl ist oder ?
    Vielleicht kann es mir ja noch jemand genauer erklären. Danke

    MfG SiLenCa

  • 0xfffffff ist ein Hex Wert -> Dezimal = 268435455

    _GUICtrlEdit_LineScroll($hWnd, $iHoriz, $iVert) -> _GUICtrlEdit_LineScroll($eLog, 1, 0xfffffff)

    Bemerkungen
    Das Control scrollt nicht vertikal, wenn die letzte Zeile des Textes im Edit-Control erreicht wurde.
    Falls die aktuelle Zeile plus die Anzahl von Zeilen (festgelegt durch den $iVert Parameter) die gesamte Anzahl von Zeilen im Edit-Control überschreitet, wird der Wert so angepasst, dass die letzte Zeile des Edit-Controls ganz nach oben in das Edit-Control gescrollt wird.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯