Aktualisieren...aber wie?

  • hi ich bins wieder,

    ich sag euch mal worums geht:
    Eine Gui mit Editfeld wird auf guictrlsetdata($Editfeld,FileRead("neu.txt")) gesetzt.
    jetzt soll das feld immer in gleichen abständen aktualisiert werden.
    wenn ich es so mache:

    [autoit]

    While 1
    Sleep(100)
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    Wend

    [/autoit]


    dann hängt das programm in der while schleife fest und man kann zb keinen button mehr anklicken...

    wie könnte man das besser umsetzen??

    mfg team2way

  • in der hilfe steht nur das

    [autoit]

    AdlibEnable("myadlib")
    ;...
    Exit

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

    Func myadlib()
    If WinActive("Error") Then
    ;...
    EndIf
    EndFunc

    [/autoit]


    wie hilft mir das jetzt weiter, oder besser noch wie kann ich das jetzt einbaun?

  • vielleicht so:

    Spoiler anzeigen
    [autoit]

    AdlibEnable("myadlib", 1000)
    ;...
    Exit

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

    Func myadlib()
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hi,

    so etwa:

    [autoit]


    _myadlib() ;i sofortiger einmaliger Start der Funktion beim Programmstart
    AdlibEnable("_myadlib", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    ;! Beides zusammen in einem Script ist möglich und macht manchmal Sinn

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

    While 1
    Sleep(100)

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

    Wend

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

    Func _myadlib()
    guictrlsetdata($Editfeld,FileRead("neu.txt"))
    EndFunc

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

    ; Ende

    [/autoit]


    Viel Erfolg ! :thumbup:

  • thx noch mal werds testen^^

    edit: das mit dem aktualisieren hat bei mir so nicht funktioniert :S

    Einmal editiert, zuletzt von team2way (2. April 2009 um 19:49)

    • Offizieller Beitrag

    Hm, sollen wir jetzt munter Raten ? Oder lieferst du auch en bischen Code ?

  • Wie sagt man hier im Forum so schön?!

    "Meine allwissende Glaskugel ist gerade defekt"

    Ich find den Spuch einfach zu geil :)

  • hier is er sry konnt nich früher ;)

    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>

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

    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    $ont = 1
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • Hi,
    du musst natürlich die AdlibEnable Funktion VOR die While Schleife setzen.
    Sonst wird es nie aktiviert.

    Wenn du das Flackern reduzieren willst schau dir noch die
    _GUICtrlEdit_BeginUpdate
    und
    _GUICtrlEdit_EndUpdate
    Funktionen an :rolleyes:

  • [autoit]

    Wenn du das Flackern reduzieren willst schau dir noch die
    _GUICtrlEdit_BeginUpdate
    und
    _GUICtrlEdit_EndUpdate

    [/autoit]


    wie soll mir das weiterhelfen ^^

    • Offizieller Beitrag

    Probier mal das, da flackert nichts:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GuiEdit.au3>
    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    Global $TEMP = ""
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    if FileRead($log) <> $temp then
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    $temp = FileRead($log)
    EndIf
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • ja das hatte ich auch schon ^^

    das problem ist nur noch das die scrollbar nicht mehr nach unten geht...
    (nach dem aktualisieren)

    woran könnte das liegen?

    • Offizieller Beitrag

    Das geht auch :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GuiEdit.au3>
    #include <ScrollBarConstants.au3>
    ;$pfad = IniRead(@ScriptDir & "\data.ini", "www.team2way.de", "Pfad", @ScriptDir)
    Global $log = @ScriptDir & "\log.data"
    Global $TEMP = ""
    $pri = 0
    ;FileInstall("qD.bmp", @TempDir & "\qD.bmp", 1)

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    $gui = GUICreate("[cC] " & @UserName, 300, 300, @DesktopWidth - 310, @DesktopHeight - 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    ;GUICtrlCreatePic(@TempDir & "\qD.bmp", 0, 0, 304, 150)
    ;GUICtrlSetState(-1, $GUI_DISABLE)
    $EditText = GUICtrlCreateEdit("", 10, 10, 280, 150, BitOR(64, 2048, 4096, 0x200000))
    ;GUICtrlSetFont(-1, 8, 550, 0, "Verdana")
    GUICtrlCreateGroup("Nachricht:", 10, 170, 280, 100)
    $text = GUICtrlCreateInput("", 20, 195, 260, 25)
    GUICtrlSetOnEvent($text, "_Send")
    GUICtrlCreateButton("Senden", 20, 230, 60, 25)
    GUICtrlSetOnEvent(-1, "_Send")
    GUICtrlCreateButton("Aktualisieren", 90, 230, 80, 25)
    GUICtrlSetOnEvent(-1, "_Re")
    $sZ = GUICtrlCreateCheckbox("Hotkeys:", 190, 245, 65, 20)
    GUICtrlSetTip(-1, "Eine Übersicht aller Hotkeys.", "Hotkeys:", 0, 1)
    GUICtrlSetOnEvent(-1, "_Hotkey")
    GUICtrlCreateLabel("<< https://autoit.de/www.team2way.de >>", 90, 275)
    GUICtrlSetColor(-1, 0xD3D3D3)
    ;GUICtrlCreatePic(@ScriptDir & "\2wb.bmp", 20, 275, 260, 19)
    GUISetState(@SW_SHOW)
    AdlibEnable("_Re", 1000) ;i Funktion alle 1000 ms starten - Aktualisierung

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

    While 1
    ;While 1
    If WinActive("[cC] " & @UserName) Then
    HotKeySet("{ENTER}", "_Send")
    HotKeySet("!" & "a", "_Re")
    HotKeySet("!" & "{F4}", "_Ende")
    Else
    HotKeySet("{ENTER}")
    HotKeySet("!" & "a")
    HotKeySet("!" & "{F4}")
    EndIf
    Sleep(10)
    ;WEnd
    ;GUICtrlSetData($EditText, FileRead($log))
    WEnd

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

    Func _Hotkey()
    MsgBox(0, "[cC] Hotkeys", "[F1] About" & @CRLF & "[F2] Lizenz" & @CRLF & "[Enter] Senden" & @CRLF & "[Alt+A] Aktualisieren" & @CRLF & "[Alt+F1] Aktiv/Deaktiv" & @CRLF & "[Alt+F4] Exit", 6)
    EndFunc ;==>_Hotkey

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

    Func _Re()
    $eof = _FileCountLines($log)
    if FileRead($log) <> $temp then
    GUICtrlSetData($EditText, FileRead($log))
    _GUICtrlEdit_Scroll($EditText, $SB_SCROLLCARET)
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    $temp = FileRead($log)
    EndIf
    EndFunc ;==>_Re

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

    Func _Send()
    $Ipath2 = GUICtrlRead($text)
    FileWrite($log, @CRLF & @UserName & " >" & @HOUR & ":" & @MIN & " => " & $Ipath2)
    $eof = _FileCountLines($log)
    GUICtrlSetData($EditText, FileRead($log))
    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")
    GUICtrlSetData($text, "")

    EndFunc ;==>_Send

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

    Func _Ende()
    FileWrite($log, @CRLF & "<< " & @UserName & " >" & @HOUR & ":" & @MIN & " ==> Hat den Chat verlassen!")
    ;If FileExists(@TempDir & "\qD.bmp") Then FileDelete(@TempDir & "\qD.bmp")
    Exit
    EndFunc ;==>_Ende

    [/autoit]
  • Hi team2way,

    vielleicht hilft Dir dieses weiter ?

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    GUICreate("My GUI edit", 400, 400, -1, -1)
    $myedit = GUICtrlCreateEdit("" & @CRLF, 10, 20, 380, 350, $ES_AUTOVSCROLL+$WS_VSCROLL)

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

    GUISetState ()

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

    $file = FileOpen("Dateie.txt", 0)
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    While 1
    $msg = GUIGetMsg()

    $chars = FileRead($file)
    If @error = -1 Then ExitLoop
    GUICtrlSetData($myedit, $chars, 1)
    MsgBox(0, "", "Gut so ? ")
    ExitLoop
    Wend

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

    FileClose($file)

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

    ; Ende

    [/autoit]


    Als Beispiel habe ich eine Text-Datei eingelesen.
    Viel Erfolg ! :)

  • nein leider hilft mir das nicht weiter, da der befehl nur für die ganze gui zutrifft.

    Edit es geht doch, nur brauch ich die controlclicks nicht mehr ;)
    thx noch mal...

    [autoit]

    ControlClick("","","Edit1","left",$eof,300,150)
    ControlClick("","","Edit2")

    [/autoit]