parent child und buttons im array -- quelltext vereinfachen

  • hi leute...

    mein problem ist das ich ca. 15 buttons in meinem gui habe und alle in einem array gespeichert sind. da ich auch parent child gui nutze ist die abfrage für gui aktivietäten auch in einem array.
    mein problem ist das ich nochmal 30 button dazu tuhen möchte und da wird mir der quelltext zu viel.

    Spoiler anzeigen
    [autoit]


    While 1
    $msg = GUIGetMsg(1)
    Select

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

    Case $msg[0] = $verk1[0]
    If $labelname[0] <> "" Then
    $tmppfad = IniRead(@scriptdir & "\verk\verk_pfade.ini", "Verknüpfung 1", $labelname[0] , "default" )
    Run($tmppfad)
    Else
    MsgBox(48, "Nicht definiert", "Keine Verknüpfung hinterlegt!")
    EndIf

    Case $msg[0] = $verk1[1]
    If $labelname[1] <> "" Then
    $tmppfad = IniRead(@scriptdir & "\verk\verk_pfade.ini", "Verknüpfung 2", $labelname[1] , "default" )
    Run($tmppfad)
    Else
    MsgBox(48, "Nicht definiert", "Keine Verknüpfung hinterlegt!")
    EndIf

    Case $msg[0] = $verk1[2]
    If $labelname[2] <> "" Then
    $tmppfad = IniRead(@scriptdir & "\verk\verk_pfade.ini", "Verknüpfung 3", $labelname[2] , "default" )
    Run($tmppfad)
    Else
    MsgBox(48, "Nicht definiert", "Keine Verknüpfung hinterlegt!")
    EndIf
    ; .... usw.

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

    Case $msg[0] = $neu
    _verkvergleich()

    Case $msg[0] = $formatieren
    _formatieren()

    Case $msg[0] = $info
    $gui_info = GUICreate ( "Infos" , 400 , 400 , 10 , 10 )
    _info()
    GUISetState(@SW_SHOW, $gui_info)

    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $gui_main
    ExitLoop

    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $gui_info
    GUIDelete($gui_info)

    Case $msg[0] = $combo
    $select = GUICtrlRead($combo)
    Switch $select
    Case "Spiele"
    IniWrite (@scriptdir & "\verk\verk_ober.ini", "Oberflaeche", "ober" , $select)
    _progreboot()

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

    Case "Applikationen"
    IniWrite (@scriptdir & "\verk\verk_ober.ini", "Oberflaeche", "ober" , $select)
    _progreboot()
    EndSwitch

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

    EndSelect
    WEnd

    Exit

    [/autoit]

    so wie vereinfache ich das? am liebsten wäre mir das mit einer schleife die 15 mal durch läuft und überprüft welcher button und denn button dann in eine variable klatscht... bzw. ist es möglich nicht das komplette array anzusprechen und danach mit if oder select auszu selectieren welcher button es war + aktionen ausführen?
    ich hab schon soviel hin und her probiert mit isarray und if und switch im select und do until und ich rasst bald aus ;( wer mir dabei hilft hat nen dicken stein bei mir im brett

    Einmal editiert, zuletzt von permanenT (22. Februar 2008 um 19:07)

    • Offizieller Beitrag

    Hier hast Du: :)

    [autoit]


    While 1
    $msg = GUIGetMsg(1)
    For $i = 0 To 14 ; Anzahl der Buttons
    If $msg[0] = $verk1[$i] Then
    If $labelname[$i] <> "" Then
    $tmppfad = IniRead(@scriptdir & "\verk\verk_pfade.ini", "Verknüpfung " & $i, $labelname[$i] , "default" )
    Run($tmppfad)
    Else
    MsgBox(48, "Nicht definiert", "Keine Verknüpfung hinterlegt!")
    EndIf
    EndIf
    Next
    ;restliche Events
    WEnd

    [/autoit]
  • Jup, wollt ich auch grad machen :P
    Nur fangen seine Verknüpfungen in der ini bei 1 an seine Buttons aber mit 0 :)
    Daher dann statt

    [autoit]

    "Verknüpfung " & $i
    das:
    "Verknüpfung " & ($i+1)

    [/autoit]