GUI erstellung in einer FOR Schleife (Gescheitert / Aufgegeben)

  • Hi.

    Ich habe hier ein Problem bei dem ich nicht weiter komme.
    Das Programm selbst soll ähnlich wie eine Datenbank verschiedene werte auflisten.
    Dabei sollen Firmen, Firmeninhaber und deren Telefonnummern angezeigt werden.


    Da immer mal wieder eine neue Firma hinzukommt und eine andere geht muss das relativ variabel sein.

    Dann bin ich auf die Idee gekommen, alles in einer FOR Schleife zu packen.
    Die entsprechenden werte, wie zB aktuelle anzahl der Firmen, Name der Inhaber usw wird (vorerst) in einer ini-Datei gespeichert und ausgelesen.
    Das mit der INI-Datei funktioniert ganz gut, aber das GUI lässt sich bei mir nicht in der FOR Schleife aufbauen.

    Kleinerer Ausschnitt der Schleife:

    [autoit]

    For $i = 0 To UBound($Firmenzahl) -1
    $Firma = IniRead(@scriptdir & "Datenbank" & $aco, "id0", "firma", "0")
    $Firm[$i] = GUICtrlCreateTabItem($Firma)
    $btn_delete_[$i] = GUICtrlCreateButton("Firma entfernen", 16, 432, 89, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetTip(-1, $Firma)
    $btn_edit_[$i] = GUICtrlCreateButton("Firma bearbeiten", 112, 432, 89, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetTip(-1, $Firma)
    $Label_A_[$i] = GUICtrlCreateLabel("Telefon: Firma", 296, 72, 72, 18)
    $Label_B_[$i] = GUICtrlCreateLabel("Telefon: Privat", 480, 72, 73, 18)
    For $j = 0 to UBound($nameARR) - 1
    $nameARR[$j] = IniRead(@scriptdir & "Datenbank" & $aco, "id0", "name" & $j, "0")
    $List_Name_1 = GUICtrlCreateList($nameARR[$j], 24, 56, 201, 104)
    Next
    For $k = 0 to UBound($telfARR) - 1
    $telfARR[$k] = IniRead(@scriptdir & "Datenbank" & $aco, "id0", "telf" & $k, "0")
    Next
    For $l = 0 to UBound($telpARR) - 1
    $telpARR[$l] = IniRead(@scriptdir & "Datenbank" & $aco, "id0", "telp" & $l, "0")
    Next
    Next

    [/autoit]

    INI-Datei:

    mfg Taliis

    Einmal editiert, zuletzt von Taliis (4. November 2011 um 13:27)

  • Morgen, warum so umständlich? :P ich würde die INI Datei so gestalten

    Code
    [Firmen]
    %Firmenname%=%Straße$;%PLZ%;%Inhaber%;%wasauchimmer%

    nun ist es sehr einfach an die Daten der Firma zu kommen und dies auch darzustellen, INI Datei auslesen und in einer Schleife dann eintragen lassen , natürlich zuvor den String aus der INI Datei mit StringSplit wieder in die Bestandteile zerlegen :)

    Gruß Marvin

  • Naja , also ich sehe kein Problem dass jetzt einzubauen ^^ du musst nur die INI auslesen und anhand der Einträge in der INi dir dann Dynamisch deine Input Felder erzeugen ..?
    Wo ist das Problem?

    Gruß Marvin

  • Das Problem ist, dass das GUI einfach nur den Hintergrund erstellt, aber nicht die Tabs in der FOR schleife.
    Komischerweise funktioniert das hier:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>

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

    $anzahl = int(5)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 454, 192, 114)
    For $i = 0 to $anzahl
    $Tab1 = GUICtrlCreateTab(76, 46, 497, 355)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet_" & $i)
    GUICtrlCreateTabItem("")
    Next
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Aber das Problem hierbei ist, dass die Variablen der Tabs alle den selben Namen haben. So kann man die später nicht mehr bearbeiten, wenn eine Firma die Partnerschaft (oder was auch immer) beendet.
    $Tab1 müsste zB sich so verändern, dass die 1 weiter steigt. Die beste Möglichkeit wäre ein Array, aber dann funktioniert das nicht mehr, wie im ersten Post
    Irgendwas habe ich bei den Arrays falsch gemacht, aber ich finde den Fehler dort nicht.

  • Ich gebe auf.
    Mein Programmierverständnis reicht noch nicht für ein solches Programm.

    Vielleicht probier ich das ganze mal in Excel.

  • Hallo Taliis,
    anstatt aufzugeben würde ich Dir empfehlen, die Daten der Kunden in einer Excel-Tabelle bzw. in einem Excel-Arbeitsblatt zu speichern und im Programm dann darauf beim Auslesen und Ändern zuzugreifen.
    Schau Dir dazu am besten in der AuoIt Hilfe die Excel-Funktionen beginnend bei

    [autoit]

    _ExcelBookOpen()

    [/autoit]


    an.
    Wenn Du etwas fortgeschrittener bist, kannst Du auch bequem com-Objekte in Verbindung mit Excel verwenden.