Mehrere Labels aus Array erstellen

  • Sry für die überschrift wusste nicht wie ich das genau erläutern soll.

    Schreibe gerade ein Programm welches alle Programme eines bestimmten Ordners ausliest und diese dann zum installieren anbietet.
    Die Programme liegen als *.exe Datei vor.
    Wenn das Programm startet werden die Anzahl der Programme und die Namen der Programme mit dem Status "0" in eine "Config.ini" Datei geschrieben.
    Das Klappt auch wunderbar.

    Jetzt kommt das Gui an die reihe. Ich möchte jetzt gerne genauso viele Checkboxen wie Programme im Ordner sind und hinter jeden Checkbox ein Label mit dem namen des jeweiligen Programms. Und wenn ich die Checkbox aktiviere möchte ich das in die "Config.ini" Datei der Status hinter dem Programmnamen auf "1" gesetzt wird.

    Sicher könnt ihr mir da weiterhelfen.

    MfG
    L0c4lh0st


    Hier der Sourcecode bis jetzt

    [autoit]


    ; Easy Install Thingy V1

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

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <File.au3>
    #include <GuiButton.au3>
    #include <GuiScrollBars.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>

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

    #RequieAdmin
    Opt("GUIoneventmode", 1)

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

    Global $Version = "1.0"
    Global $Name = "Easy Install Thingy"
    Global $Pics = @ScriptDir & "\Pics\"
    Global $Setups = @ScriptDir & "\Setups\"
    Global $Configs = @ScriptDir & "\Config\"
    $prognames = _FileListToArray($Setups,"*")

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

    $size = DirGetSize($Setups,1)
    If IsArray($size) Then
    IniWrite($Configs & "\Setup.ini","Setups", "Anzahl", $size[1])
    EndIf

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

    For $i = 1 to $size[1]
    IniWrite($Configs & "\Setup.ini","Programme", $prognames[$i], "0")
    Next

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

    ;Gui Start
    GUICreate($Name, 800, 600)
    GUICtrlCreatePic($Pics & "\header.JPG", 0, 0, 800, 97)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlSetFont(-1, 9, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetState(-1, $GUI_ENABLE)
    GUISetState(@SW_SHOW)

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



    While 1
    Sleep(10)
    WEnd

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

    Func _Exit()
    $Exit = MsgBox(262452,"Exit","Sind Sie sich sicher?")
    If $Exit = 6 Then
    Exit
    Endif
    EndFunc

    [/autoit]
  • Hi,
    hab' grad nicht viel Zeit, guck dir aber mal im Anhang die Funktion _editwin1 an.

    Dort mache ich sowas ähnliches. Ich erstelle dort dynamisch Felder (Input und Checkboxen) Ich schreibe dann die Werte auf ein Gerät im Netzwerk, geht natürlich auch in eine INI Datei.

    Gruß rabbit

  • Hi,

    wenn du dir das ansehen willst, kannst du in der INI Datei die IP Adresse durch eine gültige Webadresse ersetzen.
    Mit der Taste Edit kannst du dir dann das Ergebnis ansehen, stehen halt nur keine Werte drin.

    also 10.21.61.28 durch z.B. "www.wikipedia.de" ersetzen.

    in der INI Datei zeigt 'objidx1' wiweviele Felder angezeigt werden (max 64), 'nodim' gibt an welche der vorgenannten Felder als Checkboxen dargestellt werden.

    Gruß rabbit

  • Danke dir!
    Ich werde mich da mal druchlesen.
    Vll. werd ich ja schlau daraus^^

    MfG
    L0c4lh0sT

    Edit:
    So klappt jetzt soweit das mir die vorhandenen Einträge im GUI als checkbox angezeigt werden.
    Hab mir mal ein paar Codeschnipsel abgeguckt und verarbeitet. :)
    Hab jetzt auch nen Button zum Absenden erstellt aber ich bekomm jetzt die Funktion zum abspeichern in einer Ini nicht hin.

    Hier ist mal das komplette Projekt als Zip. Schmeisst bei Setups einfach ein paar .exe dateien rein.
    Wenn wir jetzt noch die funktion zum abschicken hinkriegen sind wir schon recht weit am ziel angekommen.


    €dit: Jetzt ist es auch möglich mehr als 17 Programme im Ordner zu haben. Im Gui werden diese jetzt nebeneinander dargestellt.
    €dit2: Hab gerade mal ein Fehler entdeckt. Wenn weniger als 17 Programme im Setups Ordner liegen zeigt er nix an.

    Neue Version - Fehler behoben
    autoit.de/wcf/attachment/4200/


    MfG
    L0c4lh0sT

    3 Mal editiert, zuletzt von L0c4lh0sT (27. März 2009 um 13:45)

  • Hi,

    vergiss das mit dem INI File. Brauchst du gar nicht

    Kopiere einfach alle Programme die du installieren willst in das Setup verzeichnis.

    Das Handle der Checkboxen speicherst du in einem Array ab. dann kannst du bei allen gucken was angehakt ist. Diese Dateien kannst du entweder direkt installieren oder schreibst die ausgewählten Dateien in ein Text file um danach die Installation auszuführen.

    Ich habe dir das mal in den Code reingebastelt.

    Gruß Rabbit

  • Hmm....
    Irgendwie finde ich keinen unterschied...
    Ist beides Identischer Code... ?(
    Kannst du nochmal gucken ob du mir wirklich das richtige geschickt hast?

  • Hmm...ok jetzt ist der Code anders.....

    Nur leider funktioniert er jetzt nich mehr^^

    Krieg folgenden Fehler:
    C:\Documents and Settings\L0c4lh0sT\Desktop\Easy Install Thingy\Easy Install Thingy.au3 (50) : ==> Array variable subscript badly formatted.:
    Dim $boxescount[$nvidx]
    Dim $boxescount[^ ERROR

    Was jetzt?

  • jou!

    hatte ich nicht gesehen. passiert wenn der Ordner Setups leer ist. da muss zumindest ein Programm drin liegen. Hatte ich übersehen, weil ich mir gleich einige Dateien reinkopiert hatte.

    nach: $nvidx = UBound($prognames)-1 noch eine Fehlerbeahndlung einbauen, falls $nvidx -1 ist.

    Gruß rabbit