Combo Box

  • Hallo & Moin-Moin.

    ICh möchte mit Combo-Boxen arbeiten, bekomme aber es nicht hin.

    So sieht es bis dato aus:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("Musik CD's")

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

    $1 = GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, "CD-1|CD-2|CD-3|CD-4", "CD-1")
    $2 = GUICtrlCreateCombo("", 10, 40)
    GUICtrlSetData(-1, "*.midi|*.mp3|*.wav", "*.mp3")

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $1
    $auswahl = GUICtrlRead($1)
    Switch $auswahl
    Case "CD-1"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3")
    _comboread_cd1()
    Case "CD-2"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.wav", "*.midi")
    _comboread_cd2()
    EndSwitch
    EndSwitch
    WEnd

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

    Func _comboread_cd1()
    $read = GUICtrlRead($2)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read)
    If $read = "*.mp3" Then MsgBox(0, "MP3-Datei", $read)
    EndFunc

    Func _comboread_cd2()
    $read = GUICtrlRead($2)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read)
    If $read = "*.wav" Then MsgBox(0, "WAV-Datei", $read)
    EndFunc

    [/autoit]

    Problem ist, das wenn ich die obere auswähle, gleich die MSgBox erfolgt und nicht erst wenn ich auch unten ausgewählt habe. Also er soll erst wenn ich die CD und die Dateiendung gewählt habe weiter arbeiten (in diesem Fall die dazu passende MsgBox anzeigen).

    Was und wo ist der Fehler?

    Danke schon hier für die Hilfe.
    SuFu & Hilfe wurden genutzt ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    Einmal editiert, zuletzt von Alina (3. Mai 2009 um 20:11)

  • Ich glaube, es liegt daran, dass du nicht auf die Eingabe der zweiten Combo-Box "wartest":

    Er registriert die Änderung der ersten, stellt die zweite um und liest sie sofort aus.

    Hier mein Vorschlag:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("Musik CD's")
    Global $auswahl
    $1 = GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, "CD-1|CD-2|CD-3|CD-4", "CD-1")
    $2 = GUICtrlCreateCombo("", 10, 40)
    GUICtrlSetData(-1, "*.midi|*.mp3|*.wav", "*.mp3")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $1
    $auswahl = GUICtrlRead($1)
    Switch $auswahl
    Case "CD-1"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3")
    Case "SVCD"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.wav", "*.midi")
    EndSwitch
    GUICtrlSetState($2, $GUI_ENABLE)
    Case $2
    Switch $auswahl
    Case "CD-1"
    _comboread_cd1()
    Case "SVCD"
    _comboread_cd2()
    EndSwitch
    WEnd

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

    Func _comboread_cd1()
    $read = GUICtrlRead($2)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read)
    If $read = "*.mp3" Then MsgBox(0, "MP3-Datei", $read)
    EndFunc

    Func _comboread_cd2()
    $read = GUICtrlRead($2)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read)
    If $read = "*.wav" Then MsgBox(0, "WAV-Datei", $read)
    EndFunc

    [/autoit]

    Jetzt konnte ich hoffentlich dir einmal helfen ;)

  • Hi Alina,

    das Problem liegt denke ich mal am GuiCtrlSetData. Da du mit GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3") in Zeile 23 direkt der Box einen Wert setzt.

    Du könntest aber auch das Script auf die Eingabe in der 2ten Box warten lassen und dann deine Funktion aufrufen.

    Edit: Zu spät :P

  • Also nun zeigt er mir bei der Auswahl CD-2
    erst einmal ALLE drei Dateiendungen an und nicht nur die zwei gewünschten.
    Dazu kommt, das nichts passiert, wenn ich dann bei CD-2 z. B. *.midi auswähle.

    mhhhh. Komisch aber auch und für mich nicht verständlich !

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • So vieleicht, wenn ich dein Problem verstehe

    Spoiler anzeigen
    [autoit]

    GUICreate("Musik CD's")

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

    $1 = GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, "CD-1|CD-2|CD-3|CD-4", "CD-1")
    $2 = GUICtrlCreateCombo("", 10, 40)
    GUICtrlSetData(-1, "*.midi|*.mp3|*.wav", "*.mp3")

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    ExitLoop
    Case $1
    $auswahl = GUICtrlRead($1)
    Switch $auswahl
    Case "CD-1"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3")
    Case "CD-2"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.wav", "*.midi")
    EndSwitch
    Case $2
    $auswahl = GUICtrlRead($2)
    MsgBox (0,StringUpper (StringRight ($auswahl,StringLen ($auswahl) - StringInStr($auswahl,".")) & "-Datei"),$auswahl)
    EndSwitch
    WEnd

    [/autoit]

    EDIT:
    BugFix
    was ist ein "PseudoCode" ?

    EDIT2:
    Oder so vieleicht?

    Spoiler anzeigen
    [autoit]

    GUICreate("Musik CD's")

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

    $1 = GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, "||CD-1|CD-2|CD-3|CD-4", "")
    $2 = GUICtrlCreateCombo("", 10, 40)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    ExitLoop
    Case $1
    $auswahl = GUICtrlRead($1)
    Switch $auswahl
    Case "CD-1"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "||*.midi|*.mp3", "")
    Case "CD-2"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "||*.midi|*.wav", "")
    EndSwitch
    Case $2
    $auswahl = GUICtrlRead($2)
    MsgBox (0,StringUpper (StringRight ($auswahl,StringLen ($auswahl) - StringInStr($auswahl,".")) & "-Datei"),$auswahl)
    EndSwitch
    WEnd

    [/autoit]

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (3. Mai 2009 um 20:47)

    • Offizieller Beitrag

    Alina wen ich das richtig verstanden habe, dann sollte das hinhauen:

    Spoiler anzeigen
    [autoit]

    GUICreate("Musik CD's")

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

    #include <GUIConstants.au3>

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

    GUICreate("Musik CD's")
    Global $auswahl
    $1 = GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, "CD-1|CD-2|CD-3|CD-4", "CD-1")
    $2 = GUICtrlCreateCombo("", 10, 40)
    GUICtrlSetData(-1, "*.midi|*.mp3|*.wav", "*.mp3")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $1
    $auswahl = GUICtrlRead($1)
    Switch $auswahl
    Case "CD-1"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3")
    Case "CD-2"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.wav", "*.midi")
    Case "CD-3"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.mp3", "*.mp3")
    Case "CD-4"
    GUICtrlSetData($2, "")
    GUICtrlSetData($2, "*.midi|*.wav", "*.midi")
    EndSwitch
    GUICtrlSetState($2, $GUI_ENABLE)
    Case $2
    Switch GUICtrlRead($1)
    Case "CD-1"
    _comboread_cd1()
    Case "CD-2"
    _comboread_cd2()
    Case "CD-3"
    _comboread_cd1()
    Case "CD-4"
    _comboread_cd2()
    EndSwitch
    EndSwitch
    WEnd

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

    Func _comboread_cd1()
    $read = GUICtrlRead($2)
    $read2 = GUICtrlRead($1)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read2)
    If $read = "*.mp3" Then MsgBox(0, "MP3-Datei", $read2)
    EndFunc

    Func _comboread_cd2()
    $read = GUICtrlRead($2)
    $read2 = GUICtrlRead($1)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read2)
    If $read = "*.wav" Then MsgBox(0, "WAV-Datei", $read2)
    EndFunc

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

    Func _comboread_cd3()
    $read = GUICtrlRead($2)
    $read2 = GUICtrlRead($1)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read2)
    If $read = "*.mp3" Then MsgBox(0, "MP3-Datei", $read2)
    EndFunc

    Func _comboread_cd4()
    $read = GUICtrlRead($2)
    $read2 = GUICtrlRead($1)
    If $read = "*.midi" Then MsgBox(0, "MIDI-Datei", $read2)
    If $read = "*.wav" Then MsgBox(0, "WAV-Datei", $read2)
    EndFunc

    [/autoit]
  • Also Jam00's Script arbeitet schon mal.

    Ich habe insg. 69 CD's mit Musik.
    Ich möchte wenn ich eine CD einlege, z. B. CD-1, das ich dann sagen kann, das diese drinne ist und das ich aus der CD nur die mp3 Dateien sehen und wenn ich diese dann doppelt anklicke , das er diese dann abspielt (was noch ein problem werden sein werd). Aber das sollte ich irgendwie hin bekommen, das das CD-Rom ja immer M: ist.

    Und Raupi 's Script verstehe ich auch ohne "Wenn und Aber". ;)

    Danke für Eure Hilfe.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Also ich habe eine CD an der ich es erkläre.

    CD-1 (1.000 Songs)
    Textdatei (__***all.txt):

    Spoiler anzeigen
    [autoit]


    01.01.2000 00:00 2.000.062 0001 - Yesterday.mp3
    01.01.2000 00:00 2.111.657 0002 - Rock Around The Clock.mp3
    01.01.2000 00:00 6.854.658 0003 - Hey Jude.mp3
    01.01.2000 00:00 4.673.747 0004 - Bridge Over Troubled Water.mp3
    01.01.2000 00:00 4.548.359 0005 - My Heart Will Go On.mp3
    01.01.2000 00:00 4.377.832 0006 - I Will Always Love You.mp3
    01.01.2000 00:00 7.748.673 0007 - Stairway To Heaven.mp3
    01.01.2000 00:00 2.951.755 0008 - Imagine.mp3
    01.01.2000 00:00 5.744.141 0009 - Bohemian Rhapsody.mp3
    01.01.2000 00:00 3.617.101 0010 - Satisfaction.mp3
    01.01.2000 00:00 2.955.517 0011 - White Christmas.mp3

    [/autoit]

    *hinten auch MIDI-Dateien.

    Ich möchte mit dem Combo das wenn ich CD-1 auswähle, er mir diese auflistet und wenn ich eine doppelt anklicke, er sie mir startet, wobei ich sagen möchte ob ich MIDI oder MP3 hören möchte.
    "0001 - Yesterday.mp3" ist das erste Lied, wobei "0001 - " nur bei zwei CD's fortlaufende ist (noch), was ich aber bereits angefangen habe zu ändern.
    Auf jeder CD sind meistens unterschiedliche Mengen an Dateien drauf, aber alle haben eine Textdatei die wie oben aufgebaut ist. Datum und größe wollte ich eigentlich mal von Hand löschen, aber bin ich noch nicht zu gekommen. Also sollte es auch nicht stören.

    So, nun hoffe ich, das ich mich verständlich ausgedrückt habe. Eigentlich wollte ich das mal als Datenbank machen, aber von DB habe ich gar keine Ahnung und bei cirka 50.000 Songs sollte ich vorsichtig sein, wie ich das mache.

    __***all.txt = *** muß ich aus Sicherheitsgründen entfernen. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr