GUICtrlSetData

  • Hallo und Guten Abend,

    ich habe 3 Fragen zu diesem Befehl:

    Ich frage in einer For Next Schleife ab, ob die eine bestimmte Zahl verfügbar ist. Wenn ja, dann trage diese Zahl in die Liste ein, wenn nicht dann gehe zum nächsten Schritt.

    Meine erste Frage: Wie füge ich die Einträge hinzu? Mit dem was in der Hilfe unter GUICtrlSetData zu finden ist, komme ich nicht weiter. Ich hatte heute in der Hilfe irgendwo ein Beispiel gefunden, wo eine Funktion erzeugt wird, die den Eintrag vornimmt - leider finde ich dieses Beispiel nicht mehr.

    Meine zweite Frage: Wie mache ich, dass der erste Eintrag immer vorgewählt ist?

    Meine dritte Frage: Wie übergebe ich den ausgewählten Wert an die Inputbox?

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 276, 118, 192, 124)
    $List1 = GUICtrlCreateList("", 8, 8, 121, 97)
    GUICtrlSetData(-1, "1|2|3")
    $Input1 = GUICtrlCreateInput("", 144, 8, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    Vielen Dank und viele Grüße,
    TOYY1

    Einmal editiert, zuletzt von TOYY1 (22. September 2011 um 09:51)

  • Hallo,

    1.) Wenn du die Hilfe auf deutsch hast istd as kein Problem, auf englisch ist es eigentlich auch ok. Das Beispiel ist natürlich hierfür nciht geeignet, da gebe ich dir rechts.

    2.) Ich würds so machen ( wenn es das ist, was du meinst )

    [autoit]

    $NeuerText = "Dies ist der neue Text der INputBox, dies ist der alte: "
    $read = GuiCtrlRead($Input)
    $NeuerText &= $read ; Nimmt den Neuen text und ( &= ) dahinter den alten

    [/autoit]

    3.)

    [autoit]

    GuiCtrlSetData($Input, "Neuer Text")

    [/autoit]

    mfg
    Hauke

  • Zu Frage 1:
    Nimm für deine liste lieber _GUICtrlListView_Create damit hast du wesentlich mehr möglichkeiten um das ganze umzusetzen!

    Zu Frage 2:
    Siehe frage 1 damit ist es auch möglich ein Standard festzulegen!

    Zu Frage 3:
    Geht auch mit GUICtrlSetData

    Damit du besser bei deiner GUI durch blickst würde ich den GUIOnEventMode aktivieren!

    Dann würde dein Code so aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 279, 121, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $List1 = GUICtrlCreateList("", 8, 8, 121, 97)
    GUICtrlSetData(-1, "1|2|3")
    $Input1 = GUICtrlCreateInput("", 144, 8, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    Func Form1Close()
    Exit
    EndFunc ;==>Form1Close

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

    While 1
    Sleep(500)
    WEnd

    [/autoit]
  • Hallo TOYY1,

    die 1. Frage habe ich nicht verstanden, der Anwender kann doch eh nur vorhanden Inhalt aus der List wählen. Die beiden anderen Antworten findest du im Skript:

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 276, 118, 192, 124)
    $List1 = GUICtrlCreateList("", 8, 8, 121, 97)
    GUICtrlSetData(-1, "1|2|3")
    GUICtrlSetData(-1,"1","1") ; Antwort zu Frage 2 dadurch wird die 1 ausgewählt
    $Input1 = GUICtrlCreateInput("", 144, 8, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $List1
    GuiCtrlSetData($Input1,GUICtrlRead($List1)) ;Antwort zu Frage 3
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Hallo an Alle und vielen Dank für die zahlreichen Antworten und Hilfestellungen.

    Die Funktion _GUICtrlListView_Create sieht recht kompliziert aus und das Beispiel in der Hilfe ist recht umfangreich. Ich möchte auf einer UserForm eine Liste füllen so wie im Ausgangscode. Geht das mit dieser Funktion auch?

    Ich habe in der Hilfe doch die Func gefunden und zwar unter _GUICtrlButton_Create. Dort gibt es die folgende Function. Könnte das die Lösung sein, um meine Zahlen in einer Schleife nacheinander in die Liste zu schreiben?

    [autoit]

    ; Write a line to the memo control
    $iMemo = GUICtrlCreateEdit("", 119, 10, 276, 374, $WS_VSCROLL)
    Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
    EndFunc ;==>MemoWrite

    [/autoit]

    autoBert: Danke für dein Beispiel. Funkioniert auch super mit der Vorauswahl. Leider muss man immer einmal zu Beginn auf den ersten Eintrag klicken, so dass die Zahl in der Box erscheint. Wie könnte man das noch ändern?

    Vielen Dank und viele Grüße,
    TOYY1

  • Hallo TOYY1,

    eigentlich hättest du darauf selbst kommen können, so:

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 276, 118, 192, 124)
    $List1 = GUICtrlCreateList("", 8, 8, 121, 97)
    GUICtrlSetData(-1, "1|2|3")
    GUICtrlSetData(-1,"1","1") ; Antwort zu Frage 2 dadurch wird die 1 ausgewählt
    $Input1 = GUICtrlCreateInput("", 144, 8, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GuiCtrlSetData($Input1,GUICtrlRead($List1)) ;Antwort zu Frage 3
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $List1
    GuiCtrlSetData($Input1,GUICtrlRead($List1)) ;Antwort zu Frage 3
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Hallo und vielen Dank AutoBert...
    zu Frage 1:

    [autoit]


    For $k = 1 to $GetAvailableKeycodes[0]
    $KeyCompare = StringInStr($authore_common[$i][1],$GetAvailableKeycodes[$k])
    If $KeyCompare <> 0 Then
    $test = _ArraySearch($Keycodes,$GetAvailableKeycodes[$k])
    ;an dieser Stelle möchte ich dann $Keycodes[$test][1] in die Liste eintragen aber GUICtrlSetData kann ich da ja nicht nehmen oder?
    EndIf
    Next

    [/autoit]

    Wie kann ich das machen?
    Vielen Dank und viele Grüße,
    Frank

  • Hallo TOYY1,

    auch das funktioniert mit GuiCtrlSetData das Problem ist aber das $test nicht den Wert sondern die Position des Elementes enthält. Poste dein komplettes Skript und ich zeige es dir.

    mfg autoBert

  • Hallo AutoBert,

    ich würde dir das gern als Nachricht zusenden, aber das geht nur bei Freunden bei dir. Es leigt alles hier bereit...Erklärung ist in der Nachricht.

    Viiele Grüße
    TOYY1