Finde keine Lösung :(

  • Hallo,

    bei meinem programm funktioniert alles einwandfrei...bisauf eins...

    Aber mal von vorne, wo mein Problem liegt. Und zwar soll wenn ich unter "ausgabe" bei combobox personalnummer (ja egal auch wenns noch ein name ist xD) ein item auswähle, er das entgegensetze bei combobox name einfügen...beide beziehen ihre daten aus einer ini, welche im format: Name#personalnummer ist...

    das funktioniert auch soweit, aber leider nicht anders herum...wenn ich bei combobxo namen ein item wähle, ändert er die erstens nicht zu dem gewählen und ändert zudem auch nicht das in der combobox von personalnummer...

    hier das script wo dies passiert:

    [autoit]


    if _ispressed(01) or _ispressed(09) or _ispressed("0D") Then
    If ControlFocus("", "", $combo_give_personalnummer) then
    for $i = 1 to 10
    $name = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    if GUICtrlRead($combo_give_personalnummer) = $name[1] Then
    ;ControlFocus("", "", $combo_give_name)
    ;controlsend("", "", $combo_give_name, $personalnummer[2])
    _GUICtrlComboBox_SetCurSel($combo_give_name, $i - 1)
    _GUICtrlComboBox_SetCurSel($combo_give_personalnummer, $i - 1)
    EndIf
    next
    endif

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

    If ControlFocus("", "", $combo_give_name) then
    for $i = 1 to 10
    $name = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    if GUICtrlRead($combo_give_name) = $name[2] Then
    ;ControlFocus("", "", $combo_give_name)
    ;controlsend("", "", $combo_give_name, $personalnummer[2])
    _GUICtrlComboBox_SetCurSel($combo_give_personalnummer, $i - 1)
    _GUICtrlComboBox_SetCurSel($combo_give_name, $i - 1)
    EndIf
    next
    endif
    endif

    [/autoit]


    falls das nicht reicht, hier das ganze scirpt:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #Include <Misc.au3>
    #include <Sound.au3>
    #include <Excel.au3>
    #include <WinAPI.au3>
    #include <Word.au3>
    #Include <GuiComboBox.au3>
    $font = "Arial"
    $datum_ausgeliehen = "21.12.2012"
    $datum_pruefung = "21.12.2012"
    $datum_reparatur = "21.12.2012"
    $focus_combo_give_name = ""
    $focus_combo_give_personalnummer = ""
    $focus_combo_give_hobbywerkzeug = ""

    $focus_combo_get_name = ""
    $focus_combo_get_personalnummer = ""
    $focus_combo_get_hobbywerkzeug = ""
    ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Hauptfenster:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    $gui_main = GUICreate("Hobbyausgabe", 800, 600, (@DesktopWidth - 800) / 2, (@DesktopHeight - 600) / 2)
    GUISetBkColor(0xF5F5DC)
    $button_ausgabe = GUICtrlCreateButton("Ausgabe", 50, 300, 300, 100)
    $button_rueckgabe = GUICtrlCreateButton("Rückgabe", 450, 300, 300, 100)
    GUISetState()
    ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Ausgabe:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    $gui_give = GUICreate("", 800, 600, "", "", $WS_POPUPWINDOW, $WS_EX_MDICHILD , $gui_main) ;Ausgabe Gui--------------------;
    GUISetBkColor(0xEEE8AA) ;Hintergrundfarbe---------------;
    $label_give_personalnummer = GUICtrlCreateLabel("Personalnummer:", 40, 30, 120, 20) ;Label Personalnummer-----------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $combo_give_personalnummer = GUICtrlCreateCombo("", 175, 30, 400, 20) ;Combobox Personalnummer--------;
    for $i = 1 to 10
    $personalnummer = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    GUICtrlSetData(-1, $personalnummer[1])
    Next
    $label_give_name = GUICtrlCreateLabel("Name:", 40, 70, 100, 20)
    GUICtrlSetFont(-1, 10, 600, "", $font)
    $combo_give_name = GUICtrlCreateCombo("", 175, 70, 400, 20)
    for $i = 1 to 10
    $personalnummer = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    GUICtrlSetData(-1, $personalnummer[2])
    Next
    GUICtrlCreateGraphic(25,114, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $label_give_datum = GUICtrlCreateLabel("Ausgabedatum:", 40, 130, 120, 20) ;Label Datum--------------------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $input_give_datum = GUICtrlCreateInput("", 175, 130, 100, 20) ;Input Datum--------------------;
    GUICtrlCreateGraphic(25, 164, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $label_give_herausgeber = GUICtrlCreateLabel("Herausgeber:", 40, 180, 120, 20) ;Label Herausgeber--------------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $radio_give_herausgeber_kal = GUICtrlCreateRadio(" Kalitzki", 175, 180, 120, 20) ;Radio Herausgeber Kalitzki-----;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $radio_give_herausgeber_buch = GUICtrlCreateRadio(" Buchkremer", 175, 205, 120, 20) ;Radio Herausgeber Buchkremer---;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    GUICtrlCreateGraphic(25, 239, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $label_give_hobbywerkzeug = GUICtrlCreateLabel("Hobbywerkzeug:", 40, 255, 120, 20) ;Label Gegenstand---------------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $combo_give_hobbywerkzeug = GUICtrlCreateCombo("", 175, 255, 400, 20) ;Combobox Gegenstand------------;
    GUICtrlSetData(-1, "andreas|alexander|atze")
    ;GUICtrlCreateGraphic(25, 239, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $button_verfuegbarkeit_check = GUICtrlCreateButton("Verfügbarkeit prüfen", 600, 252, 150, 26)
    $label_verfuegbarkeit = GUICtrlCreateLabel("Verfügbarkeit:", 40, 295, 120, 20)

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

    ;$label_verfuegbar = GUICtrlCreateLabel("Verfügbar", 175, 295, 50, 20)
    $pic_yes = GUICtrlCreatePic(@scriptdir & "\yes.jpg", 175, 285, 30, 30)
    ;$pic_no = GUICtrlCreatePic(@scriptdir & "\no.jpg", 253, 288, 27, 27)
    ;GUICtrlSetState(-1, $gui_disable)
    $label_ort = GUICtrlCreateLabel("Ort:", 40, 325, 100, 20)
    $label_Hobbyausgabe = GUICtrlCreateLabel("Hobbyausgabe", 175, 325, 120, 20)
    $label_Ausgeliehen = GUICtrlCreateLabel("Ausgeliehen seit " & $datum_ausgeliehen, 175, 345, 250, 20)
    GUICtrlSetState(-1, $gui_disable)
    $label_pruefung = GUICtrlCreateLabel("Prüfung seit " & $datum_pruefung, 175, 365, 250, 20)
    GUICtrlSetState(-1, $gui_disable)
    $label_reparatur = GUICtrlCreateLabel("In Reparatur seit " & $datum_reparatur, 175, 385, 250, 20)
    GUICtrlSetState(-1, $gui_disable)
    $button_give_uebernehmen = GUICtrlCreateButton("Übernehmen", 100, 520, 150, 40) ;Button Übernehmen--------------;
    $button_give_zurueck = GUICtrlCreateButton("Zurück", 550, 520, 150, 40) ;Button Zurück------------------;
    GUISetState(@sw_hide)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Rückgabe:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    $gui_get = GUICreate("", 800, 600, "", "", $WS_POPUPWINDOW, $WS_EX_MDICHILD , $gui_main)
    GUISetBkColor(0xFFDEAD)
    $label_get_personalnummer = GUICtrlCreateLabel("Personalnummer:", 40, 30, 120, 20) ;Label Personalnummer-----------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $combo_get_personalnummer = GUICtrlCreateCombo("", 175, 30, 400, 20) ;Combobox Personalnummer--------;
    GUICtrlSetData(-1, "andreas|alexander|atze") ;Daten Personalnummer-----------;
    $label_get_name = GUICtrlCreateLabel("Name:", 40, 70, 100, 20)
    GUICtrlSetFont(-1, 10, 600, "", $font)
    $combo_get_name = GUICtrlCreateCombo("", 175, 70, 400, 20)
    GUICtrlSetData(-1, "andreas|alexander|atze")
    GUICtrlCreateGraphic(25,114, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $label_get_datum = GUICtrlCreateLabel("Rückgabedatum:", 40, 130, 120, 20) ;Label Datum--------------------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $input_get_datum = GUICtrlCreateInput("", 175, 130, 100, 20) ;Input Datum--------------------;
    GUICtrlCreateGraphic(25, 164, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;

    GUICtrlCreateGraphic(25, 239, 750, 3, $SS_GRAYframe) ;Trennlinie---------------------;
    $label_get_hobbywerkzeug = GUICtrlCreateLabel("Hobbywerkzeug:", 40, 255, 120, 20) ;Label Gegenstand---------------;
    GUICtrlSetFont(-1, 10, 600, "", $font) ;Schriftgröße und Art-----------;
    $combo_get_hobbywerkzeug = GUICtrlCreateCombo("", 175, 255, 400, 20) ;Combobox Gegenstand------------;
    GUICtrlSetData(-1, "andreas|alexander|atze")

    $button_get_uebernehmen = GUICtrlCreateButton("Übernehmen", 100, 520, 150, 40)
    $button_get_zurueck = GUICtrlCreateButton("Zurück", 550, 520, 150, 40)
    GUISetState(@sw_hide)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

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

    while 1
    $msg = GUIGetMsg()
    if $msg = - 3 then Exit

    if $msg = $button_ausgabe then GUISetState(@sw_show, $gui_give)
    if $msg = $button_rueckgabe then GUISetState(@sw_show, $gui_get)
    if $msg = $button_give_zurueck then GUISetState(@sw_hide, $gui_give)
    if $msg = $button_get_zurueck then GUISetState(@sw_hide, $gui_get)

    sleep(20)


    if _ispressed(01) or _ispressed(09) or _ispressed("0D") Then
    If ControlFocus("", "", $combo_give_personalnummer) then
    for $i = 1 to 10
    $name = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    if GUICtrlRead($combo_give_personalnummer) = $name[1] Then
    ;ControlFocus("", "", $combo_give_name)
    ;controlsend("", "", $combo_give_name, $personalnummer[2])
    _GUICtrlComboBox_SetCurSel($combo_give_name, $i - 1)
    _GUICtrlComboBox_SetCurSel($combo_give_personalnummer, $i - 1)
    EndIf
    next
    endif

    If ControlFocus("", "", $combo_give_name) then
    for $i = 1 to 10
    $name = StringSplit(iniread(@scriptdir & "\person.ini", "person", $i, ""), "#")
    if GUICtrlRead($combo_give_name) = $name[2] Then
    ;ControlFocus("", "", $combo_give_name)
    ;controlsend("", "", $combo_give_name, $personalnummer[2])
    _GUICtrlComboBox_SetCurSel($combo_give_personalnummer, $i - 1)
    _GUICtrlComboBox_SetCurSel($combo_give_name, $i - 1)
    EndIf
    next
    endif
    endif
    WEnd

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

    Func _Edit_Change_give_name()
    _GUICtrlComboBox_AutoComplete($combo_give_name)
    EndFunc
    Func _Edit_Change_give_personalnummer()
    _GUICtrlComboBox_AutoComplete($combo_give_personalnummer)
    EndFunc
    Func _Edit_Change_give_hobbywerkzeug()
    _GUICtrlComboBox_AutoComplete($combo_give_hobbywerkzeug)
    EndFunc
    Func _Edit_Change_get_name()
    _GUICtrlComboBox_AutoComplete($combo_get_name)
    EndFunc
    Func _Edit_Change_get_personalnummer()
    _GUICtrlComboBox_AutoComplete($combo_get_personalnummer)
    EndFunc
    Func _Edit_Change_get_hobbywerkzeug()
    _GUICtrlComboBox_AutoComplete($combo_get_hobbywerkzeug)
    EndFunc
    Func WM_COMMAND($winhandle, $win_msgID, $iwParam, $ilParam)

    $focus_combo_give_name = GUICtrlGetHandle($combo_give_name)
    $focus_combo_give_personalnummer = GUICtrlGetHandle($combo_give_personalnummer)
    $focus_combo_give_hobbywerkzeug = GUICtrlGetHandle($combo_give_hobbywerkzeug)

    $focus_combo_get_name = GUICtrlGetHandle($combo_get_name)
    $focus_combo_get_personalnummer = GUICtrlGetHandle($combo_get_personalnummer)
    $focus_combo_get_hobbywerkzeug = GUICtrlGetHandle($combo_get_hobbywerkzeug)

    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $ilParam
    Case $combo_give_name, $focus_combo_give_name
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_give_name()
    EndSwitch
    Case $combo_give_personalnummer, $focus_combo_give_personalnummer
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_give_personalnummer()
    EndSwitch
    Case $combo_give_hobbywerkzeug, $focus_combo_give_hobbywerkzeug
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_give_hobbywerkzeug()
    EndSwitch

    Case $combo_get_name, $focus_combo_get_name
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_get_name()
    EndSwitch
    Case $combo_get_personalnummer, $focus_combo_get_personalnummer
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_get_personalnummer()
    EndSwitch
    Case $combo_get_hobbywerkzeug, $focus_combo_get_hobbywerkzeug
    Switch $iCode
    Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
    _Edit_Change_get_hobbywerkzeug()
    EndSwitch

    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]


    ich hoffe man kann mir helfen...mfg und danke im voraus :)

  • Ich habe deinen Beitrag nur kurz überflogen da wenig Zeit denke aber dass [ gelöst ] abhängige Comboboxen das Schema erklärt.

    In deinem Skript kann ich keinen Grund finden der das unterschiedliche Verhalten erklären würde, allerdings kann ich ohne die INI nicht testen:

    Code
    D:\Programme\AutoIt3\Test\asdf.au3 (47) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    GUICtrlSetData(-1, $personalnummer[2])
    GUICtrlSetData(-1, ^ ERROR


    Häng sie also bitte deinem Eröffnungsbeitrag an,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (5. Dezember 2012 um 16:49)