Daten aus der Auswahlliste übergeben

  • Hallo zusammen,

    ich bin noch totaler AutoIT anfänger.
    Mein Problem ist folgendes:
    Ich habe ein Auswahlfeld bzw. DroopDown Menü und würde gerne die Auswahl auslesen und in ein anderes Feld Auswahlfeld übergeben.

    Beispiel:
    -----------
    |-Item1-|
    | Item2 |
    |-Item3-|
    -----------

    ->
    <-

    ----------------------------
    |Ergebnis der Auswahl |
    ----------------------------

    Item1 und Item3 sind ausgewählt und dann klick ich auf Hinzufügen und im anderen Feld steht dann die Auswahl. Super wärs wenn man das ganze dann noch bearbeiten kann. z.B nachträglich Item2 hinzufügt und Item1 wieder entfernt.

    Gibts da sowas fertiges bzw. kann mir jemand Tipps geben. Hab bisher nix gefunden und bin echt ratlos. Danke

  • ja ich hab eine ComboBox aber irgendwie bekomm ich die Daten von den einen Feld net ins nächste. Code will ich hier lieber nicht Posten da ich echt 0 Ahnung davon habe :)

    Gibts zu AutoIT Bücher die man sich bestellen kann?

    • Offizieller Beitrag

    HI,

    nein gibt keine Bücher, nur gute Skripte zum Üben und ein Hammer-Helpfile.

    Hier check das aus:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiCombo.au3>

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

    Dim $Label, $Input, $Btn_Show, $Btn_Hide, $Combo, $Btn_Exit, $msg, $ret

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

    GUICreate("ComboBox Show Dropdown", 392, 254)

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

    $Combo = GUICtrlCreateCombo("", 70, 10, 270, 120)
    GUICtrlSetData($Combo, "AutoIt|v3|is|freeware|BASIC-like|scripting|language")
    $Btn_Show = GUICtrlCreateButton("Show", 80, 140, 90, 30)
    $Btn_Hide = GUICtrlCreateButton("Hide", 220, 140, 90, 30)
    $Btn_Auswahl = GUICtrlCreateButton("Auswahl", 150, 220, 90, 30)
    $Btn_Exit = GUICtrlCreateButton("Exit", 150, 180, 90, 30)
    $text_I = GUICtrlCreateInput("Hier kommt der ausgewählte Text rein wenn du Auswahl klickst!", 80, 50, 180, 60, $ES_MULTILINE)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
    ExitLoop
    Case $msg = $Btn_Show
    _GUICtrlComboShowDropDown($Combo, 1)
    Case $msg = $Btn_Hide
    _GUICtrlComboShowDropDown($Combo, 0)
    Case $msg = $Btn_Auswahl
    GUICtrlSetData($text_I, GUICtrlRead($Combo))
    EndSelect
    WEnd
    Exit

    [/autoit]

    So long,

    Mega

  • Danke schonmal,

    muss mir das morgen nochmal genauer anschauen da die Werte unten immer überschrieben werden aber biser sieht es ganz gut aus :)

    Melde mich morgen nochmal, will langsam mal heim

  • Hallo zusammen,

    habe mir das nochmal genau angeschaut.
    Das einzige was mich jetzt nur noch stört ist folgendes:
    Oben habe ich mein Auswahlfeld und unten kommen die Felder hinzu die ich Auswähle. Ich möchte aber noch ein Entfernen Feld (Auwahl entfernen) machen und da weiß ich auch net wie ich das machen muss.
    Hoffe ihr könnt mir weiterhelfen! Danke

    • Offizieller Beitrag

    HI,

    heißt das:

    Du hast eine AuswahlCombo und ein Feld in der nach drücken eines Buttons der ausgewählte Teil angefügt werden soll und wenn man entfernen klickt, dann soll die Zeile des ausgewählten wieder entfernt werden?

    Was für ein Control ist denn die Anzeige? Edit, InputBox ...?

    So long,

    Mega

    P.S.: Sicher können wir ;)

  • genau.

    Ich hab mein Erstes Feld mit:

    Item1
    Item2
    Item3

    wähle Item2 aus

    und das Script soll es dann im Feld zwei ausgeben.
    Mir egal wie, von mir aus auch im TextForm ohne Label etc.
    Feld eins soll ein Auswahlfeld sein (nicht Editierbar)

  • so also das Formular steht,
    hab genau das was ich wollte,

    jetzt hab ich folgende frage.

    Ich nun zweimal ein List Feld,

    Feld 1 sind die Item´s drin,
    nun klicke ich auf den Add Button und
    im Feld 2 wird dann die Auswahl übergeben.

    Jetzt hab ich folgendes Problem.

    Ich will nun das ganze auslesen und einen Loop erzeugen,
    also wenn quasi das Feld leer ist dann macht er nix, ansonsten erzeugt er den Loop mit den Einträgen,

    habt ihr da ein Vorschlag?

    Feld zwei heißt bei mir $text_I
    Es ist ein Listfeld,

    ziel ist es die Daten auf diesen Feld auszulesen und dann einen Send("ITEMS") befehl auszuführen! Danach ein Enter und sofern noch Items drinne stehen halt nochmal..... und nochmal....

    Hoffe ihr könnt mir da helfen!

  • So hab mal alles rausgemacht was ihr nicht braucht, ist quasi nur das Formular und der Send Befehl (Schleife) die ich noch benötige bzw. nicht hinbekomm!
    PS: Die Schleife ob Postfächer ausgewählt wurden oder nicht funktioniert bereits! brauch nur die schleife die den Inhalt ausliest und getrennt in einen Send Befehl ausgibt.
    Send(auswahl1)
    Send(auswahl2) z.b

    Danke

    Spoiler anzeigen

    #include <GuiConstants.au3>
    #include <GuiCombo.au3>

    Dim $Label, $Input, $Btn_Show, $Btn_Hide, $Combo, $Btn_Exit, $msg, $ret

    ;Hauptfenster erstellen
    GUICreate("Outlook 2003 Konfigurationsassisten von xxxxxxxxxxx",405,350)
    GUICtrlCreateLabel("Outlook 2003 Konfigurationsassisten","15","15")
    GUICtrlCreateLabel("vo xxxxxxxxxxx","15","30")
    ;xxxxxxx Logo
    GuiCtrlCreatePic("xxxxxxlogo.jpg",110,50,193,43)

    If Not FileExists("xxxxxlogo.jpg") Then
    GuiCtrlCreateLabel("" & @CRLF & " Hypotheken-Management" & @CRLF & "",70,50,190,40)
    GuiCtrlSetBkColor(-1, 0xcc0033)
    GUICtrlSetColor(-1,0xffffff)
    EndIf


    ;Labels
    GUICtrlCreateLabel("Es werden nun folgende Einstellungen für Sie übernommen:","15","120","290")
    GUICtrlCreateLabel("UserName:","15","145","80")
    $username = GUICtrlCreateLabel(@UserName, 80,145,120,16)
    GUICtrlCreateLabel("Server:","15","165","90")
    $server = GUICtrlCreateLabel("xxxxxxxxxxxxxxxx.com","80","165","150")
    GUICtrlCreateLabel("Postfächer:","15","188","90")

    $Combo = GUICtrlCreateList("", 80, 185, 100, 120)

    ;~ Inhalt der ComboBox für Postfächer
    GUICtrlSetData($Combo, "xxx5|xxxx4|xxxxx3|xxxx2|xxx1")


    $Btn_Add = GUICtrlCreateButton("+", 185, 215, 20, 20)
    $Btn_Del = GUICtrlCreateButton("-", 185, 245, 20, 20)
    $text_I = GUICtrlCreateList("",208, 185, 100, 120)

    ;Ok-Button erstellen
    $ok = GUICtrlCreateButton ("OK","110","300","80")
    ;Abbrechen-Button erstellen
    $cancel = GUICtrlCreateButton ("Abbrechen","230","300","80")

    GUICtrlCreateLabel("© xxxxxxxxxxxxxxxxxt","116","329","420")

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    if $msg = $cancel Then Exit

    if $msg = $ok Then ExitLoop
    Select
    ;~ Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
    ;~ ExitLoop
    Case $msg = $Btn_Del
    GUICtrlSetData($text_I, "")
    Case $msg = $Btn_Add
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & GUICtrlRead($Combo))
    EndSelect
    WEnd

    $mailbox = GUICtrlRead($text_I) ;???
    ;~ Outlook wird nun geöffnet und geht in das Menü
    ;~ Und genau hier soll er das Feld text_I auslesen und einen Send Befehl starten

    Send($mailbox) ;(funktioniert aber nur für eine zeile) :(

    2 Mal editiert, zuletzt von Flitzer (12. Januar 2007 um 13:04)

    • Offizieller Beitrag

    Hi,

    hmmh mal sehen ob das das ist, was du wolltest.

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GuiCombo.au3>
    #Include <GuiEdit.au3>
    #Include <Array.au3>

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

    Dim $Label, $Input, $Btn_Show, $Btn_Hide, $Combo, $Btn_Exit, $msg, $ret

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

    ;Hauptfenster erstellen
    GUICreate("Outlook 2003 Konfigurationsassisten von xxxxxxxxxxx", 405, 350)
    GUICtrlCreateLabel("Outlook 2003 Konfigurationsassisten", "15", "15")
    GUICtrlCreateLabel("vo xxxxxxxxxxx", "15", "30")
    ;xxxxxxx Logo
    GUICtrlCreatePic("xxxxxxlogo.jpg", 110, 50, 193, 43)

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

    If Not FileExists("xxxxxlogo.jpg") Then
    GUICtrlCreateLabel("" & @CRLF & " Hypotheken-Management" & @CRLF & "", 70, 50, 190, 40)
    GUICtrlSetBkColor(-1, 0xcc0033)
    GUICtrlSetColor(-1, 0xffffff)
    EndIf

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

    ;Labels
    GUICtrlCreateLabel("Es werden nun folgende Einstellungen für Sie übernommen:", "15", "120", "290")
    GUICtrlCreateLabel("UserName:", "15", "145", "80")
    $username = GUICtrlCreateLabel(@UserName, 80, 145, 120, 16)
    GUICtrlCreateLabel("Server:", "15", "165", "90")
    $server = GUICtrlCreateLabel("xxxxxxxxxxxxxxxx.com", "80", "165", "150")
    GUICtrlCreateLabel("Postfächer:", "15", "188", "90")

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

    $Combo = GUICtrlCreateList("", 80, 185, 100, 120)

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

    ;~ Inhalt der ComboBox für Postfächer
    GUICtrlSetData($Combo, "xxx5|xxxx4|xxxxx3|xxxx2|xxx1")

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

    $Btn_Add = GUICtrlCreateButton("+", 185, 215, 20, 20)
    $Btn_Del = GUICtrlCreateButton("-", 185, 245, 20, 20)
    $text_I = GUICtrlCreateEdit("", 208, 185, 100, 120, $ES_MULTILINE)

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

    ;Ok-Button erstellen
    $ok = GUICtrlCreateButton("OK", "110", "300", "80")
    ;Abbrechen-Button erstellen
    $cancel = GUICtrlCreateButton("Abbrechen", "230", "300", "80")
    Global $status = 0
    GUICtrlCreateLabel("© xxxxxxxxxxxxxxxxxt", "116", "329", "420")

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $cancel Then Exit

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

    If $msg = $ok Then _send()
    Select
    Case $msg = $Btn_Del
    $status = 0
    GUICtrlSetData($text_I, "")
    Case $msg = $Btn_Add
    If $status <> 0 Then
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & @CRLF & GUICtrlRead($Combo))
    Else
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & GUICtrlRead($Combo))
    EndIf
    $status += 1
    EndSelect
    WEnd

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

    Func _send()
    MsgBox(0, "", GUICtrlRead($text_I)) ; oder halt Send
    EndFunc ;==>_send

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

    $mailbox = GUICtrlRead($text_I) ;???
    ;~ Outlook wird nun geöffnet und geht in das Menü
    ;~ Und genau hier soll er das Feld text_I auslesen und einen Send Befehl starten

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

    Send($mailbox)

    [/autoit]

    So long,

    Mega

  • So also bisher funktioniert mein Programm supppeerrrr......


    Nur noch eine Frage:
    Wie kann ich das Feld
    $text_I =
    in ein List Feld umwandeln.
    Sobald ich
    $text_I = GUICtrlCreateEdit("", 225, 205, 150, 110, $ES_MULTILINE)
    in $text_I = GUICtrlCreateList(...............) ändere funktioniert es nicht.

    Zudem noch eine Frage/Problem:
    Hat jemand eine Idee wie ich prüfe ob eine Auswahl bereits übergeben wurde?
    Weil mein Problem ist wenn ich aus Feld $combo was in $text_I = übergebe kann ich dies mehrmals übergeben.
    steht dann z.b Item1 Item1 Item1 ... usw
    Das würde ich gerne vermeiden!

    Vielen Dank für deine Hilfe.


    Spoiler anzeigen


    #include <GuiConstants.au3>
    #include <GuiCombo.au3>
    #Include <GuiEdit.au3>
    #Include <Array.au3>


    Dim $Label, $Input, $Btn_Show, $Btn_Hide, $Combo, $Btn_Exit, $msg, $ret

    ;Hauptfenster erstellen
    GUICreate("Outlook 2003 Konfigurationsassisten von xxxxxxxxxxx", 405, 350)
    GUICtrlCreateLabel("Outlook 2003 Konfigurationsassisten", "15", "15")
    GUICtrlCreateLabel("vo xxxxxxxxxxx", "15", "30")
    ;xxxxxxx Logo
    GUICtrlCreatePic("xxxxxxlogo.jpg", 110, 50, 193, 43)

    If Not FileExists("xxxxxlogo.jpg") Then
    GUICtrlCreateLabel("" & @CRLF & " Hypotheken-Management" & @CRLF & "", 70, 50, 190, 40)
    GUICtrlSetBkColor(-1, 0xcc0033)
    GUICtrlSetColor(-1, 0xffffff)
    EndIf

    ;Labels
    GUICtrlCreateLabel("Es werden nun folgende Einstellungen für Sie übernommen:", "15", "120", "290")
    GUICtrlCreateLabel("UserName:", "15", "145", "80")
    $username = GUICtrlCreateLabel(@UserName, 80, 145, 120, 16)
    GUICtrlCreateLabel("Server:", "15", "165", "90")
    $server = GUICtrlCreateLabel("xxxxxxxxxxxxxxxx.com", "80", "165", "150")
    GUICtrlCreateLabel("Postfächer:", "15", "188", "90")

    $Combo = GUICtrlCreateList("", 80, 185, 100, 120)

    ;~ Inhalt der ComboBox für Postfächer
    GUICtrlSetData($Combo, "xxx5|xxxx4|xxxxx3|xxxx2|xxx1")


    $Btn_Add = GUICtrlCreateButton("+", 185, 215, 20, 20)
    $Btn_Del = GUICtrlCreateButton("-", 185, 245, 20, 20)
    $text_I = GUICtrlCreateEdit("", 208, 185, 100, 120, $ES_MULTILINE)

    ;Ok-Button erstellen
    $ok = GUICtrlCreateButton("OK", "110", "300", "80")
    ;Abbrechen-Button erstellen
    $cancel = GUICtrlCreateButton("Abbrechen", "230", "300", "80")
    Global $status = 0
    GUICtrlCreateLabel("© xxxxxxxxxxxxxxxxxt", "116", "329", "420")

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    If $msg = $cancel Then Exit

    If $msg = $ok Then _send()
    Select
    Case $msg = $Btn_Del
    $status = 0
    GUICtrlSetData($text_I, "")
    Case $msg = $Btn_Add
    If $status <> 0 Then
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & @CRLF & GUICtrlRead($Combo))
    Else
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & GUICtrlRead($Combo))
    EndIf
    $status += 1
    EndSelect
    WEnd

    • Offizieller Beitrag

    Hi,

    kannst es so probieren:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiCombo.au3>
    #Include <GuiEdit.au3>
    #Include <Array.au3>

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

    Dim $Label, $Input, $Btn_Show, $Btn_Hide, $Combo, $Btn_Exit, $msg, $ret

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

    ;Hauptfenster erstellen
    GUICreate("Outlook 2003 Konfigurationsassisten von xxxxxxxxxxx", 405, 350)
    GUICtrlCreateLabel("Outlook 2003 Konfigurationsassisten", "15", "15")
    GUICtrlCreateLabel("vo xxxxxxxxxxx", "15", "30")
    ;xxxxxxx Logo
    GUICtrlCreatePic("xxxxxxlogo.jpg", 110, 50, 193, 43)

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

    If Not FileExists("xxxxxlogo.jpg") Then
    GUICtrlCreateLabel("" & @CRLF & " Hypotheken-Management" & @CRLF & "", 70, 50, 190, 40)
    GUICtrlSetBkColor(-1, 0xcc0033)
    GUICtrlSetColor(-1, 0xffffff)
    EndIf

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

    ;Labels
    GUICtrlCreateLabel("Es werden nun folgende Einstellungen für Sie übernommen:", "15", "120", "290")
    GUICtrlCreateLabel("UserName:", "15", "145", "80")
    $username = GUICtrlCreateLabel(@UserName, 80, 145, 120, 16)
    GUICtrlCreateLabel("Server:", "15", "165", "90")
    $server = GUICtrlCreateLabel("xxxxxxxxxxxxxxxx.com", "80", "165", "150")
    GUICtrlCreateLabel("Postfächer:", "15", "188", "90")

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

    $Combo = GUICtrlCreateList("", 80, 185, 100, 120)

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

    ;~ Inhalt der ComboBox für Postfächer
    GUICtrlSetData($Combo, "xxx5|xxxx4|xxxxx3|xxxx2|xxx1")

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

    $Btn_Add = GUICtrlCreateButton("+", 185, 215, 20, 20)
    $Btn_Del = GUICtrlCreateButton("-", 185, 245, 20, 20)
    $text_I = GUICtrlCreateEdit("", 208, 185, 100, 120, $ES_MULTILINE)

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

    ;Ok-Button erstellen
    $ok = GUICtrlCreateButton("OK", "110", "300", "80")
    ;Abbrechen-Button erstellen
    $cancel = GUICtrlCreateButton("Abbrechen", "230", "300", "80")
    Global $status = 0
    GUICtrlCreateLabel("© xxxxxxxxxxxxxxxxxt", "116", "329", "420")

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $cancel Then Exit

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

    If $msg = $ok Then _send()
    Select
    Case $msg = $Btn_Del
    $status = 0
    GUICtrlSetData($text_I, "")
    Case $msg = $Btn_Add
    If Not _check() Then
    If $status <> 0 Then
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & @CRLF & GUICtrlRead($Combo))
    Else
    GUICtrlSetData($text_I, GUICtrlRead($text_I) & GUICtrlRead($Combo))
    EndIf
    $status += 1
    EndIf
    EndSelect
    WEnd

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

    Func _check()
    If StringInStr(GUICtrlRead($text_I), GUICtrlRead($Combo)) <> 0 Then
    Return 1
    EndIf
    EndFunc ;==>_check

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

    Func _send()
    MsgBox(0, "", GUICtrlRead($text_I)) ; oder halt Send
    EndFunc ;==>_send

    [/autoit]

    Warum soll es unbedingt eine Liste sein?

    So long,

    Mega