Nach hinzufügen eines Link geht ein Button nicht mehr

  • Hallo com,

    Habe einen button, wenn man auf diesen klickt kommt ein neuer GUI und dort gibt man einen Link an.
    Dann auf bestätigen und der GUI verschwindet wieder.

    Das Problem ist nur, wenn ich einen Link hinzugefügt habe, funktioniert der Abbrechen Button nicht mehr. Nur ich weis nicht wieso

    HIer der Code:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <file.au3>

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

    GUICreate("Suchmaschinen Optimierer - Link Verwaltung", 600, 400)
    GUISetBkColor(0xd19b07)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUICtrlCreateLabel("Link Verwaltung", 210, 5, 200, 35)
    GUICtrlSetFont(-1, 18, 400, 0, "Comic Sans MS")
    Global $list = GUICtrlCreateList("", 10, 40, 580, 250)
    GUICtrlSetFont(-1, 14, 400, 0, "Arial")
    $save = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 25, 340, 250, 50)
    $save2 = GUICtrlCreateLabel("Speichern", 90, 350, 120, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $insert = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 25, 285, 250, 50)
    $insert2 = GUICtrlCreateLabel("Link hinzufügen", 55, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $delete = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 325, 285, 250, 50)
    $delete2 = GUICtrlCreateLabel("Link entfernen", 360, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $cancel = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 325, 340, 250, 50)
    $cancel2 = GUICtrlCreateLabel("Abbrechen", 385, 350, 125, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    Dim $aRecords
    _FileReadToArray(@ScriptDir &"\data\links.txt",$aRecords)
    If $aRecords <> "" Then
    For $x = 1 to $aRecords[0]
    GUICtrlSetData($list, $aRecords[$x])
    Next
    EndIf

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

    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $cancel, $cancel2
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $delete, $delete2
    If GUICtrlRead($list) <> "" Then
    $realy_delete = MsgBox(260, "Suchmashinen Optimierer - Link Verwaltung", 'Möchten Sie den Link: "' & GUICtrlRead($list) & '" wirklich aus der Liste entfernen?')
    If $realy_delete = 6 Then
    _ArrayDeleteInhalt($aRecords, GUICtrlRead($list))
    EndIf
    Else
    MsgBox(0, "Suchmashinen Optimierer - Link Verwaltung", "Fehler - Bitte wählen Sie einen Link in der oberigen Liste aus.")
    EndIf
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 to UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    Case $save, $save2
    FileDelete(@ScriptDir &"\data\links.txt")
    FileWrite(@ScriptDir &"\data\links.txt", "")
    If $aRecords <> "" Then
    For $y = 1 to UBound($aRecords) - 1
    FileWriteLine(@ScriptDir &"\data\links.txt", $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $insert, $insert2
    insert_new()
    EndSwitch
    WEnd

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

    Func insert_new()
    GUICreate("Suchmashienen Optimierer - Link hinzufügen", 400, 200)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xd19b07)
    GUICtrlCreateLabel("Bitte geben Sie den neuen Link an.", 50, 20, 300, 35)
    GUICtrlCreateLabel("Link:", 15,60, 50, 20)
    $url = GUICtrlCreateInput("", 80, 57, 250, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "")
    $ok = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 25, 100, 165, 50)
    $ok2 = GUICtrlCreateLabel("Bestätigen", 40, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $cancel = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 210, 100, 165, 50)
    $cancel2 = GUICtrlCreateLabel("Abbrechen", 230, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $ok, $ok2
    _ArrayAdd($aRecords, GUICtrlRead($url))
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 to UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc

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

    Func _ArrayDeleteInhalt(ByRef $array, $inhalt)
    For $i = Ubound($array) - 1 to 0 Step -1
    if $array[$i] = $inhalt then _ArrayDelete($array, $i)
    Next
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von ophiel (15. November 2010 um 17:20)

  • Habs zwar nicht getestet was genau passiert, aber:

    Die zweite GUI überschreibt die Variable cancel und cancel2, somit sind diese auch nicht mehr mit den Objekten der ersten GUI verknüpft. Es passiert also nichts weil die Buttons auf deren Aktion du in deiner ersten while Schleife wartest garnicht mehr existieren bzw auf die zweite nun unsichtbare GUI verweisen.

    Du solltest also unterschiedliche Variablen Namen in beiden GUI's verwenden.

  • Hallo ophiel,

    wie misterspeed schon bemerkte überschreibst du in der 2. GUI ein Teil der ControlIDs der 1. GUI. Üblicherweise sollte man im MSG-Loop Modus auch GuiGetMsg im advanced Modus verwenden sobald man mit mehreren GUIs arbeitet. Hier das darauf angepasste Skript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <file.au3>

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

    $MainGUI = GUICreate("Suchmaschinen Optimierer - Link Verwaltung", 600, 400)
    GUISetBkColor(0xd19b07)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUICtrlCreateLabel("Link Verwaltung", 210, 5, 200, 35)
    GUICtrlSetFont(-1, 18, 400, 0, "Comic Sans MS")
    Global $list = GUICtrlCreateList("", 10, 40, 580, 250)
    GUICtrlSetFont(-1, 14, 400, 0, "Arial")
    $save = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 340, 250, 50)
    $save2 = GUICtrlCreateLabel("Speichern", 90, 350, 120, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $insert = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 285, 250, 50)
    $insert2 = GUICtrlCreateLabel("Link hinzufügen", 55, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $delete = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 285, 250, 50)
    $delete2 = GUICtrlCreateLabel("Link entfernen", 360, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $cancel = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 340, 250, 50)
    $cancel2 = GUICtrlCreateLabel("Abbrechen", 385, 350, 125, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    Global $aRecords[1]
    _FileReadToArray(@ScriptDir & "\data\links.txt", $aRecords)
    If $aRecords <> "" Then
    For $x = 1 To $aRecords[0]
    GUICtrlSetData($list, $aRecords[$x])
    Next
    EndIf

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

    GUISetState(@SW_SHOW)
    $LinkGUI = GUICreate("Suchmashienen Optimierer - Link hinzufügen", 400, 200)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xd19b07)
    GUICtrlCreateLabel("Bitte geben Sie den neuen Link an.", 50, 20, 300, 35)
    GUICtrlCreateLabel("Link:", 15, 60, 50, 20)
    $url = GUICtrlCreateInput("", 80, 57, 250, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "")
    $LNKok = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 100, 165, 50)
    $LNKok2 = GUICtrlCreateLabel("Bestätigen", 40, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $LNKcancel = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 210, 100, 165, 50)
    $LNKcancel2 = GUICtrlCreateLabel("Abbrechen", 230, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $MainGUI
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $cancel, $cancel2
    ExitLoop
    Case $delete, $delete2
    If GUICtrlRead($list) <> "" Then
    $realy_delete = MsgBox(260, "Suchmashinen Optimierer - Link Verwaltung", 'Möchten Sie den Link: "' & GUICtrlRead($list) & '" wirklich aus der Liste entfernen?')
    If $realy_delete = 6 Then
    _ArrayDeleteInhalt($aRecords, GUICtrlRead($list))
    EndIf
    Else
    MsgBox(0, "Suchmashinen Optimierer - Link Verwaltung", "Fehler - Bitte wählen Sie einen Link in der oberigen Liste aus.")
    EndIf
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    Case $save, $save2
    FileDelete(@ScriptDir & "\data\links.txt")
    FileWrite(@ScriptDir & "\data\links.txt", "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    FileWriteLine(@ScriptDir & "\data\links.txt", $aRecords[$y])
    Next
    EndIf
    ExitLoop
    Case $insert, $insert2
    GUISetState(@SW_HIDE,$MainGUI)
    GUISetState(@SW_SHOW,$LinkGUI)
    EndSwitch
    Case $LinkGUI
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $LNKcancel, $LNKcancel2
    GUISetState(@SW_HIDE,$LinkGUI)
    GUISetState(@SW_SHOW,$MainGUI)
    Case $LNKok, $LNKok2
    _ArrayAdd($aRecords, GUICtrlRead($url))
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE,$LinkGUI)
    GUISetState(@SW_SHOW,$MainGUI)
    EndSwitch
    EndSwitch
    WEnd

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

    Func _ArrayDeleteInhalt(ByRef $array, $inhalt)
    For $i = UBound($array) - 1 To 0 Step -1
    If $array[$i] = $inhalt Then _ArrayDelete($array, $i)
    Next
    EndFunc ;==>_ArrayDeleteInhalt

    [/autoit]

    Edit: wenn du deine Methode verwendest (also nur die Namen eindeutig machst) solltest du auch die "LINKGUI" DELETEn anstatt zu HIDEn, da sie ja bei jedem Aufruf neuerzeugt wird. Auch die Deklaration von $aRecords solltest du auf $aRecords[1] abändern, da ansonsten das hinzufügen eines Links nicht klappt, wenn die Datei links.txt noch keine Einträge enthält und dadurch $aResult kein Array darstellt,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (14. November 2010 um 22:42)

  • Hi,

    ich schließe mich misterspeed an.

    Du solltest also unterschiedliche Variablen Namen in beiden GUI's verwenden.


    Statt die Namen zu ändern, kannst du auch einfach die Variable als Local deklarieren.

    [autoit]


    Func insert_new()
    ;schnipp
    Local $cancel = GUICtrlCreatePic(@ScriptDir &"\sdk\bk_button.jpg", 210, 100, 165, 50)
    Local $cancel2 = GUICtrlCreateLabel("Abbrechen", 230, 110, 135, 45)
    ;schnapp
    EndFunc

    [/autoit]

    überhaupt würde ich die komplette 1. GUI in eine Funktion packen, dort werden die Variablen automatisch als Local deklariert. Vergiss nicht $aRecords an insert_new() zu übergeben, da $aRecords in der Funktion ebenfalls Local deklariert wird ;)
    Kannst zwar mit

    [autoit]

    Global $aRecords

    [/autoit]


    wieder Global machen, find ich aber unschön :D

  • ... jezt will es irgend wie garnicht mehr -.-'

    hab es so umgeschrieben wie AutoBert gesagt hat, aber es will nicht.

    Zudem funktioniert jezt das hinzufügen der Links garnicht mehr *_*

    Ich weiß nicht weiter, kann mir wer helfen ?(

    Hier der gesammte Code:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=C:\Users\PC\Desktop\Logo Test\2\Etarus.ico
    #AutoIt3Wrapper_Res_Description=Suchmaschinen Optimierer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright by Etarus
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $list
    Global $aRecords
    Global $cancel1, $cancel2, $cancel3, $cancel4

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

    $main = GUICreate("Suchmaschinen Optimierer - Startseite", 600, 420)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    $datei = GUICtrlCreateMenu("Datei")
    $start3 = GUICtrlCreateMenuItem("Start", $datei)
    $exit3 = GUICtrlCreateMenuItem("Schließen", $datei)
    $verwaltung = GUICtrlCreateMenu("Verwaltung")
    $verwaltung_links = GUICtrlCreateMenuItem("Link verwaltung", $verwaltung)
    $info = GUICtrlCreateMenu("Info")
    $helpfile = GUICtrlCreateMenuItem("Hilfe", $info)
    GUICtrlCreatePic(@ScriptDir & "\sdk\bk_main.jpg", 0, 0, 600, 400)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $start = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 120, 260, 150, 50)
    $exit = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 330, 260, 150, 50)
    $start2 = GUICtrlCreateLabel("Start", 145, 260, 100, 40)
    GUICtrlSetFont(-1, 28, 400, 0, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $exit2 = GUICtrlCreateLabel("Beenden", 335, 260, 140, 40)
    GUICtrlSetFont(-1, 28, 400, 0, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel("Gebrauchsanweisung:", 180, 15, 250, 35)
    GUICtrlSetFont(-1, 20, 400, 4, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel('Um einen neuen Link hinzuzufügen, wählen Sie unter "Verwaltung" den Menüpunkt "Link Verwaltung" aus. Nun wird ihnen ein neues Fenster gezeigt, in dem Sie ihre Links bequem verwalten können.', 10, 55, 580, 100)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    GUISetState(@SW_SHOW)

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

    $verwaltung_gui = GUICreate("Suchmaschinen Optimierer - Link Verwaltung", 600, 400)
    GUISetBkColor(0xd19b07)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUICtrlCreateLabel("Link Verwaltung", 210, 5, 200, 35)
    GUICtrlSetFont(-1, 18, 400, 0, "Comic Sans MS")
    $list = GUICtrlCreateList("", 10, 40, 580, 250)
    GUICtrlSetFont(-1, 14, 400, 0, "Arial")
    $save = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 340, 250, 50)
    $save2 = GUICtrlCreateLabel("Speichern", 90, 350, 120, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $insert = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 285, 250, 50)
    $insert2 = GUICtrlCreateLabel("Link hinzufügen", 55, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $delete = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 285, 250, 50)
    $delete2 = GUICtrlCreateLabel("Link entfernen", 360, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $cancel1 = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 340, 250, 50)
    $cancel2 = GUICtrlCreateLabel("Abbrechen", 385, 350, 125, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    GUISetState(@SW_HIDE)

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

    $insert_gui = GUICreate("Suchmashienen Optimierer - Link hinzufügen", 400, 200)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xd19b07)
    GUICtrlCreateLabel("Bitte geben Sie den neuen Link an.", 50, 20, 300, 35)
    GUICtrlCreateLabel("Link:", 15, 60, 50, 20)
    $url = GUICtrlCreateInput("", 80, 57, 250, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "")
    $ok = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 100, 165, 50)
    $ok2 = GUICtrlCreateLabel("Bestätigen", 40, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $cancel3 = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 210, 100, 165, 50)
    $cancel4 = GUICtrlCreateLabel("Abbrechen", 230, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $main
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $exit, $exit2, $exit3
    Exit
    Case $start, $start2, $start3
    MsgBox(0, "Test", "TestText")
    Case $verwaltung_links
    GUISetState(@SW_SHOW, $verwaltung_gui)
    EndSwitch
    Case $insert_gui
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $cancel3, $cancel4
    GUISetState(@SW_HIDE)
    Case $ok, $ok2
    _ArrayAdd($aRecords, GUICtrlRead($url))
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE)
    EndSwitch
    Case $verwaltung_gui
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $cancel1, $cancel2
    GUISetState(@SW_HIDE)
    Case $delete, $delete2
    If GUICtrlRead($list) <> "" Then
    $realy_delete = MsgBox(260, "Suchmashinen Optimierer - Link Verwaltung", 'Möchten Sie den Link: "' & GUICtrlRead($list) & '" wirklich aus der Liste entfernen?')
    If $realy_delete = 6 Then
    _ArrayDeleteInhalt($aRecords, GUICtrlRead($list))
    EndIf
    Else
    MsgBox(0, "Suchmashinen Optimierer - Link Verwaltung", "Fehler - Bitte wählen Sie einen Link in der oberigen Liste aus.")
    EndIf
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    Case $save, $save2
    FileDelete(@ScriptDir & "\data\links.txt")
    FileWrite(@ScriptDir & "\data\links.txt", "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    FileWriteLine(@ScriptDir & "\data\links.txt", $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE)
    Case $insert, $insert2
    GUISetState(@SW_SHOW, $insert_gui)
    EndSwitch
    EndSwitch
    WEnd

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

    Func _ArrayDeleteInhalt(ByRef $array, $inhalt)
    For $i = UBound($array) - 1 To 0 Step -1
    If $array[$i] = $inhalt Then _ArrayDelete($array, $i)
    Next
    EndFunc ;==>_ArrayDeleteInhalt

    [/autoit]
  • Hallo ophiel,

    hier die überarbeitete Version:

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=C:\Users\PC\Desktop\Logo Test\2\Etarus.ico
    #AutoIt3Wrapper_Res_Description=Suchmaschinen Optimierer
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright by Etarus
    #AutoIt3Wrapper_Res_Language=1031
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $list
    Global $aRecords[1] ;<==================== muss ein Array sein

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

    $frmMain = GUICreate("Suchmaschinen Optimierer - Startseite", 600, 420)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    $mnuFile = GUICtrlCreateMenu("Datei")
    $mnuStart = GUICtrlCreateMenuItem("Start", $mnuFile)
    $mnuExit = GUICtrlCreateMenuItem("Schließen", $mnuFile)
    $mnuVw = GUICtrlCreateMenu("Verwaltung")
    $mnuVw_links = GUICtrlCreateMenuItem("Link verwaltung", $mnuVw)
    $mnuInfo = GUICtrlCreateMenu("Info")
    $mnuHelp = GUICtrlCreateMenuItem("Hilfe", $mnuInfo)
    GUICtrlCreatePic(@ScriptDir & "\sdk\bk_main.jpg", 0, 0, 600, 400)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $picStartMain = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 120, 260, 150, 50)
    $picStartMain = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 330, 260, 150, 50)
    $lblStartMain = GUICtrlCreateLabel("Start", 145, 260, 100, 40)
    GUICtrlSetFont(-1, 28, 400, 0, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $lblExitMain = GUICtrlCreateLabel("Beenden", 335, 260, 140, 40)
    GUICtrlSetFont(-1, 28, 400, 0, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel("Gebrauchsanweisung:", 180, 15, 250, 35)
    GUICtrlSetFont(-1, 20, 400, 4, "MV Boli")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlCreateLabel('Um einen neuen Link hinzuzufügen, wählen Sie unter "Verwaltung" den Menüpunkt "Link Verwaltung" aus. Nun wird ihnen ein neues Fenster gezeigt, in dem Sie ihre Links bequem verwalten können.', 10, 55, 580, 100)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    GUISetState(@SW_SHOW)

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

    $frmVw = GUICreate("Suchmaschinen Optimierer - Link Verwaltung", 600, 400)
    GUISetBkColor(0xd19b07)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUICtrlCreateLabel("Link Verwaltung", 210, 5, 200, 35)
    GUICtrlSetFont(-1, 18, 400, 0, "Comic Sans MS")
    $list = GUICtrlCreateList("", 10, 40, 580, 250)
    GUICtrlSetFont(-1, 14, 400, 0, "Arial")
    $picSaveVw = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 340, 250, 50)
    $lblSaveVw = GUICtrlCreateLabel("Speichern", 90, 350, 120, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $picInsertVw = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 285, 250, 50)
    $lblInsertVw = GUICtrlCreateLabel("Link hinzufügen", 55, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $picDeleteVw = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 285, 250, 50)
    $lblDeleteVw = GUICtrlCreateLabel("Link entfernen", 360, 295, 200, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $picCancelVw = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 325, 340, 250, 50)
    $lblCancelVw = GUICtrlCreateLabel("Abbrechen", 385, 350, 125, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    _Read_LinksFile() ;<===================
    GUISetState(@SW_HIDE)

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

    $frmIns = GUICreate("Suchmashienen Optimierer - Link hinzufügen", 400, 200)
    GUISetFont(14, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xd19b07)
    GUICtrlCreateLabel("Bitte geben Sie den neuen Link an.", 50, 20, 300, 35)
    GUICtrlCreateLabel("Link:", 15, 60, 50, 20)
    $inpUrl = GUICtrlCreateInput("", 80, 57, 250, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "")
    $picOkIns = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 25, 100, 165, 50)
    $lblOkIns = GUICtrlCreateLabel("Bestätigen", 40, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")
    $picCancelIns = GUICtrlCreatePic(@ScriptDir & "\sdk\bk_button.jpg", 210, 100, 165, 50)
    $lblCancelIns = GUICtrlCreateLabel("Abbrechen", 230, 110, 135, 45)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 20, 400, 0, "MV Boli")

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

    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $frmMain
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $picStartMain, $lblExitMain, $mnuExit
    Exit
    Case $picStartMain, $lblStartMain, $mnuStart
    MsgBox(0, "Test", "TestText")
    Case $mnuVw_links
    _Read_LinksFile() ;<=============== wäre meine Erachtens nach sinnvoll
    GUISetState(@SW_SHOW, $frmVw)
    EndSwitch
    Case $frmVw
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $picCancelVw, $lblCancelVw
    GUISetState(@SW_HIDE, $frmVw) ;<==================
    Case $picDeleteVw, $lblDeleteVw
    If GUICtrlRead($list) <> "" Then
    $realy_delete = MsgBox(260, "Suchmashinen Optimierer - Link Verwaltung", 'Möchten Sie den Link: "' & GUICtrlRead($list) & '" wirklich aus der Liste entfernen?')
    If $realy_delete = 6 Then
    _ArrayDeleteInhalt($aRecords, GUICtrlRead($list))
    EndIf
    Else
    MsgBox(0, "Suchmashinen Optimierer - Link Verwaltung", "Fehler - Bitte wählen Sie einen Link in der oberigen Liste aus.")
    EndIf
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    Case $picSaveVw, $lblSaveVw
    FileDelete(@ScriptDir & "\data\links.txt")
    FileWrite(@ScriptDir & "\data\links.txt", "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    FileWriteLine(@ScriptDir & "\data\links.txt", $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE, $frmVw)
    Case $picInsertVw, $lblInsertVw
    GUISetState(@SW_SHOW, $frmIns)
    EndSwitch
    Case $frmIns
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE, $picCancelIns, $lblCancelIns
    GUISetState(@SW_HIDE, $frmIns) ;<============
    Case $picOkIns, $lblOkIns
    _ArrayAdd($aRecords, GUICtrlRead($inpUrl))
    GUICtrlSetData($list, "")
    If $aRecords <> "" Then
    For $y = 1 To UBound($aRecords) - 1
    GUICtrlSetData($list, $aRecords[$y])
    Next
    EndIf
    GUISetState(@SW_HIDE, $frmIns)
    EndSwitch
    EndSwitch
    WEnd

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

    Func _Read_LinksFile();<==================================
    _FileReadToArray(@ScriptDir & "\data\links.txt", $aRecords)
    If $aRecords <> "" Then
    For $x = 1 To $aRecords[0]
    GUICtrlSetData($list, $aRecords[$x])
    Next
    EndIf
    EndFunc ;==>_Read_LinksFile

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

    Func _ArrayDeleteInhalt(ByRef $array, $inhalt)
    For $i = UBound($array) - 1 To 0 Step -1
    If $array[$i] = $inhalt Then _ArrayDelete($array, $i)
    Next
    EndFunc ;==>_ArrayDeleteInhalt

    [/autoit]

    die wichtigsten Änderungen sind mit ;<========== gekennzeichnet, desweiteren habe ich den Variablen in einer SearchAndReplace-Session mir angenehmere Namen gegeben,

    PS.: kannst du bitte die Bilder zu den PIC-Controls einstellen
    mfg autoBert

  • Hi

    • $aRecords
      Bevor du _ArrayAdd benutzt, musst du vorher schauen, ob $aRecords auch ein Array ist, wenn nicht dann ein Array erzeugen.
    • FileWrite

      Zitat

      Remarks
      The file must be opened in write mode or the FileWrite command will fail.


      Also vorher ein FileOpen durchführen, schau dir nochmal die Hilfe dazu an!

    • GUISetState(@SW_SHOW)
      Ich würde VOR jedem @SW_SHOW zur entsprechenden GUI wechseln.
      (Dann brauchst du auch nicht den 2. Parameter bei SetState angeben.)
      Z.B. Du öffnest die Insert Gui:
      [autoit]GUISwitch($insert_gui)
      GUISetState(@SW_SHOW)[/autoit]
    • GUISetState(@SW_HIDE)
      Ich würde NACH jedem @SW_HIDE zur vorherigen GUI wechseln.
      Z.B. Du schließt die Verwaltungs Gui:
      [autoit]GUISetState(@SW_HIDE)
      GUISwitch($main)[/autoit]

    Korrigier erstmal das, dann sehen wir weiter ;)

    [Edit]
    Zu langsam.... :(

  • Noch ein Fehler ...
    Wenn in der Link Lister nur ein Link ist und man diesen entfernt, dann speichert und wieder die verwaltung neu öffnet, kommt eine fehlermeldung

    ich weiß nur nicht wie ich diese beheben kann

    Meldung:

    Code
    G:\USB\AutoIT skripte\Vasco Shop Prg\Suchmaschinen Optimierer\sfaw.au3 (154) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    GUICtrlSetData($list, $aRecords[$x])
    GUICtrlSetData($list, ^ ERROR
    ->15:41:15 AutoIT3.exe ended.rc:1


    PS: hab den Abbrechen button der verwaltung gelöscht brauche den doch nciht (daher 4 zeilen weniger)

  • Hallo Ophiel,

    tausche Func _Read_LinksFile gegen diese:

    [autoit]

    Func _Read_LinksFile()
    _FileReadToArray(@ScriptDir & "\data\links.txt", $aRecords) ;<==================================0
    If IsArray($aRecords) Then
    ;_ArrayDisplay($aRecords)
    If $aRecords[0] > 1 Then
    For $x = 1 To $aRecords[0]
    GUICtrlSetData($list, $aRecords[$x])
    Next
    EndIf
    EndIf
    EndFunc ;==>_Read_LinksFile

    [/autoit]

    PS.: mit den Bildern sieht es richtig gut aus,

    Edit: mit dem Abbrechen-Button gefällt mir die Optik besser

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (15. November 2010 um 16:06)