1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. misterspeed

Beiträge von misterspeed

  • Random alles andere als Random?

    • misterspeed
    • 28. Januar 2012 um 17:25

    Heute ist bei mir irgendwie Tag der seltsamen Bugs...

    Da ich seither zwischen meinen Teil Programmen der Einfachheit halber nur per Textdateien kommuniziert habe und das nun endlich mal ändern möchte habe ich mich mal näher damit beschäftigt per Stdin/Stdout zu kommunizieren. Soweit so gut, funktioniert soweit ich das beurteilen kann auch alles. Dabei ist mir jedoch aufgefallen, dass alle unabgängig voneinander laufenden Prozesse exakt die gleichen random Werte produzieren. Hier mal die beiden Testscripte:


    Main.au3:

    Spoiler anzeigen
    [autoit]


    #include <Constants.au3>
    #include <array.au3>
    Global $thread[4]
    Global $line[4]

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

    $thread[1] = Run(@ScriptDir & "\stdout3.exe 1","",@SW_HIDE,$STDIN_CHILD + $STDOUT_CHILD)
    $thread[2] = Run(@ScriptDir & "\stdout3.exe 2","",@SW_HIDE,$STDIN_CHILD + $STDOUT_CHILD)
    $thread[3] = Run(@ScriptDir & "\stdout3.exe 3","",@SW_HIDE,$STDIN_CHILD + $STDOUT_CHILD)
    ;_ArrayDisplay($thread)

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

    ;MsgBox(0,"","wait a sec")
    Sleep(500)
    For $i=1 to 3
    $line[$i] = StdoutRead($thread[$i])
    if StringInStr($line[$i],"thread started") Then
    ConsoleWrite($line[$i])
    StdinWrite($thread[$i],"start work")
    EndIf
    Next

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

    ;~ ConsoleWrite(@CRLF & "------------ WAITING SOME TIME ------------" & @CRLF & @CRLF)
    ;~ Sleep(15000)

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

    $done=0
    do
    for $i = 1 to 3
    if $line[$i]=-1 then ContinueLoop
    $line[$i] = StdoutRead($thread[$i])
    if $line[$i] <> "" Then ConsoleWrite($line[$i])
    if StringInStr($line[$i],"work done") Then
    $done += 1
    $line[$i]=-1
    EndIf
    Next
    Until $done=3

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

    ;MsgBox(0,"","worker scheint fertig zu sein...")
    For $i = 1 to 3
    StdinWrite($thread[$i],"exit")
    $line[$i]=""
    Next

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

    $done = 0
    do
    For $i = 1 to 3
    if $line[$i]=-1 then ContinueLoop
    $line[$i] = StdoutRead($thread[$i])
    if $line[$i] <> "" Then ConsoleWrite($line[$i])
    if StringInStr($line[$i],"exited by master") Then
    $done += 1
    $line[$i]=-1
    EndIf
    Next
    Until $done =3
    ;MsgBox(0,"","thread ist nun beendet")

    [/autoit]

    Stdout3.au3 (muss kompiliert werden)

    Spoiler anzeigen
    [autoit]


    $threadident = $cmdline[1]

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

    ConsoleWrite("thread started " & $threadident & @CRLF)

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

    do
    Sleep(100)
    until StringInStr(ConsoleRead(),"start work")

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

    worktodo()
    ConsoleWrite("work done " & $threadident & @CRLF)

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

    do
    Sleep(100)
    until StringInStr(ConsoleRead(),"exit")

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

    ;MsgBox(0,"aus dem thread","thread wurde vom master beendet")
    ConsoleWrite("exited by master " & $threadident & @CRLF)
    Sleep(1000)
    Exit

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

    Func worktodo()
    Local $ergebnis=0
    for $i=1 to 10
    Sleep(1000)
    $ergebnis += $i* $ergebnis + random(1000,9999,1)
    ;$ergebnis += $i* $ergebnis + _random()
    consolewrite("I am working (" & $ergebnis & ")! " & $threadident & @CRLF)
    Next
    EndFunc

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

    func _random()
    Local $random = 1
    $random = Random($threadident,$threadident*2000,1)
    Return $random
    EndFunc

    [/autoit]

    Benutzt man die von mir modifizierte Random Funktion, welche den eindeutigen Threadidentifier verwendet ergeben sich wirkliche random Werte, benutzt man nur die normale random Funktion erhält man dieses consolen output der main.au3:

    Spoiler anzeigen
    Code
    thread started 1
    thread started 2
    thread started 3
    I am working (9501)! 2
    I am working (9501)! 3
    I am working (9501)! 1
    I am working (32535)! 2
    I am working (32535)! 1
    I am working (32535)! 3
    I am working (134756)! 2
    I am working (134756)! 1
    I am working (134756)! 3
    I am working (677221)! 2
    I am working (677221)! 3
    I am working (677221)! 1
    I am working (4065423)! 2
    I am working (4065423)! 3
    I am working (4065423)! 1
    I am working (28465907)! 2
    I am working (28465907)! 3
    I am working (28465907)! 1
    I am working (227732611)! 2
    I am working (227732611)! 3
    I am working (227732611)! 1
    I am working (2049597721)! 2
    I am working (2049597721)! 3
    I am working (2049597721)! 1
    I am working (20495980982)! 2
    I am working (20495980982)! 3
    I am working (20495980982)! 1
    I am working (225455799039)! 2
    work done 2
    I am working (225455799039)! 3
    work done 3
    I am working (225455799039)! 1
    work done 1
    exited by master 2
    exited by master 3
    exited by master 1
    Alles anzeigen

    Auch hier die Frage an euch wie sowas sein kann...

  • Was geht da schief?

    • misterspeed
    • 28. Januar 2012 um 14:40

    Kann mir mal jemand erklären warum ich hier eine fehlerhafte consolen ausgabe bekomme? Hat das etwa etwas mit der internen Umwandlung zwischen Float und Integer zu tun?

    [autoit]

    $start = TimerInit()
    $counter=0
    do
    Sleep(100)
    $counter+=0.1
    ConsoleWrite($counter & @CRLF)
    Until TimerDiff($start)>20000

    [/autoit]


    Code
    ;... bis hier passt alles
    4.9
    5
    5.1
    5.2
    5.3
    5.4
    5.5
    5.6
    5.7
    5.8
    5.9
    5.99999999999999
    6.09999999999999
    6.19999999999999
    6.29999999999999
    6.39999999999999
    6.49999999999999
    6.59999999999999
    6.69999999999999
    6.79999999999999
    6.89999999999999
    6.99999999999999
    7.09999999999999
    7.19999999999999
    7.29999999999999
    7.39999999999999
    7.49999999999999
    7.59999999999999
    7.69999999999999
    7.79999999999999
    7.89999999999999
    7.99999999999999
    8.09999999999999
    8.19999999999999
    8.29999999999999
    8.39999999999999
    8.49999999999999
    8.59999999999999
    8.69999999999999
    8.79999999999998
    8.89999999999998
    8.99999999999998
    9.09999999999998
    9.19999999999998
    9.29999999999998
    9.39999999999998
    9.49999999999998
    9.59999999999998
    9.69999999999998
    9.79999999999998
    9.89999999999998
    9.99999999999998
    10.1
    ;... ab hier passts wieder
    Alles anzeigen
  • Mehrere GUIs -> Bei einem Script geht es und bei einem anderen nicht...

    • misterspeed
    • 28. Januar 2012 um 13:54

    Da dein script oben funktioniert wäre es vielleicht sinnvoller von dir gewesen eines zu posten das nicht funktioniert. Davon ab solltest du vielleicht mal in die Hilfe schauen und dir den advanced Mode von guigetmsg ansehen, darüber erhältst du dann nämlich auch Informationen von welchem Fenster das Event stammt. Ich vermute aber, dass dein Problem eher mit doppelt verwendeten Variablennamen oder aber mit weiteren Schleifen / langsamen Funktionen zu tun hat, welche die GUI blockieren. Dazu müsstest du aber mal dein echtes Script mit dem Problem posten.

    Was deine Funktionen unten angeht, diese sind syntaktisch falsch. Im Funktionskopf darf keine Variable verwendet werden:


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

    while 1
    ;...
    case $button1
    funktionsname()
    ;...
    wend

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

    Func funktionsname()
    ; richtig
    endfunc

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

    func $variablenname()
    ; falsch
    endfunc

    [/autoit]
  • Autoit 32-Bit kompilierte Exe(n) Probleme auf x64 System

    • misterspeed
    • 20. Januar 2012 um 17:54

    Würde da den Fehler mal eher beim Virenscanner vermuten. UPX und Autoit wird oft fälschlicherweise erkannt oder als verdächtig betrachtet. Evtl läuft da die Heuristik deiner Antivirensoftware amok.

  • Werte der Variablen "verschwunden"??

    • misterspeed
    • 14. Januar 2012 um 14:53

    Naja was erwartest du was da nun passiert? Deine Formel / Rechnung erfolgt ja bereits ganz am Anfang, noch bevor überhaupt Werte gesetzt wurden.

    [autoit]


    $mp_Label = GUICtrlCreateLabel ("Mindestpunktgröße:" & $fs_wert*2+$mw_wert , 15, 120) ; fs_wert und mw_wert sind nur deklariert, haben also eine 0 als Wert
    $fs_wert = GUICtrlRead($fs_Slider) ; schön nun hast du eine 0 gespeichert, weil dein slieder noch keinen Wert hat
    $mw_wert = GUICtrlRead($mw_Slider) ; same here

    [/autoit]


    Pack das ganze in eine Funktion:

    [autoit]


    ;Gui:
    $mp_Label = GUICtrlCreateLabel ("Mindestpunktgröße:", 15, 120)

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

    while
    case $blabla ; hier eben in jeden case einbauen der die werte Veränderung registriert
    rechnung()
    wend

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

    ;nach deiner while Schleife:

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

    func rechnung()
    $fs_wert = GUICtrlRead($fs_Slider)
    $mw_wert = GUICtrlRead($mw_Slider)
    $ergebnis=$fs_wert*2+$mw_wert
    guictrlsetdata($mp_label,"Mindestpunktgröße: " & $ergebnis)
    endfunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Uhr aktualisierung | Nach bestimmtem Txt in der Editbox suchen und diesen entfernen?

    • misterspeed
    • 13. Januar 2012 um 21:25

    Was deinen zweiten Wunsch angeht:

    Benutz einfach einen Timeserver. Diesen kann man mit Windows Boardmitteln auch über autoit einstellen. Getestet wurde das Script nur unter WinXP 32bit, sollte aber auf allen gängigen Windowsversionen so funktionieren. Solltest du auch wünschen, dass der gesetzte Timeserver im Dropdown des dafür gedachten Windowsdialogs erscheint müssen noch 2 Registry Keys mit regwrite() gesetzt bzw geändert werden, Details dazu kannst du auf der auskommentierten Webseite nachlesen. Die Zeitaktualisierung kann im übrigen einige Sekunden/Minuten dauern.

    [autoit]


    Func setTimeServer($timeserver)
    ; HKLM_Software\Microsoft\Windows\CurrentVersion\DateTime\Servers
    ; http://www.unterwegs-im.net/content/view/49/8/

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

    RunWait(@ComSpec & " /c " & "NET TIME /setsntp:" & $timeserver,"",@SW_HIDE)
    Run(@ComSpec & " /c " & "w32tm /config /update","",@SW_HIDE)
    Run(@ComSpec & " /c " & "w32tm /resync /nowait","",@SW_HIDE)
    EndFunc

    [/autoit]
  • Automatisierung Shortcuts herausfinden?

    • misterspeed
    • 2. Januar 2012 um 21:08

    Einfach im Notepad die ALT Taste drücken, dann siehst du welche Buchstaben als Shortcut unterstrichen sind und kannst dir dann den korrekten Text für WinMenuSelectItem selbst basteln:

    [autoit]

    WinMenuSelectItem("[CLASS:Notepad]","","&Datei","Seite ein&richten...")

    [/autoit]
  • XML-Datei auslesen

    • misterspeed
    • 2. Januar 2012 um 20:21
    [autoit]


    #include <string.au3>
    _stringbetween(...siehe Hilfe...)

    [/autoit]
  • Batch datei in Autoit Skript implementieren

    • misterspeed
    • 29. Dezember 2011 um 15:09

    Warum einfach wenns auch kompliziert geht. Ernsthaft? Eine Batch Datei erstellen nur um 7zip aufzurufen und die batch danach wieder zu löschen?
    _rundos ist ebenso unnötig, wenn auch vllt etwas bequemer in der Anwendung.

    [autoit]


    InetGet ("http://www.xyz.de/xyz.zip" , "abc.zip")
    run('"' & @scriptdir & '\7za.exe" e "' & @scriptdir & '\abc.zip"')

    [/autoit]
  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 20:25

    So hier eine hoffentlich fehlerfreie Variante:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=Lagerverwaltungstool.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Fileversion=1.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ------------------------------------
    |
    Author: Ghostleader |
    Script: Version 1.1.0 |
    |
    Script Functionen: |
    - Lagerverwaltungstool = Version_1.1.0 |
    - Bankschließfach = Version_1.1.0 |
    |
    Copyright by Ghostleader @ Areneas |
    #ce ------------------------------------
    #region INCLUDES
    ;------------------------------------------------------------------------------------------
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion INCLUDES
    #region GLOBAL
    ;------------------------------------------------------------------------------------------
    Global $aschliesfach[17][4]
    Global $aLager[13][3]
    Global $userSelection=-1 ; noch wurde garnichts gewählt, programmstart
    Global $DataINI = 'data.ini'
    #endregion GLOBAL
    ;------------------------------------------------------------------------------------------
    #region GUI
    $Form1 = GUICreate("Form1", 940, 550, 192, 5, $WS_BORDER & $WS_POPUP)
    ;GUISetState()
    $Backround = GUICtrlCreatePic("bilder\lager.tgx", 0, 0, 940, 550)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $rightLabel = GUICtrlCreateLabel("Copyright By Ghostleader @ Areneas", 650, 500, 300, 25)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion GUI
    ;------------------------------------------------------------------------------------------
    #region Group´s
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $FrontLagerBank = GUICtrlCreateGroup("", 360, 180, 280, 195)
    $GroupCombo = GUICtrlCreateGroup("", 28, 6, 276, 36)
    $GroupSpeichern = GUICtrlCreateGroup("", 336, 6, 276, 36)
    $Exit = GUICtrlCreateGroup("", 646, 6, 276, 36)
    $LagerLabelGroup = GUICtrlCreateGroup("", 330, 135, 282, 45)
    $LagerGroup = GUICtrlCreateGroup("", 200, 62, 590, 45)
    $LagerSpalte1 = GUICtrlCreateGroup("", 70, 195, 190, 290)
    $LagerSpalte2 = GUICtrlCreateGroup("", 345, 195, 190, 290)
    $LagerSpalte3 = GUICtrlCreateGroup("", 615, 195, 190, 290)
    $BankRahmen1 = GUICtrlCreateGroup("", 30, 112, 190, 370)
    $BankRahmen2 = GUICtrlCreateGroup("", 270, 112, 190, 370)
    $BankRahmen3 = GUICtrlCreateGroup("", 500, 112, 190, 370)
    $BankRahmen4 = GUICtrlCreateGroup("", 730, 112, 190, 370)
    #endregion Group´s
    ;------------------------------------------------------------------------------------------
    #region Button´s
    $Lager1Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager2Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager3Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $SchliessfachSpeichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $AccLoschen = GUICtrlCreateButton("Acc Löschen", 490, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachOben = GUICtrlCreateButton("Bankschließfach", 660, 16, 110, 22)
    $ButtonExit = GUICtrlCreateButton("Exit", 800, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachLoschen = GUICtrlCreateButton("Schliesfach Löschen", 490, 16, 110, 22)
    $LagerOben = GUICtrlCreateButton("Lagerverwaltung", 660, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $LagerFront = GUICtrlCreateButton("Lagerverwaltung", 375, 200, 250, 40)
    $SchliessfachFront = GUICtrlCreateButton("Bankschließfach", 375, 260, 250, 40)
    $Schliessen = GUICtrlCreateButton("Programm Schliessen", 375, 320, 250, 40)
    ;------------------------------------------------------------------------------------------
    $Lager1 = GUICtrlCreateButton("LAGER 1", 210, 75, 170, 25)
    $Lager2 = GUICtrlCreateButton("LAGER 2", 410, 75, 170, 25)
    $Lager3 = GUICtrlCreateButton("LAGER 3", 610, 75, 170, 25)
    #endregion Button´s
    ;------------------------------------------------------------------------------------------
    #region Combo´s
    $ComboUser = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; ein combo reicht völlig
    _setCombo($ComboUser,1) ; NEU: erledigt alles, returned nichts :P, Parameter 1 bedeutet gui initialisierung, wert 1 der ini wird ausgewählt
    #endregion Combo´s
    ;------------------------------------------------------------------------------------------
    #region Label´s
    $LagerLabel1 = GUICtrlCreateLabel("", 340, 150, 100, 25)
    GUICtrlSetFont(-1, 15, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Label4 = GUICtrlCreateLabel("Account", 42, 17, 80, 19)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Label´s
    ;---------------------------------------------------------------------------------------------
    #region Input´s
    $inputLager = GUICtrlCreateInput("", 430, 150, 170, 21)
    #endregion Input´s
    ;---------------------------------------------------------------------------------------------
    #region HIDE
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($ButtonExit, $GUI_HIDE)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_HIDE)
    GUICtrlSetState($inputLager, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    #endregion HIDE
    #region Generat´s
    _generateControls($aLager,"Lager")
    _generateControls($aschliesfach,"Schliessfach")
    #endregion Generat´s

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

    ;---------------------------------------------------------------------------------------------

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

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $SchliessfachFront, $SchliessfachOben
    $userSelection = 0
    _ButtonSchliessfach()
    Case $LagerFront, $LagerOben, $Lager1
    $userSelection = 1
    _ButtonLager1()
    Case $Lager2
    $userSelection = 2
    _ButtonLager2()
    Case $Lager3
    $userSelection = 3
    _ButtonLager3()
    Case $ButtonExit, $Schliessen
    Exit
    Case $ComboUser ; umbenannt
    _clearGUI()
    if $userSelection = 0 Then _LoadData($aschliesfach,"Schliessfach",$userSelection)
    if $userSelection > 0 Then _LoadData($aLager,"Lager",$userSelection)
    Case $Lager1Speichern
    _SaveData($aLager,"Lager",1) ; neu
    Case $Lager2Speichern
    _SaveData($aLager,"Lager",2) ; neu
    Case $Lager3Speichern
    _SaveData($aLager,"Lager",3) ; neu
    Case $SchliessfachSpeichern
    _SaveData($aschliesfach,"Schliessfach",0) ; neu
    Case $AccLoschen
    _deleteAccount()
    Case $SchliessfachLoschen
    _deleteSchliessfach()
    EndSwitch
    WEnd
    ;_--------------------------------------------------------------------------------------------
    Func _ButtonSchliessfach()
    ; neu: alle Lager inputs unsichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Schliessfach inputs sichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerOben, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_HIDE)
    GUICtrlSetState($inputLager, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($BankRahmen1, $GUI_SHOW)
    GUICtrlSetState($BankRahmen2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen3, $GUI_SHOW)
    GUICtrlSetState($BankRahmen4, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aschliesfach,"Schliessfach",0) ; felder neu befüllen
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager1()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 1")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",1) ; felder neu befüllen
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager2()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 2")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",2) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _ButtonLager3()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 3")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_SHOW)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",3) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------

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

    Func _generateControls(ByRef $ArrayToUse,$mode)
    #cs
    Neue Funktion die die generate Funktionen für Lager und Schliessfach ersetzt und alle control ids in 2-Dimensionalen Arrays speichert
    Könnte weiter optimiert werden, da es kaum unterschiede zwischen beiden Modes gibt, wir belassen es jetzt erstmal so...
    #ce

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

    if $mode = "Lager" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 then $left=1
    if $s=1 then $left=275
    if $s=2 then $left=545
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    if $mode = "Schliessfach" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 Then $left=40
    if $s=1 Then $left=280
    if $s=2 Then $left=510
    if $s=3 Then $left=740
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $Fach = GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht, ausserdem überschreibst du die variable, somit label später nicht mehr änderbar
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",5+$left,130+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    EndFunc

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

    ;------------------------------------------------------------------------------------------
    #region Load Lagerverwaltung
    Func _LoadData(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode="Lager" Then
    $key=$mode & $lagernummer
    GUICtrlSetData($inputLager,IniRead($DataINI,GUICtrlRead($ComboUser),$key & "Ort",""))
    EndIf
    if $mode="Schliessfach" Then $key=$mode

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

    $value=IniRead($DataINI,GUICtrlRead($ComboUser),$key,"")
    $aTemp=StringSplit($value,"|") ; erstellt array mit den einzelwerten aus dem string im ini key-value

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

    if (UBound($aTemp)-1)/UBound($ArrayToUse,2) <> UBound($ArrayToUse)-1 Then Return ;MsgBox(0,"Fehler","ini Datei inkompatibel") ; verlässt die Funktion, weil zuviele oder zuwenige einträge in der ini

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

    ; inputs befüllen
    $j=1
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    GUICtrlSetData($ArrayToUse[$i][$s],$aTemp[$j])
    $j+=1
    Next
    Next
    EndFunc
    #endregion Load Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    #region Save Lagerverwaltung
    Func _SaveData(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode = "Lager" Then
    $key=$mode & $lagernummer
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key & "Ort",GUICtrlRead($inputLager))
    EndIf
    if $mode = "Schliessfach" Then $key=$mode

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

    $value=""
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    $value&=GUICtrlRead($ArrayToUse[$i][$s]) & "|"
    Next
    Next

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

    $value=StringTrimRight($value,1) ; entfernt letzten senkrechten Strich
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key,$value)
    EndFunc
    #endregion Save Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    Func _deleteAccount()
    IniDelete("data.ini", GUICtrlRead($ComboUser))
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($ComboUser)
    $aSections = IniReadSection("data.ini", $sBesitzer) ;sectionname auslesen
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "\d000") Then ;wir überprüfen den Sectionname mit einem regulären Ausdruck (geht auch einfacher mit StringLeft)
    ;~ConsoleWrite($aSections[$i][0] & @crlf)
    IniDelete("data.ini", $sBesitzer, $aSections[$i][0]) ;jeden Key löschen, auf den der reguläre Ausdruck zutrifft
    EndIf
    Next
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _clearGUI()
    GUICtrlSetData($inputLager,'')

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

    ; neu: alle Schliessfach inputs leer machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetData($aschliesfach[$i][$s],"")
    Next
    Next

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

    ; neu: alle Lager inputs leer machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetData($aLager[$i][$s],"")
    Next
    Next

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

    _setCombo($ComboUser) ; NEU....
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _setCombo($comboToSet,$init=-1) ; wenn init -1 ist soll der derzeit gewählte Eintrag gewählt bleiben, standard Verhalten der Funktion
    Local $Sections = IniReadSectionNames($DataINI)
    if @error then Return -1 ; verlässt die Funktion, da in der ini keine Einträge gefunden wurden
    Local $SectionString = _ArrayToString($Sections,'|',1,UBound($Sections)-1)
    $auswahl=GUICtrlRead($comboToSet)
    GUICtrlSetData($comboToSet,"") ; leert combo bevor Daten neu gesetzt werden
    if $init <> -1 Then
    GUICtrlSetData($comboToSet,$SectionString,$Sections[1]) ; Setzt Werte des combos und wählt Eintrag 1 der ini
    Else
    GUICtrlSetData($comboToSet,$SectionString,$auswahl) ; Setzt Werte des combos und behält ursprüngliche Wahl bei
    EndIf
    ;Return($SectionString) ; entfernt, da die control daten jetzt innerhalb der Funktion gesetzt werden
    EndFunc
    ;-------------------------------------------------------------------------------------------

    [/autoit]

    Was evtl. noch geändert werden sollte ist die Art wie man neue Accounts anlegt. Ein Button zum hinzufügen wäre besser, denn dann kannst du die clearGUI Funktion aufrufen damit der neue Account gleich ein leeres Formular hat. Derzeit müsste man nach der Account Namenseingabe zuerst einen der lagerbuttons drücken damit das Formular leer wird, bei den Schliessfächern wäre das z.B. nicht möglich. Deswegen besser gleich einen Button zum Hinzufügen neuer Accounts.

    Der Fehler mit dem Dropdown wurde im übrigen durch das Ändern der Funktion _setCombo behoben.

    EDIT:
    Die beiden delete Funktionen müssen evtl noch angepasst werden, die hab ich bislang nicht angerührt.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 18:29
    Zitat von Ghostleader


    1. Die Inputfelder von den Lagern (wo der Lagerort rein soll) werden ja garnicht mit bedacht (geladen/gespeichert).

    Richtig weil deren Funktion nicht aus deinem Script hervorging, jedenfalls war mir unklar was da rein soll. Bleibt die Frage ob jeder user eigene Orte für seine Lager hat / haben soll oder ob die Orte immer identisch sind, was das input und eine speicherfunktion dafür unsinnig machen würde. Sofern es für jeden User seperat gespeichert werden soll füg eben in jede user sektion der ini noch folgende infos hinzu:


    Code
    Lager1Ort=blah1
    Lager2Ort=blah2
    Lager3Ort=blah3

    und in der save Funktion folgende Änderung:

    [autoit]


    if $mode = "Lager" Then
    $key=$mode & $lagernummer
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key & "Ort",GUICtrlRead($inputLager))
    EndIf
    if $mode = "Schliessfach" Then $key=$mode

    [/autoit]

    Achtung Variablen name geändert und alle Variablen $lagerInput1 bis 3 auskommentiert.
    In der Load Funktion müssen die LagerOrt Werte dann ebenfalls ausgelesen und als inhalt des inputs gesetzt werden, sollte ja kein Problem sein. ;)


    Zitat von Ghostleader


    2. Der fehler den du eingebaut hast also wenn ich jetzt nen neuen User erstelle dann wird der Zwar gespeichert aber wenn ich ihn laden will kommt dann deine msgBox "Fehler","ini Datei inkompatibel" ...

    Richtig, weil in der load Funktion überprüft wird ob die ini einträge des Keys der Anzahl der verfügbaren Inputfelder entspricht. Existiert der Key noch nicht oder beinhaltet zuwenig Werte erscheint diese Fehlermeldung, weil er eben nicht gelesen werden konnte. Das kann man jetzt über viele Wege lösen, z.B. indem man die msgbox hinter dem return entfernt, dann besteht der Fehler zwar, aber du wirst nicht darauf aufmerksam gemacht. Der schönere Weg wäre die Keys grundsätzlich beim Speichern anzulegen mit der benötigten Anzahl an senkrechten Strichen. Ist aber auch egal, wichtig ist nur dass die Lesefunktion verlassen wird wenn der Key nicht existiert (return), da es ansonsten zu falschen Adressierungen des Arrays kommt und das ganze Script abstürzt.

    Zitat von Ghostleader


    ...und es erstellen sich in der Combo mehrere gleiche User!
    3. Wenn ich einen neuen User in lager eins erstelle und speichere, anschliessend das lager wechsle ihn anwählen will um da dann die einträge zu machen ist er net da!

    Das hängt vermutlich mit der Zeile in der clearGUI Funktion zusammen die ich testweise auskommentiert hatte

    [autoit]

    ;GUICtrlSetData($ComboUser,'')

    [/autoit]

    Ausserdem ist die load Funktion derzeit überhaupt nicht mit dem Dropdown verknüpft, siehe while Schleife. Bedeutet ein Benutzerwechsel lädt keine Daten aus der ini. Das hat derzeit den Grund, weil dir eine Globale Variable fehlt anhand derer dein Script Kenntnis hat auf welcher Seite (Lager1-3 oder Schliessfach) du dich befindest. Ohne diese Angabe kann die Load Funktion nicht aufgerufen werden.


    Lauffähig bedeutet eben nicht fehlerfrei :P
    Vielleicht hab ich ja später oder morgen Zeit da nochmal dran zu basteln, oder du versuchst es selbst, einige Lösungsansätze hab ich dir ja nun genannt.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 16:40

    Hier mal etwas lauffähiges, kannst ja schaun ob du damit zurecht kommst und die fehlenden dinge (laden bei userwechsel, bug bei neuem user) selbt hinbekommst.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=Lagerverwaltungstool.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Fileversion=1.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ------------------------------------
    |
    Author: Ghostleader |
    Script: Version 1.1.0 |
    |
    Script Functionen: |
    - Lagerverwaltungstool = Version_1.1.0 |
    - Bankschließfach = Version_1.1.0 |
    |
    Copyright by Ghostleader @ Areneas |
    #ce ------------------------------------
    #region INCLUDES
    ;------------------------------------------------------------------------------------------
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion INCLUDES
    #region GLOBAL
    ;------------------------------------------------------------------------------------------
    Global $aschliesfach[17][4]
    Global $aLager[13][3]
    Global $DataINI = 'data.ini'
    #endregion GLOBAL
    ;------------------------------------------------------------------------------------------
    #region GUI
    $Form1 = GUICreate("Form1", 940, 550, 192, 5, $WS_BORDER & $WS_POPUP)
    ;GUISetState()
    $Backround = GUICtrlCreatePic("bilder\lager.tgx", 0, 0, 940, 550)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $rightLabel = GUICtrlCreateLabel("Copyright By Ghostleader @ Areneas", 650, 500, 300, 25)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion GUI
    ;------------------------------------------------------------------------------------------
    #region Group´s
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $FrontLagerBank = GUICtrlCreateGroup("", 360, 180, 280, 195)
    $GroupCombo = GUICtrlCreateGroup("", 28, 6, 276, 36)
    $GroupSpeichern = GUICtrlCreateGroup("", 336, 6, 276, 36)
    $Exit = GUICtrlCreateGroup("", 646, 6, 276, 36)
    $LagerLabelGroup = GUICtrlCreateGroup("", 330, 135, 282, 45)
    $LagerGroup = GUICtrlCreateGroup("", 200, 62, 590, 45)
    $LagerSpalte1 = GUICtrlCreateGroup("", 70, 195, 190, 290)
    $LagerSpalte2 = GUICtrlCreateGroup("", 345, 195, 190, 290)
    $LagerSpalte3 = GUICtrlCreateGroup("", 615, 195, 190, 290)
    $BankRahmen1 = GUICtrlCreateGroup("", 30, 112, 190, 370)
    $BankRahmen2 = GUICtrlCreateGroup("", 270, 112, 190, 370)
    $BankRahmen3 = GUICtrlCreateGroup("", 500, 112, 190, 370)
    $BankRahmen4 = GUICtrlCreateGroup("", 730, 112, 190, 370)
    #endregion Group´s
    ;------------------------------------------------------------------------------------------
    #region Button´s
    $Lager1Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager2Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager3Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $SchliessfachSpeichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $AccLoschen = GUICtrlCreateButton("Acc Löschen", 490, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachOben = GUICtrlCreateButton("Bankschließfach", 660, 16, 110, 22)
    $ButtonExit = GUICtrlCreateButton("Exit", 800, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachLoschen = GUICtrlCreateButton("Schliesfach Löschen", 490, 16, 110, 22)
    $LagerOben = GUICtrlCreateButton("Lagerverwaltung", 660, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $LagerFront = GUICtrlCreateButton("Lagerverwaltung", 375, 200, 250, 40)
    $SchliessfachFront = GUICtrlCreateButton("Bankschließfach", 375, 260, 250, 40)
    $Schliessen = GUICtrlCreateButton("Programm Schliessen", 375, 320, 250, 40)
    ;------------------------------------------------------------------------------------------
    $Lager1 = GUICtrlCreateButton("LAGER 1", 210, 75, 170, 25)
    $Lager2 = GUICtrlCreateButton("LAGER 2", 410, 75, 170, 25)
    $Lager3 = GUICtrlCreateButton("LAGER 3", 610, 75, 170, 25)
    #endregion Button´s
    ;------------------------------------------------------------------------------------------
    #region Combo´s
    $ComboUser = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; ein combo reicht völlig
    GUICtrlSetData($ComboUser,_setCombo())
    ;~ $Combo3 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    ;~ GUICtrlSetData($Combo3,_setCombo())
    ;~ $Combo4 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    ;~ GUICtrlSetData($Combo4,_setCombo())
    ;~ $Combo2 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    ;~ GUICtrlSetData($Combo2,_setCombo())
    #endregion Combo´s
    ;------------------------------------------------------------------------------------------
    #region Label´s
    $LagerLabel1 = GUICtrlCreateLabel("", 340, 150, 100, 25)
    GUICtrlSetFont(-1, 15, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Label4 = GUICtrlCreateLabel("Account", 42, 17, 80, 19)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Label´s
    ;---------------------------------------------------------------------------------------------
    #region Input´s
    $LagerInput1 = GUICtrlCreateInput("", 430, 150, 170, 21)
    $LagerInput2 = GUICtrlCreateInput("", 430, 150, 170, 21)
    $LagerInput3 = GUICtrlCreateInput("", 430, 150, 170, 21)
    #endregion Input´s
    ;---------------------------------------------------------------------------------------------
    #region HIDE
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($ButtonExit, $GUI_HIDE)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_HIDE)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    ;GUICtrlSetState($Combo2, $GUI_HIDE) ; entfernt
    ;GUICtrlSetState($Combo3, $GUI_HIDE) ; entfernt
    ;GUICtrlSetState($Combo4, $GUI_HIDE) ; entfernt
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    #endregion HIDE
    #region Generat´s
    _generateControls($aLager,"Lager")
    _generateControls($aschliesfach,"Schliessfach")
    #endregion Generat´s

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

    ;---------------------------------------------------------------------------------------------

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

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $LagerFront
    _ButtonLager1()
    Case $LagerOben
    _ButtonLager1()
    Case $Lager1
    _ButtonLager1()
    Case $Lager2
    _ButtonLager2()
    Case $Lager3
    _ButtonLager3()
    Case $SchliessfachFront
    _ButtonSchliessfach()
    Case $SchliessfachOben
    _ButtonSchliessfach()
    Case $ButtonExit, $Schliessen
    Exit
    Case $ComboUser ; umbenannt
    ;_LoadData()
    ; Case $Combo3
    ;_LoadData2()
    ; Case $Combo4
    ;_LoadData3()
    ; Case $Combo2
    ;_LoadDataSchliessfach()
    Case $Lager1Speichern
    _SaveData($aLager,"Lager",1) ; neu
    Case $Lager2Speichern
    _SaveData($aLager,"Lager",2) ; neu
    Case $Lager3Speichern
    _SaveData($aLager,"Lager",3) ; neu
    Case $SchliessfachSpeichern
    _SaveData($aschliesfach,"Schliessfach",0) ; neu
    Case $AccLoschen
    _deleteAccount()
    Case $SchliessfachLoschen
    _deleteSchliessfach()
    EndSwitch
    WEnd
    ;_--------------------------------------------------------------------------------------------
    Func _ButtonSchliessfach()
    ; neu: alle Lager inputs unsichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Schliessfach inputs sichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerOben, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_HIDE)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    ;GUICtrlSetState($Combo3, $GUI_HIDE)
    ;GUICtrlSetState($Combo4, $GUI_HIDE)
    ;GUICtrlSetState($Combo2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen1, $GUI_SHOW)
    GUICtrlSetState($BankRahmen2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen3, $GUI_SHOW)
    GUICtrlSetState($BankRahmen4, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aschliesfach,"Schliessfach",0)
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager1()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 1")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_SHOW)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    ;GUICtrlSetState($Combo2, $GUI_HIDE)
    ;GUICtrlSetState($Combo3, $GUI_HIDE)
    ;GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",1)
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager2()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 2")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_SHOW)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    ;GUICtrlSetState($Combo2, $GUI_HIDE)
    ;GUICtrlSetState($Combo3, $GUI_SHOW)
    ;GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",2)
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _ButtonLager3()

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 3")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_SHOW)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    ;GUICtrlSetState($Combo2, $GUI_HIDE)
    ;GUICtrlSetState($Combo3, $GUI_HIDE)
    ;GUICtrlSetState($Combo4, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)

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

    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",3)
    EndFunc
    ;-------------------------------------------------------------------------------------------------

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

    Func _generateControls(ByRef $ArrayToUse,$mode)
    #cs
    Neue Funktion die die generate Funktionen für Lager und Schliessfach ersetzt und alle control ids in 2-Dimensionalen Arrays speichert
    Könnte weiter optimiert werden, da es kaum unterschiede zwischen beiden Modes gibt, wir belassen es jetzt erstmal so...
    #ce

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

    if $mode = "Lager" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 then $left=1
    if $s=1 then $left=275
    if $s=2 then $left=545
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    if $mode = "Schliessfach" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 Then $left=40
    if $s=1 Then $left=280
    if $s=2 Then $left=510
    if $s=3 Then $left=740
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $Fach = GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht, ausserdem überschreibst du die variable, somit label später nicht mehr änderbar
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",5+$left,130+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    EndFunc

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

    ;------------------------------------------------------------------------------------------
    #region Load Lagerverwaltung

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

    Func _LoadData(ByRef $ArrayToUse,$mode,$lagernummer) ;Lager Spalten
    ;if $mode="Lager" Then
    if $mode="Lager" Then $key=$mode & $lagernummer
    if $mode="Schliessfach" Then $key=$mode
    $value=IniRead($DataINI,GUICtrlRead($ComboUser),$key,"")
    $aTemp=StringSplit($value,"|") ; erstellt array mit den einzelwerten aus dem string im ini key-value
    ;_ArrayDisplay($aTemp)
    ;_ArrayDisplay($ArrayToUse)
    if UBound($aTemp)-1+UBound($ArrayToUse,2) <> UBound($ArrayToUse)*UBound($ArrayToUse,2) Then Return MsgBox(0,"Fehler","ini Datei inkompatibel") ; verlässt die Funktion, weil zuviele oder zuwenige einträge in der ini
    ; inputs befüllen
    $j=1
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    GUICtrlSetData($ArrayToUse[$i][$s],$aTemp[$j])
    $j+=1
    Next
    Next
    ;EndIf

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

    ;~
    ;~ GUICtrlSetData($LagerInput1,IniRead($DataINI,GUICtrlRead($Combo1),1001,''))
    ;~ For $i = 1 To UBound($aSpalte1)-1
    ;~ GUICtrlSetData($aSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),1&$i,''))
    ;~ GUICtrlSetData($aSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),2&$i,''))
    ;~ GUICtrlSetData($aSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),3&$i,''))
    ;~ Next
    EndFunc
    #cs
    Func _LoadData2() ;Lager Spalten
    GUICtrlSetData($LagerInput2,IniRead($DataINI,GUICtrlRead($Combo1),1002,''))
    For $i = 1 To UBound($bSpalte1)-1
    GUICtrlSetData($bSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),4&$i,''))
    GUICtrlSetData($bSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),5&$i,''))
    GUICtrlSetData($bSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),6&$i,''))
    Next
    EndFunc
    Func _LoadData3() ;Lager Spalten
    GUICtrlSetData($LagerInput3,IniRead($DataINI,GUICtrlRead($Combo1),1003,''))
    For $i = 1 To UBound($cSpalte1)-1
    GUICtrlSetData($cSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),7&$i,''))
    GUICtrlSetData($cSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),8&$i,''))
    GUICtrlSetData($cSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),9&$i,''))
    Next
    EndFunc
    #ce
    #endregion Load Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    #region Save Lagerverwaltung
    Func _SaveData(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode = "Lager" Then $key=$mode & $lagernummer
    if $mode = "Schliessfach" Then $key=$mode
    $value=""
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    $value&=GUICtrlRead($ArrayToUse[$i][$s]) & "|"
    Next
    Next
    $value=StringTrimRight($value,1) ; entfernt letzten senkrechten Strich
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key,$value)

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

    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),1001,GUICtrlRead($LagerInput1))
    ;~ For $i = 1 To UBound($aSpalte1)-1
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),1&$i,GUICtrlRead($aSpalte1[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),2&$i,GUICtrlRead($aSpalte2[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),3&$i,GUICtrlRead($aSpalte3[$i]))
    ;~ Next
    ;~ _clearGUI()
    EndFunc
    ;~ Func _SaveData2() ;Lager Spalten
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),1002,GUICtrlRead($LagerInput2))
    ;~ For $i = 1 To UBound($bSpalte1)-1
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),4&$i,GUICtrlRead($bSpalte1[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),5&$i,GUICtrlRead($bSpalte2[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),6&$i,GUICtrlRead($bSpalte3[$i]))
    ;~ Next
    ;~ _clearGUI()
    ;~ EndFunc
    ;~ Func _SaveData3() ;Lager Spalten
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),1003,GUICtrlRead($LagerInput3))
    ;~ For $i = 1 To UBound($cSpalte1)-1
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),7&$i,GUICtrlRead($cSpalte1[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),8&$i,GUICtrlRead($cSpalte2[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo1),9&$i,GUICtrlRead($cSpalte3[$i]))
    ;~ Next
    ;~ _clearGUI()
    ;~ EndFunc
    #endregion Save Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    Func _LoadDataSchliessfach()
    ;~ For $i = 1 To UBound($aSchliesfach1)-1
    ;~ GUICtrlSetData($aSchliesfach1[$i],IniRead($DataINI,GUICtrlRead($Combo2),2000&$i,''))
    ;~ GUICtrlSetData($aSchliesfach2[$i],IniRead($DataINI,GUICtrlRead($Combo2),3000&$i,''))
    ;~ GUICtrlSetData($aSchliesfach3[$i],IniRead($DataINI,GUICtrlRead($Combo2),4000&$i,''))
    ;~ GUICtrlSetData($aSchliesfach4[$i],IniRead($DataINI,GUICtrlRead($Combo2),5000&$i,''))
    ;~ Next
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _SaveDataSchliessfach()
    ;~ For $i = 1 To UBound($aSchliesfach1)-1
    ;~ IniWrite($DataINI,GUICtrlRead($Combo2),2000&$i,GUICtrlRead($aSchliesfach1[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo2),3000&$i,GUICtrlRead($aSchliesfach2[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo2),4000&$i,GUICtrlRead($aSchliesfach3[$i]))
    ;~ IniWrite($DataINI,GUICtrlRead($Combo2),5000&$i,GUICtrlRead($aSchliesfach4[$i]))
    ;~ Next
    ;~ _clearGUI()
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _deleteAccount()
    IniDelete("data.ini", GUICtrlRead($ComboUser))
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($ComboUser)
    $aSections = IniReadSection("data.ini", $sBesitzer) ;sectionname auslesen
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "\d000") Then ;wir überprüfen den Sectionname mit einem regulären Ausdruck (geht auch einfacher mit StringLeft)
    ;~ConsoleWrite($aSections[$i][0] & @crlf)
    IniDelete("data.ini", $sBesitzer, $aSections[$i][0]) ;jeden Key löschen, auf den der reguläre Ausdruck zutrifft
    EndIf
    Next
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _clearGUI()
    GUICtrlSetData($LagerInput1,'')
    GUICtrlSetData($LagerInput2,'')
    GUICtrlSetData($LagerInput3,'')
    ;GUICtrlSetData($ComboUser,'')

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

    ; neu: alle Schliessfach inputs leer machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetData($aschliesfach[$i][$s],"")
    Next
    Next

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

    ; neu: alle Lager inputs leer machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetData($aLager[$i][$s],"")
    Next
    Next

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

    ;GUICtrlSetData($Combo3,'')
    ;GUICtrlSetData($Combo4,'')
    ;GUICtrlSetData($Combo2,'')
    ;~ For $i = 1 To UBound($aSpalte1)-1
    ;~ GUICtrlSetData($aSpalte1[$i],'')
    ;~ GUICtrlSetData($aSpalte2[$i],'')
    ;~ GUICtrlSetData($aSpalte3[$i],'')
    ;~ Next
    ;~ For $i = 1 To UBound($bSpalte1)-1
    ;~ GUICtrlSetData($bSpalte1[$i],'')
    ;~ GUICtrlSetData($bSpalte2[$i],'')
    ;~ GUICtrlSetData($bSpalte3[$i],'')
    ;~ Next
    ;~ For $i = 1 To UBound($cSpalte1)-1
    ;~ GUICtrlSetData($cSpalte1[$i],'')
    ;~ GUICtrlSetData($cSpalte2[$i],'')
    ;~ GUICtrlSetData($cSpalte3[$i],'')
    ;~ Next
    ;~ For $i = 1 To UBound($aSchliesfach1)-1
    ;~ GUICtrlSetData($aSchliesfach1[$i],'')
    ;~ GUICtrlSetData($aSchliesfach2[$i],'')
    ;~ GUICtrlSetData($aSchliesfach3[$i],'')
    ;~ GUICtrlSetData($aSchliesfach4[$i],'')
    ;~ Next
    GUICtrlSetData($ComboUser,_setCombo())
    ;GUICtrlSetData($Combo3,_setCombo())
    ;GUICtrlSetData($Combo4,_setCombo())
    ;GUICtrlSetData($Combo2,_setCombo())
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _setCombo()
    Local $Sections = IniReadSectionNames($DataINI)
    Local $SectionString = _ArrayToString($Sections,'|',1,UBound($Sections)-1)
    Return($SectionString)
    EndFunc
    ;-------------------------------------------------------------------------------------------

    [/autoit]

    data.ini zum testen

    Code
    [testuser]
    Lager1=lager1spalte1value1|||||||||||||||||||||||||||||||||||
    Lager2=|||||||||||||lager2spalte2value2||||||||||||||||||||||
    Lager3=||||||||||||||||||||||||||lager3spalte3value3|||||||||
    Schliessfach=sfach1|||||||||||||||||sfach2|||||||||||||||||sfach3|||||||||||||||||sfach4||||||||||||
  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 15:58
    Zitat von Ghostleader

    Nun erstmal noch ein Paar Fragen:
    1. Kann ich für alles also Lager und Schliessfach nur eine Combo (Combo1) verwenden?
    2. Kann ich für alle Lager nur ein Input (Input1) verwenden?


    Ja, zumindestens das Combo für den Benutzernamen habe ich in meiner derzeit noch unfertigen Fassung bereits auf eines reduziert, das selbe könnte man Wohl auch mit dem Input bei jedem Lager tun, dessen Sinn ich noch nicht ganz verstanden habe, spielt aber für den Rest auch keine sonderliche Rolle.

    Zitat


    Mir würde es sicher leichter fallen wenn ich es sehen könnte anhand eines Beispiels hier!

    Beispiele zum Umgang mit 2-Dimensionalen Arrays findest du hier genügend. Zum besseren Verständnis wie die Arrays aufgebaut sind hilft sicher auch ein _arrayDisplay und ein consolewrite innerhalb der Schleifen. Das ist nun aber an dir dich näher damit zu beschäftigen und dir ggf. Dinge zur Visualisierung einzubauen um das ganze zu verstehen.

    Zitat


    Vielleicht hättest du ja noch soviel Lust und Zeit das du mir mal entweder für´s Lager oder für´s Schliessfach (speicher und Laden) das machen könntest ...

    Bin ich dabei, allerdings mussten einige dinge deiner redundanten GUI dafür noch geändert werden (z.B. das oben erwähnte combo), was etwas Zeit kostet...

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 14:24

    Hier mal eine Neufassung mit 2D-Arrays und zusammengefasster generate Funktion:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=Lagerverwaltungstool.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Fileversion=1.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright by Ghostleader & Areneas
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ------------------------------------
    |
    Author: Ghostleader |
    Script: Version 1.1.0 |
    |
    Script Functionen: |
    - Lagerverwaltungstool = Version_1.1.0 |
    - Bankschließfach = Version_1.1.0 |
    |
    Copyright by Ghostleader @ Areneas |
    #ce ------------------------------------
    #region INCLUDES
    ;------------------------------------------------------------------------------------------
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion INCLUDES
    #region GLOBAL
    ;------------------------------------------------------------------------------------------
    Global $aSchliesfach1[17], $aSchliesfach2[17], $aSchliesfach3[17], $aSchliesfach4[17]
    Global $aschliesfach[17][4]
    Global $aLager[13][3]
    Global $aSpalte1[13], $aSpalte2[13], $aSpalte3[13]
    Global $bSpalte1[13], $bSpalte2[13], $bSpalte3[13]
    Global $cSpalte1[13], $cSpalte2[13], $cSpalte3[13]
    Global $DataINI = 'data.ini'
    #endregion GLOBAL
    ;------------------------------------------------------------------------------------------
    #region GUI
    $Form1 = GUICreate("Form1", 940, 550, 192, 5, $WS_BORDER & $WS_POPUP)
    ;GUISetState()
    $Backround = GUICtrlCreatePic("bilder\lager.tgx", 0, 0, 940, 550)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $rightLabel = GUICtrlCreateLabel("Copyright By Ghostleader @ Areneas", 650, 500, 300, 25)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion GUI
    ;------------------------------------------------------------------------------------------
    #region Group´s
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $FrontLagerBank = GUICtrlCreateGroup("", 360, 180, 280, 195)
    $GroupCombo = GUICtrlCreateGroup("", 28, 6, 276, 36)
    $GroupSpeichern = GUICtrlCreateGroup("", 336, 6, 276, 36)
    $Exit = GUICtrlCreateGroup("", 646, 6, 276, 36)
    $LagerLabelGroup = GUICtrlCreateGroup("", 330, 135, 282, 45)
    $LagerGroup = GUICtrlCreateGroup("", 200, 62, 590, 45)
    $LagerSpalte1 = GUICtrlCreateGroup("", 70, 195, 190, 290)
    $LagerSpalte2 = GUICtrlCreateGroup("", 345, 195, 190, 290)
    $LagerSpalte3 = GUICtrlCreateGroup("", 615, 195, 190, 290)
    $BankRahmen1 = GUICtrlCreateGroup("", 30, 112, 190, 370)
    $BankRahmen2 = GUICtrlCreateGroup("", 270, 112, 190, 370)
    $BankRahmen3 = GUICtrlCreateGroup("", 500, 112, 190, 370)
    $BankRahmen4 = GUICtrlCreateGroup("", 730, 112, 190, 370)
    #endregion Group´s
    ;------------------------------------------------------------------------------------------
    #region Button´s
    $Lager1Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager2Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $Lager3Speichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $SchliessfachSpeichern = GUICtrlCreateButton("Speichern", 350, 16, 110, 22)
    $AccLoschen = GUICtrlCreateButton("Acc Löschen", 490, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachOben = GUICtrlCreateButton("Bankschließfach", 660, 16, 110, 22)
    $ButtonExit = GUICtrlCreateButton("Exit", 800, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachLoschen = GUICtrlCreateButton("Schliesfach Löschen", 490, 16, 110, 22)
    $LagerOben = GUICtrlCreateButton("Lagerverwaltung", 660, 16, 110, 22)
    ;------------------------------------------------------------------------------------------
    $LagerFront = GUICtrlCreateButton("Lagerverwaltung", 375, 200, 250, 40)
    $SchliessfachFront = GUICtrlCreateButton("Bankschließfach", 375, 260, 250, 40)
    $Schliessen = GUICtrlCreateButton("Programm Schliessen", 375, 320, 250, 40)
    ;------------------------------------------------------------------------------------------
    $Lager1 = GUICtrlCreateButton("LAGER 1", 210, 75, 170, 25)
    $Lager2 = GUICtrlCreateButton("LAGER 2", 410, 75, 170, 25)
    $Lager3 = GUICtrlCreateButton("LAGER 3", 610, 75, 170, 25)
    #endregion Button´s
    ;------------------------------------------------------------------------------------------
    #region Combo´s
    $Combo1 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData($Combo1,_setCombo())
    $Combo3 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData($Combo3,_setCombo())
    $Combo4 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData($Combo4,_setCombo())
    $Combo2 = GUICtrlCreateCombo("", 120, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData($Combo2,_setCombo())
    #endregion Combo´s
    ;------------------------------------------------------------------------------------------
    #region Label´s
    $LagerLabel1 = GUICtrlCreateLabel("", 340, 150, 100, 25)
    GUICtrlSetFont(-1, 15, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Label4 = GUICtrlCreateLabel("Account", 42, 17, 80, 19)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Label´s
    ;---------------------------------------------------------------------------------------------
    #region Input´s
    $LagerInput1 = GUICtrlCreateInput("", 430, 150, 170, 21)
    $LagerInput2 = GUICtrlCreateInput("", 430, 150, 170, 21)
    $LagerInput3 = GUICtrlCreateInput("", 430, 150, 170, 21)
    #endregion Input´s
    ;---------------------------------------------------------------------------------------------
    #region HIDE
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($ButtonExit, $GUI_HIDE)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_HIDE)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($Combo1, $GUI_HIDE)
    GUICtrlSetState($Combo2, $GUI_HIDE)
    GUICtrlSetState($Combo3, $GUI_HIDE)
    GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    #endregion HIDE
    #region Generat´s

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

    _generateControls($aLager,"Lager")
    _generateControls($aschliesfach,"Schliessfach")

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

    #cs
    Ersetzt durch obige Funktion
    #ce
    ;~ _generateLagerSpalte($aSpalte1,1)
    ;~ _generateLagerSpalte($aSpalte2,275)
    ;~ _generateLagerSpalte($aSpalte3,545)
    ;~ _generateLagerSpalte2($bSpalte1,1)
    ;~ _generateLagerSpalte2($bSpalte2,275)
    ;~ _generateLagerSpalte2($bSpalte3,545)
    ;~ _generateLagerSpalte3($cSpalte1,1)
    ;~ _generateLagerSpalte3($cSpalte2,275)
    ;~ _generateLagerSpalte3($cSpalte3,545)
    ;~ _generateSchliessfachSpalte($aSchliesfach1,40)
    ;~ _generateSchliessfachSpalte($aSchliesfach2,280)
    ;~ _generateSchliessfachSpalte($aSchliesfach3,510)
    ;~ _generateSchliessfachSpalte($aSchliesfach4,740)
    #endregion Generat´s
    #region Generate´s Hide

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

    ; neu: controls werden bereits bei der Erstellung unsichtbar gemacht, siehe _generateControls()

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

    #cs
    For $i = 1 To Ubound($aSchliesfach1)-1
    GUICtrlSetState($aschliesfach1[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach2)-1
    GUICtrlSetState($aschliesfach2[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach3)-1
    GUICtrlSetState($aschliesfach3[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach4)-1
    GUICtrlSetState($aschliesfach4[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte1) - 1
    GUICtrlSetState($aSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte2) - 1
    GUICtrlSetState($aSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte3) - 1
    GUICtrlSetState($aSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte1) - 1
    GUICtrlSetState($bSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte2) - 1
    GUICtrlSetState($bSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte3) - 1
    GUICtrlSetState($bSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte1) - 1
    GUICtrlSetState($cSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte2) - 1
    GUICtrlSetState($cSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte3) - 1
    GUICtrlSetState($cSpalte3[$i], $GUI_HIDE)
    Next
    #ce
    #endregion Generate´s Hide
    ;---------------------------------------------------------------------------------------------

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

    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $LagerFront
    _ButtonLager1()
    Case $LagerOben
    _ButtonLager1()
    Case $Lager1
    _ButtonLager1()
    Case $Lager2
    _ButtonLager2()
    Case $Lager3
    _ButtonLager3()
    Case $SchliessfachFront
    _ButtonSchliessfach()
    Case $SchliessfachOben
    _ButtonSchliessfach()
    Case $ButtonExit, $Schliessen
    Exit
    Case $Combo1
    _LoadData()
    Case $Combo3
    _LoadData2()
    Case $Combo4
    _LoadData3()
    Case $Combo2
    _LoadDataSchliessfach()
    Case $Lager1Speichern
    _SaveData()
    Case $Lager2Speichern
    _SaveData2()
    Case $Lager3Speichern
    _SaveData3()
    Case $SchliessfachSpeichern
    _SaveDataSchliessfach()
    Case $AccLoschen
    _deleteAccount()
    Case $SchliessfachLoschen
    _deleteSchliessfach()
    EndSwitch
    WEnd
    ;_--------------------------------------------------------------------------------------------
    Func _ButtonSchliessfach()

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

    #cs wird nicht mehr benötogt

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

    For $i = 1 TO UBound($aSpalte1) - 1
    GUICtrlSetState($aSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte2) - 1
    GUICtrlSetState($aSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte3) - 1
    GUICtrlSetState($aSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte1) - 1
    GUICtrlSetState($bSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte2) - 1
    GUICtrlSetState($bSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte3) - 1
    GUICtrlSetState($bSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte1) - 1
    GUICtrlSetState($cSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte2) - 1
    GUICtrlSetState($cSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte3) - 1
    GUICtrlSetState($cSpalte3[$i], $GUI_HIDE)
    Next
    #ce

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

    ; neu: alle Lager inputs unsichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next

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

    #cs
    Wenn man auf Schliessfach klickt sollten die Schliessfach controls auch sichtbar sein
    #ce

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

    #cs nicht mehr benätogt

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

    For $i = 1 to UBound($aschliesfach1) -1
    GUICtrlSetState($aschliesfach1[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach2) -1
    GUICtrlSetState($aschliesfach2[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach3) -1
    GUICtrlSetState($aschliesfach3[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach4) -1
    GUICtrlSetState($aschliesfach4[$i], $GUI_SHOW)
    Next
    #ce

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

    ; neu: alle Schliessfach inputs sichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerOben, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_HIDE)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Combo1, $GUI_HIDE)
    GUICtrlSetState($Combo3, $GUI_HIDE)
    GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($Combo2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen1, $GUI_SHOW)
    GUICtrlSetState($BankRahmen2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen3, $GUI_SHOW)
    GUICtrlSetState($BankRahmen4, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager1()

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

    #cs nioht mehr benötigt
    For $i = 1 To Ubound($aSchliesfach1)-1
    GUICtrlSetState($aschliesfach1[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach2)-1
    GUICtrlSetState($aschliesfach2[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach3)-1
    GUICtrlSetState($aschliesfach3[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach4)-1
    GUICtrlSetState($aschliesfach4[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte1) - 1
    GUICtrlSetState($bSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte2) - 1
    GUICtrlSetState($bSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte3) - 1
    GUICtrlSetState($bSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte1) - 1
    GUICtrlSetState($cSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte2) - 1
    GUICtrlSetState($cSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte3) - 1
    GUICtrlSetState($cSpalte3[$i], $GUI_HIDE)
    Next
    #ce

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 1")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_SHOW)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($Combo1, $GUI_SHOW)
    GUICtrlSetState($Combo2, $GUI_HIDE)
    GUICtrlSetState($Combo3, $GUI_HIDE)
    GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager2()

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

    #cs
    For $i = 1 To Ubound($aSchliesfach1)-1
    GUICtrlSetState($aschliesfach1[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach2)-1
    GUICtrlSetState($aschliesfach2[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach3)-1
    GUICtrlSetState($aschliesfach3[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach4)-1
    GUICtrlSetState($aschliesfach4[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte1) - 1
    GUICtrlSetState($aSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte2) - 1
    GUICtrlSetState($aSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte3) - 1
    GUICtrlSetState($aSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte1) - 1
    GUICtrlSetState($cSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte2) - 1
    GUICtrlSetState($cSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($cSpalte3) - 1
    GUICtrlSetState($cSpalte3[$i], $GUI_HIDE)
    Next

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

    #cs
    Wenn man auf Lager2 klickt sollten die Lager2 controls auch sichtbar sein
    #ce

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

    For $i = 1 to UBound($bSpalte1) -1
    GUICtrlSetState($bSpalte1[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($bSpalte2) -1
    GUICtrlSetState($bSpalte2[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($bSpalte3) -1
    GUICtrlSetState($bSpalte3[$i], $GUI_SHOW)
    Next
    #ce

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 2")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_SHOW)
    GUICtrlSetState($LagerInput3, $GUI_HIDE)
    GUICtrlSetState($Combo1, $GUI_HIDE)
    GUICtrlSetState($Combo2, $GUI_HIDE)
    GUICtrlSetState($Combo3, $GUI_SHOW)
    GUICtrlSetState($Combo4, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _ButtonLager3()
    #cs
    For $i = 1 To Ubound($aSchliesfach1)-1
    GUICtrlSetState($aschliesfach1[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach2)-1
    GUICtrlSetState($aschliesfach2[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach3)-1
    GUICtrlSetState($aschliesfach3[$i], $GUI_HIDE)
    Next
    For $i = 1 To Ubound($aSchliesfach4)-1
    GUICtrlSetState($aschliesfach4[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte1) - 1
    GUICtrlSetState($aSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte2) - 1
    GUICtrlSetState($aSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($aSpalte3) - 1
    GUICtrlSetState($aSpalte3[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte1) - 1
    GUICtrlSetState($bSpalte1[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte2) - 1
    GUICtrlSetState($bSpalte2[$i], $GUI_HIDE)
    Next
    For $i = 1 TO UBound($bSpalte3) - 1
    GUICtrlSetState($bSpalte3[$i], $GUI_HIDE)
    Next

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

    #cs
    Wenn man auf Lager3 klickt sollten die Lager3 controls auch sichtbar sein
    #ce

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

    For $i = 1 to UBound($cSpalte1) -1
    GUICtrlSetState($cSpalte1[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($cSpalte2) -1
    GUICtrlSetState($cSpalte2[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($cSpalte3) -1
    GUICtrlSetState($cSpalte3[$i], $GUI_SHOW)
    Next
    #ce

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

    ; neu: alle Schliessfach inputs unsichtbar machen

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

    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next

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

    ; neu: alle Lager inputs sichtbar machen

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

    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next

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

    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 3")
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_SHOW)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($LagerInput1, $GUI_HIDE)
    GUICtrlSetState($LagerInput2, $GUI_HIDE)
    GUICtrlSetState($LagerInput3, $GUI_SHOW)
    GUICtrlSetState($Combo1, $GUI_HIDE)
    GUICtrlSetState($Combo2, $GUI_HIDE)
    GUICtrlSetState($Combo3, $GUI_HIDE)
    GUICtrlSetState($Combo4, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    EndFunc
    ;-------------------------------------------------------------------------------------------------

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

    Func _generateControls(ByRef $ArrayToUse,$mode)
    #cs
    Neue Funktion die die generate Funktionen für Lager und Schliessfach ersetzt und alle control ids in 2-Dimensionalen Arrays speichert
    Könnte weiter optimiert werden, da es kaum unterschiede zwischen beiden Modes gibt, wir belassen es jetzt erstmal so...
    #ce

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

    if $mode = "Lager" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 then $left=1
    if $s=1 then $left=275
    if $s=2 then $left=545
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    if $mode = "Schliessfach" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 Then $left=40
    if $s=1 Then $left=280
    if $s=2 Then $left=510
    if $s=3 Then $left=740
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $Fach = GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5) ; wozu du die leeren labels brauchst weiß ich ehrlich gesagt nicht, ausserdem überschreibst du die variable, somit label später nicht mehr änderbar
    GUICtrlSetFont(-1, 10, 600) ; label hat keinen inhalt, wozu die Schrift setzen?
    GUICtrlSetColor(-1, 000000) ; ich denke der farbcode ist nicht gültig sollte eher so ausschaun: 0x000000
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",5+$left,130+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf

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

    EndFunc

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

    #cs Veraltete Funktionen:

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

    Func _generateLagerSpalte(ByRef $ArrayToUse,$left)
    $Abstand = 2
    For $i = 1 To UBound($ArrayToUse)-1
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    $Abstand +=21
    Next
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _generateLagerSpalte2(ByRef $ArrayToUse,$left)
    $Abstand = 2
    For $i = 1 To UBound($ArrayToUse)-1
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    $Abstand +=21
    Next
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _generateLagerSpalte3(ByRef $ArrayToUse,$left)
    $Abstand = 2
    For $i = 1 To UBound($ArrayToUse)-1
    GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    $Abstand +=21
    Next
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _generateSchliessfachSpalte(ByRef $ArrayToUse,$left)
    $Abstand = 2
    For $i = 1 To UBound($ArrayToUse)-1
    $Fach = GUICtrlCreateLabel(' ' ,$left,216+$Abstand,5)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $ArrayToUse[$i] = GUICtrlCreateInput("",5+$left,130+$Abstand,160)
    $Abstand +=21
    Next
    EndFunc

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

    #ce
    ;------------------------------------------------------------------------------------------
    #region Load Lagerverwaltung
    Func _LoadData() ;Lager Spalten
    GUICtrlSetData($LagerInput1,IniRead($DataINI,GUICtrlRead($Combo1),1001,''))
    For $i = 1 To UBound($aSpalte1)-1
    GUICtrlSetData($aSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),1&$i,''))
    GUICtrlSetData($aSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),2&$i,''))
    GUICtrlSetData($aSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),3&$i,''))
    Next
    EndFunc
    Func _LoadData2() ;Lager Spalten
    GUICtrlSetData($LagerInput2,IniRead($DataINI,GUICtrlRead($Combo1),1002,''))
    For $i = 1 To UBound($bSpalte1)-1
    GUICtrlSetData($bSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),4&$i,''))
    GUICtrlSetData($bSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),5&$i,''))
    GUICtrlSetData($bSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),6&$i,''))
    Next
    EndFunc
    Func _LoadData3() ;Lager Spalten
    GUICtrlSetData($LagerInput3,IniRead($DataINI,GUICtrlRead($Combo1),1003,''))
    For $i = 1 To UBound($cSpalte1)-1
    GUICtrlSetData($cSpalte1[$i],IniRead($DataINI,GUICtrlRead($Combo1),7&$i,''))
    GUICtrlSetData($cSpalte2[$i],IniRead($DataINI,GUICtrlRead($Combo1),8&$i,''))
    GUICtrlSetData($cSpalte3[$i],IniRead($DataINI,GUICtrlRead($Combo1),9&$i,''))
    Next
    EndFunc
    #endregion Load Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    #region Save Lagerverwaltung
    Func _SaveData() ;Lager Spalten
    IniWrite($DataINI,GUICtrlRead($Combo1),1001,GUICtrlRead($LagerInput1))
    For $i = 1 To UBound($aSpalte1)-1
    IniWrite($DataINI,GUICtrlRead($Combo1),1&$i,GUICtrlRead($aSpalte1[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),2&$i,GUICtrlRead($aSpalte2[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),3&$i,GUICtrlRead($aSpalte3[$i]))
    Next
    _clearGUI()
    EndFunc
    Func _SaveData2() ;Lager Spalten
    IniWrite($DataINI,GUICtrlRead($Combo1),1002,GUICtrlRead($LagerInput2))
    For $i = 1 To UBound($bSpalte1)-1
    IniWrite($DataINI,GUICtrlRead($Combo1),4&$i,GUICtrlRead($bSpalte1[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),5&$i,GUICtrlRead($bSpalte2[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),6&$i,GUICtrlRead($bSpalte3[$i]))
    Next
    _clearGUI()
    EndFunc
    Func _SaveData3() ;Lager Spalten
    IniWrite($DataINI,GUICtrlRead($Combo1),1003,GUICtrlRead($LagerInput3))
    For $i = 1 To UBound($cSpalte1)-1
    IniWrite($DataINI,GUICtrlRead($Combo1),7&$i,GUICtrlRead($cSpalte1[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),8&$i,GUICtrlRead($cSpalte2[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo1),9&$i,GUICtrlRead($cSpalte3[$i]))
    Next
    _clearGUI()
    EndFunc
    #endregion Save Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    Func _LoadDataSchliessfach()
    For $i = 1 To UBound($aSchliesfach1)-1
    GUICtrlSetData($aSchliesfach1[$i],IniRead($DataINI,GUICtrlRead($Combo2),2000&$i,''))
    GUICtrlSetData($aSchliesfach2[$i],IniRead($DataINI,GUICtrlRead($Combo2),3000&$i,''))
    GUICtrlSetData($aSchliesfach3[$i],IniRead($DataINI,GUICtrlRead($Combo2),4000&$i,''))
    GUICtrlSetData($aSchliesfach4[$i],IniRead($DataINI,GUICtrlRead($Combo2),5000&$i,''))
    Next
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _SaveDataSchliessfach()
    For $i = 1 To UBound($aSchliesfach1)-1
    IniWrite($DataINI,GUICtrlRead($Combo2),2000&$i,GUICtrlRead($aSchliesfach1[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo2),3000&$i,GUICtrlRead($aSchliesfach2[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo2),4000&$i,GUICtrlRead($aSchliesfach3[$i]))
    IniWrite($DataINI,GUICtrlRead($Combo2),5000&$i,GUICtrlRead($aSchliesfach4[$i]))
    Next
    _clearGUI()
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _deleteAccount()
    IniDelete("data.ini", GUICtrlRead($Combo1))
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($Combo2)
    $aSections = IniReadSection("data.ini", $sBesitzer) ;sectionname auslesen
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "\d000") Then ;wir überprüfen den Sectionname mit einem regulären Ausdruck (geht auch einfacher mit StringLeft)
    ;~ConsoleWrite($aSections[$i][0] & @crlf)
    IniDelete("data.ini", $sBesitzer, $aSections[$i][0]) ;jeden Key löschen, auf den der reguläre Ausdruck zutrifft
    EndIf
    Next
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _clearGUI()
    GUICtrlSetData($LagerInput1,'')
    GUICtrlSetData($LagerInput2,'')
    GUICtrlSetData($LagerInput3,'')
    GUICtrlSetData($Combo1,'')
    GUICtrlSetData($Combo3,'')
    GUICtrlSetData($Combo4,'')
    GUICtrlSetData($Combo2,'')
    For $i = 1 To UBound($aSpalte1)-1
    GUICtrlSetData($aSpalte1[$i],'')
    GUICtrlSetData($aSpalte2[$i],'')
    GUICtrlSetData($aSpalte3[$i],'')
    Next
    For $i = 1 To UBound($bSpalte1)-1
    GUICtrlSetData($bSpalte1[$i],'')
    GUICtrlSetData($bSpalte2[$i],'')
    GUICtrlSetData($bSpalte3[$i],'')
    Next
    For $i = 1 To UBound($cSpalte1)-1
    GUICtrlSetData($cSpalte1[$i],'')
    GUICtrlSetData($cSpalte2[$i],'')
    GUICtrlSetData($cSpalte3[$i],'')
    Next
    For $i = 1 To UBound($aSchliesfach1)-1
    GUICtrlSetData($aSchliesfach1[$i],'')
    GUICtrlSetData($aSchliesfach2[$i],'')
    GUICtrlSetData($aSchliesfach3[$i],'')
    GUICtrlSetData($aSchliesfach4[$i],'')
    Next
    GUICtrlSetData($Combo1,_setCombo())
    GUICtrlSetData($Combo3,_setCombo())
    GUICtrlSetData($Combo4,_setCombo())
    GUICtrlSetData($Combo2,_setCombo())
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _setCombo()
    Local $Sections = IniReadSectionNames($DataINI)
    Local $SectionString = _ArrayToString($Sections,'|',1,UBound($Sections)-1)
    Return($SectionString)
    EndFunc
    ;-------------------------------------------------------------------------------------------

    [/autoit]

    Angepasst werden müssen jetzt natürlich noch die Funktionen zum Speichern, wobei es da entscheidend ist wie die Daten letzten Endes gespeichert werden sollen, siehe vorheriges Posting.
    Ausserdem gibt es nun keine seperaten inputs für die einzelnen Lager mehr, somit müssen die Button Funktionen noch ergänzt werden damit die Inhalte der Controls resetet (cleargui anpassen) und passend neu gesetzt werden, auch das geht nur wenn wir uns auf ein Speichersystem festgelegt haben.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 13:05

    Dein Speichersystem ist einfach murks wenn ich das mal so sagen darf.

    Dein ganzes Script ist hoch ineffizient und besteht aus einer einzigen Redundanz. Du brauchst zum einen nicht für jedes Lager eigene inputs, es würde reichen die Inhalte beim Lagerwechsel neu zu setzen. Zum anderen wäre es einfacher wenn du die Spalten nicht trenenn würdest sondern alle Lager controls in einem Array speicherst ggf 2-dimensional. Deine Speicher und Ladefunktionen sind ebenfalls mehrfach vorhanden, was durch das zusammelegen der inputs unnötig wäre und zudem auch ohne die Zusammenlegung in einer einzigen flexiblen Funktion zusammengefasst werden könnte.

    Was schief läuft konnte ich jetzt auf die Schnelle dank deinem Benennungssystem der ini Keys nicht erkennen. Ich schlage daher eines der folgenden ini Schemen vor, was es auch deutlich einfacher macht Fehler zu finden:

    Code
    [user1]
    Schliessfach=wert1|wert2
    Lager1=wert1|wert2
    Lager2=wert1|wert2
    Lager3=wert1|wert2
    [user2]
    Schliessfach=wert1|wert2
    Lager1=wert1|wert2
    Lager2=wert1|wert2
    Lager3=wert1|wert2

    oder:

    Code
    [Schliessfächer]
    user1=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3|alleWerteSpalte4
    user2=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3|alleWerteSpalte4
    [Lager1]
    user1=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    user2=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    [Lager2]
    user1=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    user2=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    [Lager3]
    user1=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    user2=alleWerteSpalte1|alleWerteSpalte2|alleWerteSpalte3
    Alles anzeigen

    Beim auslesen werden dann durch stringsplit die Einzelwerte wieder getrennt und können als input inhalt gesetzt werden.


    EDIT: Dir fehlt im ünrigen in deinen Funktionen zum sichtbar unsichtbar machen noch die sichtbarkeit der jeweiligen inputs.

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

    #cs
    Wenn man auf Schliessfach klickt sollten die Schliessfach controls auch sichtbar sein
    #ce

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

    For $i = 1 to UBound($aschliesfach1) -1
    GUICtrlSetState($aschliesfach1[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach2) -1
    GUICtrlSetState($aschliesfach2[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach3) -1
    GUICtrlSetState($aschliesfach3[$i], $GUI_SHOW)
    Next
    For $i = 1 to UBound($aschliesfach4) -1
    GUICtrlSetState($aschliesfach4[$i], $GUI_SHOW)
    Next

    [/autoit]

    Das selbe dann auch für die lagerbuttons 1-3 mit den jeweils korrekten arrays.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 03:20

    Zeile 39 "guisetstate()" muss ebenfalls raus, da machst du die gui erstmalig sichtbar, somit ist das sw_show vor der while Schleife wirkungslos, weil die GUI längst sichtbar ist.
    Was dein ursprünglichen Problem angeht hab ich keine Ahnung, weil ich noch keine Lust hatte dein Script auszuführen und mir das genauer anzusehn.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 02:57

    Damit du nichts von der Control Erstellung siehst (flackern...)solltest du eben

    GUISetState(@SW_SHOW)

    ganz ans Ende deiner GUI Erstellung setzen, also nachedem alle Controls erstellt und deren Sichtbarkeit bestimmt wurde erst die GUI sichtbar machen.


    Mit meinem letzten Satz meinte ich wohl das was du bereits in der Region

    #region Generate´s Hide

    machst. Keine Ahnung ob das in der ursprünglichen Script Fassung schon vorhanden war, wenn ja sollte das ja passen.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 00:27

    Vielleicht sinnvollerweise nicht ganz oben, sondern erst irgendwo nach deine GUI Erstellung, aber vor der while Schleife. Desweiteren dürfte vorm anzeigen der GUI noch der Aufruf mindestens einer deiner Hide/Show Funktionen notwendig sein, damit nur die Controls sichtbar sind die sichtbar sein sollen bei Programmstart.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 27. Dezember 2011 um 00:11

    Ich fang nochmal von oben an:

    du rufst beim Buttondruck zum Beispiel diese Funktion auf:

    _ButtonLager1()

    Dort machst du erstmal jedemenge Controls unsichtbar und andere sichtbar. soweit alles ok.
    Am Ende der Funktion rufst du dann aber noch

    _generateLagerSpalte($aSpalte1,1)
    _generateLagerSpalte($aSpalte2,275)
    _generateLagerSpalte($aSpalte3,545)

    auf. Das machst du also jedesmal wenn du diesen Button drückst.
    In der generate... Funktion erstellst du dann neue Label und Input Controls.

    Genau das selbe passiert auch bei den anderen Buttons wie

    _ButtonLager2()
    _ButtonLager3()
    _ButtonSchliessfach()

    Problem: Du erstells permanent neue Controls, was zum einen unnötig und zum anderen auch problematisch ist.
    Lösung: Ruf die Generate Funktionen nur einmal bei Programmstart auf und danach nie wieder.

  • Speichern/Laden Funktioniert nicht richtig ua.

    • misterspeed
    • 26. Dezember 2011 um 22:31

    Unabhängig vom eigentlichen Problem denke ich begehst du bereits bei der Erstellung der Controls einen gravierenden Fehler. Bei jedem Button Druck erstellst du die gesamten Spalten inputs neu, löschst die alten aber nicht und überschreibst dir lediglich die controlids im array. Das hat zur Folge, dass du bei jedem mal mehr Controls hast und die alten nicht mehr ansprechen kannst. Letzten Endes kann das zum einen zum Überschreiten des Control Limits von Autoit GUI's führen, zum anderen zu Anzeigefehlern und ggf. auch zu falschen Adressierungen beim Inhalte befüllen. Ob das ein oder anderen bei dir zutrifft konnte ich nur anhand des Quellcodes auf den ersten Blick jetzt nicht erkennen, jedoch rate ich dir dazu dies zunächst zu fixen.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™