Hilfe bezüglich ListBox

  • Hallo,

    bin grad am schreiben an einem Programm für meine Arbeit. Das Programm ist dafür da Druckbilder (Dateien für Laserarbeiten) zu überwachen, wenn diese aufgerufen werden soll ein Fenster kommen, wo man eine Chargennummer eingeben soll. Momentan bin ich bei der ListBox und dazu meine Frage. Ich habe ja schon den Style für eine Mehrfachselektierung angegeben. Ich habe auch schon einen Button "Alle Entfernen", dann sind alle Druckbilder weg. Aber nun möcht ich auch den User die Funktion bereit stellen, Einträge zu markieren, die er löschen will. Z.B. Eintrag 3 anklicken -> Eintrag 6 anklicken -> Eintrag 7 anklicken -> Button "Entfernen" drücken.
    Ich hoffe ihr versteh was ich meine. Kann mir jemand dabei helfen???

    Code:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $aButton[5], $setError

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

    If Not FileExists("C:\Chargennummer\Settings.ini") Then
    DirCreate("C:\Chargennummer")
    $FileIni = FileOpen("C:\Chargennummer\Settings.ini", 1)
    FileWrite($FileIni, "[Data]" & @CRLF & "counter=0" & @CRLF & @CRLF & "[Files]")
    FileClose($FileIni)
    $FileTxt = FileOpen("C:\Chargennummer\Chargennummer.txt", 1)
    FileWrite($FileTxt, "")
    FileClose($FileTxt)
    EndIf

    $IniData = IniReadSection("C:\Chargennummer\Settings.ini", "Data")
    $IniFiles = IniReadSection("C:\Chargennummer\Settings.ini", "Files")

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

    Opt("TrayMenuMode",1)
    TraySetToolTip("Chargennummer")
    $setitem = TrayCreateItem("Einstellungen")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("Info")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")
    TrayItemSetState($setitem, $TRAY_DEFAULT)
    TraySetClick(8)
    $gui = GUICreate("Einstellungen", 260, 335, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_MINIMIZEBOX))
    GUICtrlCreateGroup("aktuelle Chargennummer", 10, 10, 240, 49)
    GUICtrlCreateLabel("3001234567", 40, 31)
    $aButton[0] = GUICtrlCreateButton("Ändern", 152, 25, 80, 25)
    GUICtrlCreateGroup("Druckbilder", 10, 70, 240, 216)
    GUICtrlCreateLabel("Druckbilder:", 25, 90)
    $List = GUICtrlCreateList("", 25, 110, 110, 140, BitOR($WS_VSCROLL, $LBS_SORT, $LBS_NOTIFY, $LVS_SHOWSELALWAYS))
    ;~ Test
    ;~ GUICtrlSetData(-1, "83054850_01.vlf")
    ;~ GUICtrlSetData(-1, "8305480_01.vlf")
    ;~ GUICtrlSetData(-1, "8305450_01.vlf")
    ;~ GUICtrlSetData(-1, "8305850_01.vlf")
    ;~ GUICtrlSetData(-1, "8304850_01.vlf")
    ;~ GUICtrlSetData(-1, "8354850_01.vlf")
    ;~ GUICtrlSetData(-1, "8054850_01.vlf")
    ;~ GUICtrlSetData(-1, "3054850_01.vlf")
    ;~ GUICtrlSetData(-1, "8305485001.vlf")
    ;~ GUICtrlSetData(-1, "unten453454.vlf")
    GUICtrlCreateLabel("aktuelles Druckbild:", 25, 260)
    GUICtrlCreateLabel("83054850_02.vlf", 130, 260)
    $aButton[1] = GUICtrlCreateButton("Hinzufügen", 152, 130, 80, 25)
    $aButton[2] = GUICtrlCreateButton("Entfernen", 152, 165, 80, 25)
    $aButton[3] = GUICtrlCreateButton("Alle Entfernen", 152, 200, 80, 25)
    $aButton[4] = GUICtrlCreateButton("Schliessen", 90, 299, 80, 25, $BS_DEFPUSHBUTTON)
    If $IniData[1][1] <> 0 Then
    For $j = 1 To $IniData[1][1]
    GUICtrlSetData($List, $IniFiles[$j][1])
    Next
    EndIf

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

    GUISetState(@SW_HIDE)
    While True

    $traymsg = TrayGetMsg()

    Switch $traymsg
    Case $setitem
    GUISetState(@SW_SHOW, $gui)
    Case $aboutitem
    MsgBox(64, "Info", 'Das Programm "Chargennummer" dient' & @LF & "dazu, in Druckbildern Chargennummern" & @LF & "ändern zu können." & @LF & @LF & "Copyright © 2009 by Mathias Obetzhauser")
    Case $exititem
    Exit
    EndSwitch


    $guimsg = GUIGetMsg()
    $IniData = IniReadSection("C:\Chargennummer\Settings.ini", "Data")
    $IniFiles = IniReadSection("C:\Chargennummer\Settings.ini", "Files")

    Switch $guimsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $gui)
    Case $aButton[4]
    GUISetState(@SW_HIDE, $gui)
    Case $aButton[1]
    $setError = False
    GUISetState(@SW_DISABLE, $gui)
    $path = FileOpenDialog("Wählen Sie ein Druckbild aus!", "C:\Windows\", "Druckbilder (*.vlf)", 1)
    $path = StringReplace($path, "C:\Daten\", "")
    GUISetState(@SW_RESTORE, $gui)
    If $IniData[1][1] <> 0 Then
    For $i = 1 To $IniData[1][1]
    If $IniFiles[$i][1] = $path Then
    MsgBox(0, "Info", "Druckbild " & $IniFiles[$i][1] & " schon vorhanden!")
    $setError = True
    ExitLoop
    Else
    $setError = False
    EndIf
    Next
    EndIf

    GUISetState(@SW_ENABLE, $gui)
    GUISetState(@SW_RESTORE, $gui)
    If $setError = False Then
    GUICtrlSetData($List, $path)
    $IniData[1][1] = $IniData[1][1] + 1
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", $IniData[1][1])
    IniWrite("C:\Chargennummer\Settings.ini", "Files", "file" & $IniData[1][1], $path)
    EndIf
    Case $aButton[3]
    If $IniData[1][1] <> 0 Then
    For $i = 1 To $IniData[1][1]
    IniDelete("C:\Chargennummer\Settings.ini", "Files", "file" & $i)
    Next
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", "0")
    GUICtrlSetData($List, "")
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • hi,

    vor einiger Zeit hatte ich so etwas auch gesucht. Dabei bin ich hier im Forum auf das gestoßen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>

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

    ;Globals für die Funktion:

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

    $MainGui = GUICreate("DBClick test", 516, 295, 192, 120)
    GUISetBkColor(0x0)

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

    $ListView = GUICtrlCreateListView("Produkt Name", 8, 8, 498, 214,$LVS_LIST);Das ListView mit $LVS_LIST...
    $TestItem = GUICtrlCreateListViewItem("TEST1", $ListView);Test 1
    $TestItem = GUICtrlCreateListViewItem("TEST2", $ListView);Test 2
    $settoebay = GUICtrlCreateButton("&Verkaufen", 8, 232, 355, 25, 0)
    $selfbuy = GUICtrlCreateButton("Selbst &Bieten", 8, 264, 115, 25, 0)
    $moreinfos = GUICtrlCreateButton("Weitere &Informationen", 128, 264, 115, 25, 0)
    $exitbut = GUICtrlCreateButton("E&xit", 248, 264, 115, 25, 0)
    $Pic = GUICtrlCreatePic(@WindowsDir & "\winnt.bmp", 368, 232, 138, 52, BitOR($SS_NOTIFY, $WS_GROUP))
    GUISetState(@SW_SHOW)
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $exitbut
    Exit
    EndSwitch
    WEnd

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

    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $ListView Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    MsgBox(0, "",GUICtrlRead(GUICtrlRead($ListView)))
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    vielleicht hilft es ja weiter.

    MFG
    ThomasB

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • ne leider nicht, aber trotzdem danke.

    Ich hab noch was: In Zeile 85, $BS_DEFPUSHBUTTON funktioniert nicht, ich kann das Fenster mit "Enter" nicht schliessen (bzw. hide machen).

    • Offizieller Beitrag

    Hab mal dein Script überflogen in Zeile 63 sollte

    [autoit]

    GUISetState(@SW_SHOW)

    [/autoit]


    stehen damit man die Gui überhaupt erst mal sieht .
    In Zeile 20 und 21

    [autoit]

    $IniData = IniReadSection("C:\Chargennummer\Settings.ini", "Data")
    $IniFiles = IniReadSection("C:\Chargennummer\Settings.ini", "Files")

    [/autoit]


    das rufst du in Zeile 79 und 80 nochmal auf, einmal reicht vollkommen .

  • zum 1.
    man soll sie ja am Anfang garnicht sehen, dafür hab ich im Tray "Einstellungen".

    zum 2.
    wenn ich Zeile 79 und 80 rauskommentiere, meckert er.

    Code
    If $IniFiles[$i][1] = $path Then
    If ^ ERROR
    • Offizieller Beitrag

    Also wenn ich Zeile 79 und 80 auskommentiere mecker er gar nicht. Ich würde dir vorschlagen statt einem GuiCtrlCreateList ein GuiCtrlCreateListBox zu nehmen. Da kannst du mit der UDF einiges mehr machen .

  • wenn ich das Script starte und ein bisschen was mache, dann merkert er.

    • Offizieller Beitrag

    Hab hier mal was gebastelt, probier es mal aus .

    Spoiler anzeigen
    [autoit]

    TrayItemSetState($setitem, $TRAY_DEFAULT)
    TraySetClick(8)
    $gui = GUICreate("Einstellungen", 260, 335, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_MINIMIZEBOX))
    GUICtrlCreateGroup("aktuelle Chargennummer", 10, 10, 240, 49)
    GUICtrlCreateLabel("3001234567", 40, 31)
    $aButton[0] = GUICtrlCreateButton("Ändern", 152, 25, 80, 25)
    GUICtrlCreateGroup("Druckbilder", 10, 70, 240, 216)
    GUICtrlCreateLabel("Druckbilder:", 25, 90)
    $List = GUICtrlCreateList("", 25, 110, 110, 140, BitOR($WS_VSCROLL, $LBS_NOTIFY, $LVS_SHOWSELALWAYS))
    GUICtrlCreateLabel("aktuelles Druckbild:", 25, 260)
    GUICtrlCreateLabel("83054850_02.vlf", 130, 260)
    $aButton[1] = GUICtrlCreateButton("Hinzufügen", 152, 130, 80, 25)
    $aButton[2] = GUICtrlCreateButton("Entfernen", 152, 165, 80, 25)
    $aButton[3] = GUICtrlCreateButton("Alle Entfernen", 152, 200, 80, 25)
    $aButton[4] = GUICtrlCreateButton("Schliessen", 90, 299, 80, 25, $BS_DEFPUSHBUTTON)
    _InitialList()
    GUISetState(@SW_HIDE)
    While True

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

    $traymsg = TrayGetMsg()

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

    Switch $traymsg
    Case $setitem
    GUISetState(@SW_SHOW, $gui)
    Case $aboutitem
    MsgBox(64, "Info", 'Das Programm "Chargennummer" dient' & @LF & "dazu, in Druckbildern Chargennummern" & @LF & "ändern zu können." & @LF & @LF & "Copyright © 2009 by Mathias Obetzhauser")
    Case $exititem
    Exit
    EndSwitch

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

    $guimsg = GUIGetMsg()

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

    Switch $guimsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $gui)
    Case $aButton[4]
    GUISetState(@SW_HIDE, $gui)
    Case $aButton[1]; Hinzufügen
    $setError = False
    GUISetState(@SW_DISABLE, $gui)
    $path = FileOpenDialog("Wählen Sie ein Druckbild aus!", "C:\Daten\", "Druckbilder (*.au3)", 1)
    If $path <> "" Then
    $path = StringReplace($path, "C:\Daten\", "")
    GUISetState(@SW_RESTORE, $gui)
    If $Counter <> 0 Then
    For $i = 1 To $Counter
    If $IniFiles[$i][1] = $path Then
    MsgBox(0, "Info", "Druckbild " & $IniFiles[$i][1] & " schon vorhanden!")
    $setError = True
    ExitLoop
    Else
    $setError = False
    EndIf
    Next
    EndIf
    Else
    $setError = True
    EndIf
    GUISetState(@SW_ENABLE, $gui)
    GUISetState(@SW_RESTORE, $gui)
    If $setError = False Then
    GUICtrlSetData($List, $path)
    $Counter = $Counter + 1
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", $Counter)
    IniWrite("C:\Chargennummer\Settings.ini", "Files", "file" & $Counter, $path)
    ReindexFiles()
    DataRead()
    EndIf
    Case $aButton[2]
    For $i = 0 To $Counter - 1
    If _GUICtrlListBox_GetSel($List, $i) Then
    IniDelete("C:\Chargennummer\Settings.ini", "Files", "file" & $i + 1)
    EndIf
    Next
    $IniFiles = IniReadSection("C:\Chargennummer\Settings.ini", "Files")
    If IsArray($IniFiles) then
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", $IniFiles[0][0])
    $Counter = IniRead("C:\Chargennummer\Settings.ini", "Data","counter",0)
    Else
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", 0)
    Endif
    ReindexFiles()
    _InitialList()
    Case $aButton[3]
    If $Counter <> 0 Then
    For $i = 1 To $Counter
    IniDelete("C:\Chargennummer\Settings.ini", "Files", "file" & $i)
    Next
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "counter", "0")
    DataRead()
    _InitialList()
    EndIf
    EndSwitch
    WEnd

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

    Func _InitialList();Listboxdaten neu setzen
    GUICtrlSetData($List, "")
    If $Counter <> 0 Then
    For $j = 1 To $Counter
    GUICtrlSetData($List, $IniFiles[$j][1])
    Next
    EndIf
    EndFunc ;==>_InitialList

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

    Func ReindexFiles(); Index der Filees Selection neu schreiben
    Local $aTemp, $aTemp2[1]
    $aTemp = IniReadSection("C:\Chargennummer\Settings.ini", "Files")
    if not IsArray($aTemp) Then
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "Counter", 0)
    DataRead()
    Return
    endif
    If $aTemp[0][0] > 0 Then
    $aTemp2[0] = $aTemp[0][0]
    For $i = 1 To $aTemp[0][0]
    _ArrayAdd($aTemp2, $aTemp[$i][1])
    Next
    IniDelete("C:\Chargennummer\Settings.ini", "Files")
    For $i = 1 To $aTemp2[0]
    IniWrite("C:\Chargennummer\Settings.ini", "Files", "File" & $i, $aTemp2[$i])
    Next
    IniWrite("C:\Chargennummer\Settings.ini", "Data", "Counter", $aTemp2[0])
    EndIf
    DataRead()
    EndFunc ;==>ReindexFiles

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

    Func DataRead(); Ini auslesen
    $Counter = IniRead("C:\Chargennummer\Settings.ini", "Data","counter",0)
    $IniFiles = IniReadSection("C:\Chargennummer\Settings.ini", "Files")
    EndFunc ;==>DataRead

    [/autoit]

    Du kannst jetzt die selektierten Einträge löschen , habe einige Fehler im Bezug auf die Array´s ausgemerzt . Wenn du Einträge löschst oder hinzufügst dann wird das Index der Files Selection neu erstellt. Wenn beim Hinzufügen der Dialog abgebrochen wird, dann wird kein Eintrag mehr in die INI geschrieben. Habe aus der Listbox den Style zum Alphabetischen sortieren entfernt. Das solltest du auch so lassen sonst werden die Einträge nicht richtig gelöscht, weil die Anzeigereihenfolge der List nicht der Reihenfolge der INI entspricht.Wenn du das umbeding in Alphabetischer Reihenfolge haben willst , dann mußt du dir selbst was dazuprogen. Ich hab auch das 2 Dimensionale Array $IniData durch eine "normale" Variable ersetzt, man muß ja nicht mit Kanonen auf Spatzen schießen .

  • hab erst jetzt deinen Post gelesen Raupi, danke schön erstmal für die Mühe.
    Ich habe bis jetzt auch noch an meinem Script weitergemacht, weil noch einige Funktionen fehlten.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $aButton[7], $setError, $IniSection[2], $IniKey[2][1], $Start, $aLabel[3], $Old

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

    $IniPath = "C:\Chargennummer\Settings.ini"
    $IniSection[0] = "Data"
    $IniSection[1] = "Files"
    $IniKey[0][0] = "counter"
    $IniKey[1][0] = "file"

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

    If Not FileExists($IniPath) Then
    DirCreate("C:\Chargennummer")
    $FileIni = FileOpen($IniPath, 1)
    FileWrite($FileIni, "[Data]" & @CRLF & "counter=0" & @CRLF & @CRLF & "[Files]")
    FileClose($FileIni)
    $FileTxt = FileOpen("C:\Chargennummer\Chargennummer.txt", 1)
    FileWrite($FileTxt, "")
    FileClose($FileTxt)
    EndIf

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

    ;------------------ Tray ------------------
    Opt("TrayMenuMode",1)
    TraySetToolTip("Chargennummer")
    $setitem = TrayCreateItem("Einstellungen")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("Info")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")
    TrayItemSetState($setitem, $TRAY_DEFAULT)
    TraySetClick(8)

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

    ;------------ Einstellungen-GUI ------------
    $settgui = GUICreate("Einstellungen", 260, 335, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_MINIMIZEBOX))
    GUICtrlCreateGroup("aktuelle Chargennummer", 10, 10, 240, 49)
    $aLabel[0] = GUICtrlCreateLabel("3001234567", 40, 31)
    $aButton[0] = GUICtrlCreateButton("Ändern", 152, 25, 80, 25)
    GUICtrlCreateGroup("Druckbilder", 10, 70, 240, 216)
    GUICtrlCreateLabel("folgende Druckbilder werden überwacht:", 25, 90)
    $List = GUICtrlCreateList("", 25, 110, 110, 140, BitOR($WS_VSCROLL, $LBS_SORT, $LBS_NOTIFY, $LVS_SHOWSELALWAYS))
    ;~ Test
    ;~ GUICtrlSetData(-1, "83054850_01.vlf")
    ;~ GUICtrlSetData(-1, "8305480_01.vlf")
    ;~ GUICtrlSetData(-1, "8305450_01.vlf")
    ;~ GUICtrlSetData(-1, "8305850_01.vlf")
    ;~ GUICtrlSetData(-1, "8304850_01.vlf")
    ;~ GUICtrlSetData(-1, "8354850_01.vlf")
    ;~ GUICtrlSetData(-1, "8054850_01.vlf")
    ;~ GUICtrlSetData(-1, "3054850_01.vlf")
    ;~ GUICtrlSetData(-1, "8305485001.vlf")
    ;~ GUICtrlSetData(-1, "unten453454.vlf")
    GUICtrlCreateLabel("aktuelles Druckbild:", 25, 260)
    $aLabel[1] = GUICtrlCreateLabel("83054850_02.vlf", 130, 260)
    $aButton[1] = GUICtrlCreateButton("Hinzufügen", 152, 130, 80, 25)
    $aButton[2] = GUICtrlCreateButton("Entfernen", 152, 165, 80, 25)
    $aButton[3] = GUICtrlCreateButton("Alle Entfernen", 152, 200, 80, 25)
    $aButton[4] = GUICtrlCreateButton("Schliessen", 90, 299, 80, 25, $BS_DEFPUSHBUTTON)
    GUISetState(@SW_HIDE, $settgui)

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

    ;-------- Eingabe Chargennummer-GUI --------
    $chargeinputgui = GUICreate("Eingabe der Chargennummer", 250, 135, -1, -1, BitOR($DS_MODALFRAME, $WS_EX_TOPMOST))
    $aLabel[2] = GUICtrlCreateLabel("Bitte geben Sie eine Chargennummer ein!", 10, 10)
    GUICtrlCreateInput("30012345673001234567", 10, 35, 80)
    $aButton[5] = GUICtrlCreateButton("OK", 30, 68, 80, 25, $BS_DEFPUSHBUTTON)
    $aButton[6] = GUICtrlCreateButton("Abbrechen", 134, 68, 80, 25)
    ;~ WinSetOnTop("Eingabe der Chargennummer", "", 1)
    GUISetState(@SW_HIDE, $chargeinputgui)

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

    While True

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

    $IniData = IniReadSection($IniPath, $IniSection[0])
    $IniFiles = IniReadSection($IniPath, $IniSection[1])

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

    If $IniData[1][1] <> 0 And Not $Start Then
    For $j = 1 To $IniData[1][1]
    GUICtrlSetData($List, $IniFiles[$j][1])
    Next
    MsgBox(0, "Info", "INI-Datei initialisiert")
    $Start = True
    EndIf

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

    $traymsg = TrayGetMsg()

    Switch $traymsg
    Case $setitem
    GUISetState(@SW_SHOW, $settgui)
    Case $aboutitem
    MsgBox(64, "Info", 'Das Programm "Chargennummer" dient' & @LF & "dazu, in Druckbildern Chargennummern" & @LF & "ändern zu können." & @LF & @LF & "Copyright © 2009 by Mathias Obetzhauser")
    Case $exititem
    Exit
    EndSwitch

    $guimsg = GUIGetMsg()

    Switch $guimsg
    Case $GUI_EVENT_CLOSE, $aButton[4]
    GUISetState(@SW_HIDE, $settgui)
    Case $aButton[1]
    $setError = False
    GUISetState(@SW_DISABLE, $settgui)
    $path = FileOpenDialog("Wählen Sie ein Druckbild aus!", "C:\Daten\", "Druckbilder (*.vlf)", 1)
    $path = StringReplace($path, "C:\Daten\", "")
    GUISetState(@SW_RESTORE, $settgui)
    GUISetState(@SW_ENABLE, $settgui)
    If $IniData[1][1] <> 0 And $path <> "" Then
    For $i = 1 To $IniData[1][1]
    If $IniFiles[$i][1] = $path Then
    MsgBox(0, "Info", "Druckbild " & $IniFiles[$i][1] & " schon vorhanden!")
    $setError = True
    ExitLoop
    Else
    $setError = False
    EndIf
    Next
    EndIf

    If $setError = False And $path <> "" Then
    GUICtrlSetData($List, $path)
    $IniData[1][1] = $IniData[1][1] + 1
    IniWrite($IniPath, $IniSection[0], $IniKey[0][0], $IniData[1][1])
    IniWrite($IniPath, $IniSection[1], $IniKey[1][0] & $IniData[1][1], $path)
    EndIf
    Case $aButton[3]
    If $IniData[1][1] <> 0 Then
    For $i = 1 To $IniData[1][1]
    IniDelete($IniPath, $IniSection[1], $IniKey[1][0] & $i)
    Next
    IniWrite($IniPath, $IniSection[0], $IniKey[0][0], "0")
    GUICtrlSetData($List, "")
    EndIf
    Case $aButton[6]
    MsgBox(48, "Hinweis", "Es wird keine Chargennummer verwendet!" & @LF & @LF & "Wenn Sie dennoch eine Chargennummer verwenden wollen, können Sie diese in den Einstellunegn angeben.")
    GUISetState(@SW_HIDE, $chargeinputgui)
    EndSwitch

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

    WEnd

    [/autoit]

    Werd mir auch mal dein Script reinziehen.
    Kannst du bitte den Code posten was vor dem "TrayItemSetState($setitem, $TRAY_DEFAULT)" kommt.
    Das mit den Arrays muss ich zugeben, ist echt viel.

    Einmal editiert, zuletzt von m-obi (14. Januar 2009 um 01:02)

    • Offizieller Beitrag

    Is doch kein Akt, kannst ja die neuen Funktionen einpflegen. Schau mal in mein Script, an die Stellen wo ich isArray verwendet habe. Da kahmen immer die Arrayfehler.Wenn bei IniReadSektion die Files Section ausgelesen wurde und die Section leer ist dann wird kein Array zurückgegeben . Da ich mich auch gerade mit LIst beschäftige , ist dein Script für mich ne gute Übung. Die ReindexFiles Function hab ich so ähnlich auch in meinen Scripten laufen, es gibt nicht über eine fortlaufende Nummerierung. Wenn du weiter Hilfe brauchst , gib bescheid .Kannst mir auch ne PN schicken .