Gui CreateInput frage

  • moin

    wollte mal schnell fragen wie der befehl ist, das man im label nicht reinschreiben kann und das auch kein blinkender balken kommt

    würde mich freuen wenn ihr es mir sagen könnt denn ich finde den befehl einfach nicht..
    der blinkende balken bleibt trotzdem..

    mfg

    Einmal editiert, zuletzt von Texos (13. September 2010 um 15:22)

  • [autoit]

    $log = GUICtrlCreateEdit("", 400, 350, 500, 138, BitOR($ES_OEMCONVERT,$ES_AUTOVSCROLL,$ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))

    [/autoit]


    und wie füg ich das dann mit dem guiregistermsg ein? weil wenn ich dann mal in die log drücke und der balken ist dann oben in der mitte z.B. dann schreibt er dort hin statt ganz nach unten weiter
    deswegen möchte ich das blockieren

    • Offizieller Beitrag

    $WM_COMMAND war's, nicht $WM_SETFOCUS. Und so geht's:

    Spoiler anzeigen
    [autoit]


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

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

    GUICreate('Test', 520, 400)
    $log = GUICtrlCreateEdit("", 10, 10, 500, 138, BitOR($ES_OEMCONVERT,$ES_AUTOVSCROLL,$ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))
    $hButton = GUICtrlCreateButton('ok', 10, 160, 100, 20)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
    Do
    Until GUIGetMsg() = -3

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

    Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $log Then GUICtrlSetState($hButton, $GUI_FOCUS)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • hm... ok balken wird nichtmehr angezeigt und es wird nicht angezeigt das man darin ist..

    doch ich kann irgendwo hindrücken und dann werden die logs weitergeschrieben.

    das problem, sie erscheinen trotzdem dort wo ich hindrücke obwohl kein balken zu sehen ist..

  • Ich hab ja auch geschrieben "so oder so ähnlich" - weil ichs nur auf die Schnelle geschrieben hab.
    Schalt doch mal kurz den Biocomputer an, und in 3 sekunden hast du den Fehler gefunden.

    [autoit]

    _GUICtrlEdit_SetSel($hEdit, StringLen(_GUICtrlEdit_GetText($hEdit)), -1) ; Da fehlte ein StringLen

    [/autoit]


    Alternativ kannst du übrigens auch

    [autoit]

    _GUICtrlEdit_AppendText

    [/autoit]


    benutzen

  • Ich hab mal das gemacht.
    Kurz und knapp. So kommts immer ans Ende.

    Spoiler anzeigen
    [autoit]

    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    $String = "BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla"
    GUICreate("Form1", 633, 454, 192, 114)
    GUISetOnEvent(-3, "_Exit")
    $Edit = GUICtrlCreateEdit("", 24, 16, 577, 417, $WS_VSCROLL, -1)

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

    GUISetState(@SW_SHOW)
    While Sleep(100)
    $Read = StringLen(GUICtrlRead($Edit))
    _GUICtrlEdit_SetSel(GUICtrlGetHandle($Edit) , $Read, $Read)
    GUICtrlSetData($Edit, $String, 1)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • ... und so wurde das mit AHK gelöst (by SKAN:(

    [autoit]

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

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

    GUICreate('Test', 520, 400)
    $log = GUICtrlCreateEdit("Das ist die erste Zeile", 10, 10, 500, 138, BitOR($ES_OEMCONVERT,$ES_AUTOVSCROLL,$ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))
    $hEdit = GUICtrlGetHandle(-1)
    $hButton = GUICtrlCreateButton('Anhängen', 10, 160, 100, 20)
    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case $hButton
    Anhaengen()
    Case -3
    Exit
    EndSwitch
    WEnd

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

    Func Anhaengen()
    GUICtrlSendMsg($Log, $EM_SETSEL, -2, -1)
    GUICtrlSetData($Log, @CRLF & "Das ist eine neue Zeile!", 1)
    EndFunc

    [/autoit]