GUIfenster mit mehreren Inputfeldern

  • Hallo,

    ich ein Problem was wahrscheinlich so einfach zu lösen ist, ich es aber nicht hinbekomme. Ich wollte ein GUI-Fenster machen, wo man Zahlen eingeben kann und diese nacher irgentwo eingetragen werden.

    Bisher habe ich das GUI-Fenster

    Spoiler anzeigen
    [autoit]

    GuiCreate("Versuch",200,110,400,400)
    $button1=GuiCtrlCreateButton("Start",10,80,60,20)
    $button2=GuiCtrlCreateButton("Speichern",130,80,60,20)
    $input1=GuiCtrlCreateInput("!!!1",10,10,80,20)
    $input2=GuiCtrlCreateInput("!!!2",110,10,80,20)
    $input3=GuiCtrlCreateInput("!!!3",10,40,80,20)
    $input4=GuiCtrlCreateInput("!!!4",110,40,80,20)
    GuiSetState()

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

    While 1
    $msg=GuiGetMsg()
    If $msg=-3 Then Exit
    If $msg=$button1 Then button1()
    If $msg=$button2 Then button2()
    Wend

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

    Func button1()
    EndFunc

    [/autoit]

    und ich habe die "Eintrage-funktion"

    Spoiler anzeigen
    [autoit]

    Global $Paused
    HotKeySet("{^}", "Gooooo")

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

    While 1
    Sleep(100)
    WEnd

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

    Func Gooooo()
    MouseMove(158, 205, 5)
    MouseClick("left")
    Send(" ???1 ")

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

    MouseMove(330, 205, 5)
    MouseClick("left")
    Send(" ???2 ")

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

    MouseMove(158, 260, 5)
    MouseClick("left")
    Send(" ???3 ")

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

    MouseMove(330, 260, 5)
    MouseClick("left")
    Send(" ???4 ")

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

    EndFunc

    [/autoit]

    jetzt komme ich aber nicht weiter mit dem verbinden der beiden Teile. Ich will das wenn ich im Fenster, wo jetzt !!!1 steht, etwas eingebe es nacher unten bei ???1 steht. Das dann auch noch von !!!2 nach ???2, !!!3 nach ???3 und !!!4 nach ???4. Und wie ich das mit dem Speicher hinbekomme, das ich nicht jedes mal wenn ich das Programm neustarte wieder die Zahlen eingeben muss.
    Ich hoffe ihr könnt mir da etwas weiterhelfen.

    Gruß ZockyMcZock

    Einmal editiert, zuletzt von ZockyMcZock (24. Juli 2009 um 02:44)

  • Für mehr helfe ich mal nicht! (Bot-verdächtig)

    Spoiler anzeigen
    [autoit]

    GUICreate("Versuch", 200, 110, 400, 400)
    $button1 = GUICtrlCreateButton("Start", 10, 80, 60, 20)
    $button2 = GUICtrlCreateButton("Speichern", 130, 80, 60, 20)
    $input1 = GUICtrlCreateInput("!!!1", 10, 10, 80, 20)
    $input2 = GUICtrlCreateInput("!!!2", 110, 10, 80, 20)
    $input3 = GUICtrlCreateInput("!!!3", 10, 40, 80, 20)
    $input4 = GUICtrlCreateInput("!!!4", 110, 40, 80, 20)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button1

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

    Case $button2
    EndSwitch
    WEnd

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

    Global $Paused
    HotKeySet("{^}", "Gooooo")

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

    While 1
    Sleep(100)
    WEnd

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

    Func Gooooo()
    MouseMove(158, 205, 5)
    MouseClick("left")
    Send(GUICtrlRead($input1))

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

    MouseMove(330, 205, 5)
    MouseClick("left")
    Send(GUICtrlRead($input2))

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

    MouseMove(158, 260, 5)
    MouseClick("left")
    Send(GUICtrlRead($input3))

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

    MouseMove(330, 260, 5)
    MouseClick("left")
    Send(GUICtrlRead($input4))
    EndFunc ;==>Gooooo

    [/autoit]
  • Danke für die Antwort, allerdings gibts noch einen Fehler.

    Zitat

    (Bot-verdächtig)

    naja, es soll für ein offline Spiel sein, dadurch hat ja keiner Nachteile. Der Computer beschwert sich nicht wenn er verliert. Wenn das verboten ist sorry, wenn mir jedoch noch einer helfen kann, die SyntaxCheckProd sagt:

    Spoiler anzeigen


    C:\Dokumente und Einstellungen\J... : WARNING: $GUI_EVENT_CLOSE: possibly used before declaration.
    Case $GUI_EVENT_CLOSE
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\J... : ERROR: $GUI_EVENT_CLOSE: undeclared global variable.
    Case $GUI_EVENT_CLOSE
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\J... - 1 error(s), 1 warning(s)
    >Exit code: 2 Time: 1.006

    Also in Zeile 14, was ist da noch falsch oder was muss ich da noch ändern?

    Gruß ZockyMcZock

    • Offizieller Beitrag

    Füg mal das an den Anfang des Scriptes ein :

    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit]
  • Ich denke damit ist es nicht getan, Raupi. :huh:

    Spoiler anzeigen
    [autoit]

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

    [/autoit]
  • Wenns mit der Angabe des Includes immer noch nicht langt würde ich direkt nach der angabe der Includes die angeblich unbekannte mal mit dim deklarieren vll. hilfts.

    Bsp:

    [autoit]

    dim $GUI_EVENT_CLOSE

    [/autoit]

    Schau mal ob`s daran liegt.

    -Haut Rein!

  • Joar, 1000 Dank, das klappt jetzt alles, nur das mit dem speichern habe ich noch nicht hinbekommen, wenn ich speichern drücke, setzt er beim nächsten starten überall den gespeicherten Inhalt der 4. Inputbox ein.

    Spoiler anzeigen
    [autoit]

    Func _Filewrite()
    local $data = GUICtrlRead($Input1)
    local $data = GUICtrlRead($Input2)
    local $data = GUICtrlRead($Input3)
    local $data = GUICtrlRead($Input4)
    if FileExists($file) then
    local $openfile = FileOpen($file,2)
    FileWrite( $openfile, $data)
    MsgBox(1, "", "Gespeichert")
    else
    _FileCreate($file)
    local $openfile = FileOpen($file,2)
    FileWrite($openfile, $data)
    MsgBox(1, "", "Gespeichert")
    endif
    FileClose($openfile)
    endfunc

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

    Func _Fileread()
    if FileExists($file) then
    local $openfile = FileOpen($file,0)
    local $data = FileReadline($openfile)
    GUICtrlSetData($input1, $data)
    GUICtrlSetData($input2, $data)
    GUICtrlSetData($input3, $data)
    GUICtrlSetData($input4, $data)
    FileClose($openfile)
    else
    MsgBox(1, "", "Datei konnte nicht geöffnet werden")
    endif
    endfunc

    [/autoit]

    Das ist der Abschnitt fürs speichern, was ist da noch falsch?


    Gruß ZockyMcZock

  • wenn Du das so machst, was passiert dann... ?

    [autoit]


    local $data = GUICtrlRead($Input1)
    local $data = GUICtrlRead($Input2)
    local $data = GUICtrlRead($Input3)
    local $data = GUICtrlRead($Input4)

    [/autoit]

    Die Variable $data wird nacheinander 4x deklariert und mit Daten befüllt.
    Logischerweise ist am Schluß dieser Anweisung der Inhalt von Deiner Variable der letzte gelesene Wert ...

    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. ;)

  • Also einfach einen Tab davor? Das bringt nix, immer noch der wert aus input4 überall.

  • was für einen Tab?
    Für Deinen Fall schau Dir mal die Funktion IniRead und IniWrite näher an.

    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. ;)

  • DANKE habe es mit IniRead und IniWrite jetzt geschaft :) . Endlich läuft es so wie ich es wollte.