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. Weisgarnix

Beiträge von Weisgarnix

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 29. Mai 2011 um 12:47

    Im Anhang hab ich mal eine Beispielgrafik gebastelt, um dir das einfachste Beispiel: Ziehen mit zurücklegen, zu erläutern.
    *Edit*: In die Tiefe gehts natrlich $AnzahlZiehungen weit/oft.

    Dateien

    ueberlegung1.png 19,16 kB – 0 Downloads
  • Combobox-Einträge durchlaufen (bei Abfrage)

    • Weisgarnix
    • 28. Mai 2011 um 22:18
    Zitat von autoBert

    Hallo WeisGarNix,

    du solltest vor allem ein kompilierbares Skript einstellen, denn folgende Fehler:

    Code
    >Running AU3Check (1.54.19.0)  from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3(184,44) : ERROR: syntax error (illegal character)
                $Zusammenstellungen[$lw2][0] = $
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3(185,44) : ERROR: syntax error (illegal character)
                $Zusammenstellungen[$lw2][1] = $
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3 - 2 error(s), 0 warning(s)
    !>20:11:10 AU3Check ended.rc:2
    >Exit code: 0    Time: 4.905

    werden gemeldet. Ausserdem solltest du auch die komplette INI und die anderen benötigten Dateien mit einstellen, dann hilft ja vielleicht jemand.

    Bis dahin ein kleines Beispiel-Programm mit ähnlichem Lösungsansatz:

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include
    #include
    #include
    #Include

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

    Const $sCSV = @ScriptDir & "\cboKFZ.TXT"
    Const $sElect = "bitte auswählen"
    Dim $aKFZ, $aSplit, $scboChr = ""
    _FileReadToArray($sCSV, $aKFZ)
    _ArraySort($aKFZ)
    For $i = 1 To UBound($aKFZ) - 1
    ConsoleWrite($i & $aKFZ[$i] & @CRLF)
    $scboChr &= $aKFZ[$i]& "|"
    Next
    ConsoleWrite($scboChr & @CRLF)

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

    $hGui = GUICreate("Combobox aus TXT-Datei", 250, 85, 302, 218)
    $idCboKFZ = GUICtrlCreateCombo($sElect, 8, 8, 200, 25)
    GUICtrlSetTip(-1,"Automarke auswählen")
    GUICtrlSetData(-1, $scboChr)
    $idBtnINFO = GUICtrlCreateButton("&Info", 5, 40)
    GUICtrlSetState(-1,$Gui_DISABLE)
    GUICtrlSetTip(-1,"MsgBox zeigen")
    $idBtnAll = GUICtrlCreateButton("&alle auslesen", 50, 40) ;read all
    GUICtrlSetTip(-1,"Programm beenden")
    $idBtnExit = GUICtrlCreateButton("Be&enden", 175, 40)
    GUICtrlSetTip(-1,"Programm beenden")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $idBtnExit
    Exit
    Case $idCboKFZ
    if GUICtrlRead($idCboKFZ) = $sElect Then
    GUICtrlSetState($idBtnINFO,$Gui_DISABLE)
    Else
    GUICtrlSetState($idBtnINFO,$Gui_ENABLE)
    EndIf
    Case $idBtnINFO
    MsgBox(0,"Info",GUICtrlRead($idCboKFZ))
    case $idBtnAll
    $sKFZ = _GUICtrlComboBox_GetList($idCboKFZ)
    MsgBox(0,"KFZ",$sKFZ)
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

    Alles anzeigen


    Hi. Danke dir erstmal, ich werde versuchen, es zu verstehen.
    Das mit den beiden $-Zeichen zu viel bitte ich zu entschuldigen, bei mir hab ichs schon rausgenommen, ich dachte, ich hätte das heir auch korrigiert, aber scheinbar fehlgedacht.

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 28. Mai 2011 um 16:19

    Im Optimalfall erklärst du mir, wie ich anhand von welchen Zahlen darauf komme, welche Zahlen beim aktuellen "Knoten" stehen, und wie ich dann daraus zum nächsten Knoten komme :P
    Sprich, du leistest die Denkarbeit und ich tippe es noch ab :D

    Zum Beispiel, wie kann ich anhand von welchen Zahlen den aktuellen Titel (T1.4.12..54.63.4.5.3.4.6 was auch immer da für Punkte und Zahlen stehen :D) bekommen?

  • Combobox-Einträge durchlaufen (bei Abfrage)

    • Weisgarnix
    • 28. Mai 2011 um 13:11

    Ich habe gelesen, nach 3 Tagen darf man pushen.
    *Push*

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 28. Mai 2011 um 13:08

    Gehen tuts so schon auch, ist halt die Brut-Force-Variante mim Kopf durch die Wand, und vor allem: nicht dynamisch! d.h., wie sieht dein Code aus, wenn es 4 Ziehungen gibt? Der soll ja dementsprechend reagieren oder etwa nicht, ist das Feld nur zum Gut-Aussehen da?^^

    PS: Mein Ansatz war jetzt eher, das alles erstmal in eine String-Variable zu speichern und dann am Ende das ganze abzuspeichern... Und ich würde den Ansatz von mir besser finden als sichnöffnende Editorfenster etc. :P

  • Tooltip bei MouseOver über InputBox

    • Weisgarnix
    • 28. Mai 2011 um 13:00

    Ich frag jetzt einfach mal hier:

    Wofür steht denn immer dieses
    - 10 Zeichen -
    ?

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 27. Mai 2011 um 16:12

    Wie gesagt, das komplizierte sind die Überlegungen, an welcher Stelle in deinem Beispielscirpt (xml) von oben das gewünschte aus welchen gegebenen werten generierst. im Prinzip sinds die einfachen kontrollstrukturen while und if, kompliziert ists, die passenden variablen für die while-schleifen zu benutzen und an korrekter Stelle zu erhöhen (/erniedrigen). Diese Überlegungen sind das schwere dran, ich habs noch nich ganz gepeilt, wie ich das lösen kann.

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 26. Mai 2011 um 21:51

    Hast du jemals überhaupt schonmal was programmiert?^^ Du fängst hier mit was verdammt kompliziertem an, dabei scheinst du nicht einmal zu wissen, was ein Array ist oO

    Setze vor die beiden Arrays:

    [autoit]

    Dim $AnzElement[9]
    Dim $NameElement[9]

    [/autoit]

    , um die Größe zu initialisieren.

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 26. Mai 2011 um 12:15

    Soweit bin ich gestern noch gekommen, vielleicht kannst du damit ja schon mal was anfangen:

    Spoiler anzeigen
    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GenQuellcode
    $temp=_Generate($AnzahlElementeGesamt, $AnzahlZiehungen, $AnzElement, $NameElement, $MitZuruecklegen)
    ClipPut($temp)
    Case $GenXml
    $temp=_Generate($AnzahlElementeGesamt, $AnzahlZiehungen, $AnzElement, $NameElement, $MitZuruecklegen)
    $datei = FileOpen("baum.xml", 9)
    FileWrite($datei, $temp)
    FileClose($datei)
    EndSwitch
    WEnd

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

    ; Diese Funktion erhält als In-Parameter:
    ; $AnzEleGes : Integer
    ; $AnzZiehn : Integer
    ; $AnzEle : Array, das Inputs enthält, die Integer enthalten
    ; $NameEle : Array, das Inputs enthält, die Strings enthalten
    ; $Zuruek : Radiobutton
    ; Diese Funktion gibt zurück:
    ; $code : String
    ;
    Func _Generate($AnzEleGes, $AnzZiehn, $AnzEle, $NameEle, $Zuruek)
    $code = "<?xml version="&Chr(34)&"1.0"&Chr(34)&" encoding="&Chr(34)&"UTF-8"&Chr(34)&"?>"&@CRLF
    $code &= "<bs:Brainstorm xmlns:bs="&Chr(34)&"http://schemas.microsoft.com/visio/2003/brainstorming"&Chr(34)&">"
    $code &= @CRLF&@CRLF&@CRLF
    ; Anzahl der verschiedenen Elemente auslesen
    $AnzVerschElemente=0
    While (GUICtrlRead($AnzEle[$AnzVerschElemente]) <> "")
    $AnzVerschElemente+=1
    If ($AnzVerschElemente = 9) Then
    ExitLoop
    EndIf
    WEnd ; Abgeschlossen.
    $AktuellElement=0 ; Der aktuell betrachtete Eintrag
    $AktuelleTiefe=0 ;Wie tief der Baum momentan ist / wie oft schon gezogen wurde.
    $code &= _SchreibeLeerzeichen($AktuelleTiefe)&"<bs:topic bs:TopicID="&Chr(34)&"T1"&Chr(34)&">"&@CRLF
    $AktuelleTiefe += 1
    $code &= _SchreibeLeerzeichen($AktuelleTiefe)&"<bs:text>Hauptthema</bs:text>"&@CRLF
    While ((($AktuelleTiefe <= $AnzZiehn) And ()) = False)
    ;
    return $code
    EndFunc

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

    Func _SchreibeLeerzeichen($AnzLeerzeichen)
    $lw2=0
    While ($lw2 <= $AnzLeerzeichen)
    $leerzeichen &= " "
    $lw2 = $lw2+1
    WEnd
    return $leerzeichen
    EndFunc

    [/autoit]

    Das kann noch nix, also testen brauchst du es noch nicht, aber wenn du möchtest, kannst du dich ja beim generieren der Unterbäume versuchen.
    Möglicherweise hilft dir Wikipedia, suche dort nach 2,4-Bäumen oder in google, deins wäre ein 1,X-Baum, wobei X zwischen 2 und 9 liegt und dein Buam außerdem für den Fall ohne Zurücklegen evtl nicht einmal ausgeglichen ist. Sowas hat man im Informatik-Studium (also 2,4-Bäume, ausgeglichen) im 2. Semester.
    Heute und morgen hatte ich eigentlich was anderes geplant und am Wochenende is hier so n Traditionsfeschdl, da hab ich kene Zeit :P
    Bis wann bräuchtest du das Geschenk für deinen Lehrer denn?

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 26. Mai 2011 um 00:40

    Das Generieren des Quellcodes ist schwer, da brauch ich wenigstens länger für, wenn ichs überhaupt schaffe.
    Deine Input-Felder musst du nachher auslesen, daher musst du ihnen eine Variable zuweisen, sosnt kannst du nie mehr darauf zugreifen.
    Für das bessere Abarbeiten solltest du Arrays verwenden:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Baumdiagramm Creator by Rawi Kumar V 1.0", 451, 492, 401, 225)
    $GenQuellcode = GUICtrlCreateButton("Quellcode", 48, 416, 129, 49, $WS_GROUP)
    $GenXml = GUICtrlCreateButton("XML Datei erstellen", 272, 416, 129, 49, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("Anzahl insgesamt:", 24, 24, 89, 17)
    $AnzahlElementeGesamt = GUICtrlCreateInput("", 120, 24, 65, 21)
    $Label6 = GUICtrlCreateLabel("Anzahl an Ziehungen:", 208, 24, 108, 17)
    $AnzahlZiehungen = GUICtrlCreateInput("", 368, 24, 73, 21)
    $Label2 = GUICtrlCreateLabel("1. Anzahl:", 24, 56, 51, 20)
    $Label3 = GUICtrlCreateLabel("2. Anzahl:", 24, 88, 51, 17)
    $Label9 = GUICtrlCreateLabel("3. Anzahl:", 24, 120, 51, 17)
    $Label10 = GUICtrlCreateLabel("4. Anzahl:", 24, 152, 51, 17)
    $Label11 = GUICtrlCreateLabel("5. Anzahl:", 24, 184, 51, 17)
    $Label12 = GUICtrlCreateLabel("6. Anzahl:", 24, 216, 51, 17)
    $Label13 = GUICtrlCreateLabel("7. Anzahl:", 24, 248, 51, 17)
    $Label14 = GUICtrlCreateLabel("8. Anzahl:", 24, 280, 51, 17)
    $Label15 = GUICtrlCreateLabel("9. Anzahl:", 24, 312, 51, 17)
    $Label4 = GUICtrlCreateLabel("Name der 1. Anzahl:", 216, 56, 100, 17)
    $Label5 = GUICtrlCreateLabel("Name der 2. Anzahl:", 216, 88, 100, 17)
    $Label16 = GUICtrlCreateLabel("Name der 3. Anzahl:", 216, 120, 100, 17)
    $Label17 = GUICtrlCreateLabel("Name der 4. Anzahl:", 216, 152, 100, 17)
    $Label18 = GUICtrlCreateLabel("Name der 5. Anzahl:", 216, 184, 100, 17)
    $Label19 = GUICtrlCreateLabel("Name der 6. Anzahl:", 216, 216, 100, 17)
    $Label20 = GUICtrlCreateLabel("Name der 7. Anzahl:", 216, 248, 100, 17)
    $Label21 = GUICtrlCreateLabel("Name der 8. Anzahl:", 216, 280, 100, 17)
    $Label22 = GUICtrlCreateLabel("Name der 9. Anzahl:", 216, 312, 100, 17)
    $Label7 = GUICtrlCreateLabel("Ziehen mit Zurücklegen:", 120, 352, 119, 17)
    $Label8 = GUICtrlCreateLabel("Ziehen ohne Zurücklegen:", 120, 376, 130, 17)
    $AnzElement[0] = GUICtrlCreateInput("", 120, 56, 65, 21)
    $AnzElement[1] = GUICtrlCreateInput("", 120, 88, 65, 21)
    $AnzElement[2] = GUICtrlCreateInput("", 120, 120, 65, 21)
    $AnzElement[3] = GUICtrlCreateInput("", 120, 152, 65, 21)
    $AnzElement[4] = GUICtrlCreateInput("", 120, 184, 65, 21)
    $AnzElement[5] = GUICtrlCreateInput("", 120, 216, 65, 21)
    $AnzElement[6] = GUICtrlCreateInput("", 120, 248, 65, 21)
    $AnzElement[7] = GUICtrlCreateInput("", 120, 280, 65, 21)
    $AnzElement[8] = GUICtrlCreateInput("", 120, 312, 65, 21)
    $NameElement[0] = GUICtrlCreateInput("", 320, 56, 121, 21)
    $NameElement[1] = GUICtrlCreateInput("", 320, 88, 121, 21)
    $NameElement[2] = GUICtrlCreateInput("", 320, 120, 121, 21)
    $NameElement[3] = GUICtrlCreateInput("", 320, 152, 121, 21)
    $NameElement[4] = GUICtrlCreateInput("", 320, 184, 121, 21)
    $NameElement[5] = GUICtrlCreateInput("", 320, 216, 121, 21)
    $NameElement[6] = GUICtrlCreateInput("", 320, 248, 121, 21)
    $NameElement[7] = GUICtrlCreateInput("", 320, 280, 121, 21)
    $NameElement[8] = GUICtrlCreateInput("", 320, 312, 121, 21)
    $MitZuruecklegen = GUICtrlCreateRadio("", 280, 352, 17, 17)
    GUICtrlCreateRadio("", 280, 376, 17, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GenQuellcode
    ;
    Case $GenXml
    ;
    EndSwitch
    WEnd

    [/autoit]

    Wie gesagt, die Funktion zum erstellen des Quellcodes wird happig. Weiß echt noch nich ob ich das schaff.

    PS: Du solltest keine Gesamtzahl angeben, sondern die lieber berechnen, das schließt nachher Fehler im Programm aus, wenn Gesamt 10 sein soll, aber die Summe der Teile nur 8 ist.

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 25. Mai 2011 um 23:15

    Im Prinzip hast du oben 3 Textboxen und davor jeweils ein Label, das dem Benutzer sagt, was in das Feld soll.
    Dann erstells du dir noch einen Button, da gibts dann in grün links drin "OnClick". Da klickst du rein und achtest darauf, dass der Radiobutton auf "Notify" steht.
    Dann klickst du auf Code erstellen.
    Sieht dann z.B. so aus:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=C:\Programme\AutoIt3\Extras\koda\Forms\Aufgabe.kxf
    $Form1 = GUICreate("AutoIt", 162, 122, 246, 235)
    $Label1 = GUICtrlCreateLabel("Anzahl der Freikarten:", 8, 12, 107, 17)
    $Input1 = GUICtrlCreateInput("", 120, 8, 33, 21)
    $Label2 = GUICtrlCreateLabel("Anzahl der Mädchen:", 8, 36, 105, 17)
    $Input2 = GUICtrlCreateInput("", 120, 32, 33, 21)
    $Label3 = GUICtrlCreateLabel("Anzahl der Jungen:", 8, 60, 95, 17)
    $Input3 = GUICtrlCreateInput("", 120, 56, 33, 21)
    $Button1 = GUICtrlCreateButton("XML-Dateiinhalt generieren!", 8, 88, 145, 25)
    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]

    Case $Button1
    EndSwitch
    WEnd

    [/autoit]

    Nach dem Case $Button1, was das Kontrollelement ist, das auf einen Klick reagieren soll, rufst du die Funktion auf, die du unten noch ausformulieren musst.
    Wie sieht denn das obige Beispiel als Bild aus? Wenn cih das richtig verstehe, ist der Baum nicht ausbalanciert, d.h., dass am Ende nicht eine 2er-Potenz an Blättern ganz rechts sind? also nicht jeder Knoten 2 Nachfolger hat? Im Obigen Beispielcode gibts 3 Freikarten, oder?

    Die Antwort auf die Fragen brauch ich noch, morgen kann ich mir das dannw eiter anschauen, aber vom prinzip her hier der statische Teil:

    [autoit]

    Case $Button1
    _Generate()
    EndSwitch
    WEnd

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

    Func _Generate()
    $content = "<?xml version="&Chr(34)&"1.0"&Chr(34)&" encoding="&Chr(34)&"UTF-8"&Chr(34)&"?>"&@CRLF
    $content &= "<bs:Brainstorm xmlns:bs="&Chr(34)&"http://schemas.microsoft.com/visio/2003/brainstorming"&Chr(34)&">"
    $content &= @CRLF&@CRLF&@CRLF
    EndFunc

    [/autoit]


    & verknüpft zwei Strings.
    Chr(34) sind die Gänsefüßchen (")
    $A &= ist eine Kurzschreibweise für $A = $A &
    @CRLF ist ein Zeilenumbruch.
    Anhand der Bezeichner für die T1.1.2.3.4 wie auch immer da die Benennung funktioniert, das erkenne ich an dem kleinen Beispiel da oben nicht so ganz, baust du dir die dynamisch zusammen. Genauso setzt du die Anzahl Karten und Anzahl Schüler um. denk dran, nicht statisch, sondern dynamisch über While-Schleifen. Sprich, du zählst z.b. für die Tiefe des Baumes die Freikarten runter. Dürfte allerdings recht kompliziert werden, allein für die Bezeichner dynamisch zu erstellen hab ich grad keinen guten Einfall. Vielleicht meldet sich noch ein Profi hier zu Wort :D
    Noch ein Hinweis am Ende: Das ist die einfachste und unschönste Art, keine kommentare, und mit globalen Variablen gearbeitet, aber darauf sollte es beim ersten Versuch noch nicht ankommen, alles mit Funktionen, die per Parameter arbeiten und einen Wert zurückgeben, zu lösen. Generell muss ich sagen hast du dir echt das einfachste rausgesucht wa?^^ Mein erster Versuch war zwar auch sowas in der Art, aber ohne dabei Schleifen zu brauchen ^^

  • Eine GUI mit Funktionen belegen?

    • Weisgarnix
    • 25. Mai 2011 um 22:55

    Die hilft der Koda Form Designer ;)
    Wechsel ind ein AutoIt-Installationsverzeichnis, dort auf Extras, da gibts dann glaub ich den ordner namens Koda. Darin müsste die Datei FD.exe oder so was liegen. Die öffnest du mal ;)

  • Problem mit While

    • Weisgarnix
    • 25. Mai 2011 um 17:25

    is übersichtlicher, wenn du schreibst
    While ($i<100)
    ; mach irgendwas
    Wend
    als ohenKlammern, vor allem wenn die Ausdrücke komplizierter werden.
    Ich würde aber auch nie auf die Idee kommen, While (1) für nen Dauerloop zu schreiben :D^^

  • Kontext-Menü Einträge erstellen

    • Weisgarnix
    • 25. Mai 2011 um 15:46

    Ist gebookmarkt, danke dir! ;)

  • Combobox-Einträge durchlaufen (bei Abfrage)

    • Weisgarnix
    • 25. Mai 2011 um 04:57

    Ums ganz salop auf den Punkt zu bringen, ich weiß nicht, wie ich aus der Combobox rausbekomme, welche Checkboxen anzukreuzen sind.

  • Neuling fragt.......: Zufallszahlen generieren, ohne eine doppelt zu erhalten

    • Weisgarnix
    • 25. Mai 2011 um 02:20

    Für Zufallselemente aus einem gegebenen, begrenzten Universum, soll heißen, du weißt, wie viele du aus wie vielen haben willst, wäre mein erster Ansatz immer ein Array.

    Aber zu deinem Hinweis in deinem letzten Beitrag:
    Erstens kannst du das Thema in deinem ersten Beitrag hier ganz oben selber umbenennen ;)
    Zweitens solltest du das nicht tun, sondern bei einem anderen Problem erneut suchen und gegebenenfalls ein neues Thema eröfnen, damit andere, die dasselbe Problem haben, dein Thema zu diesem Problem finden können.

  • Combobox-Einträge durchlaufen (bei Abfrage)

    • Weisgarnix
    • 25. Mai 2011 um 02:05

    Möglicherweise hab ich da was gefunden, per UDF: _GUICtrlComboBox_GetCurSel()
    Ich les da nur nicht raus, wie die Elemente der Combobox ihren index bekommen... :(

  • Combobox-Einträge durchlaufen (bei Abfrage)

    • Weisgarnix
    • 25. Mai 2011 um 01:58

    Hi. Ich bins wieder mit meinem altbekannten Programm, zu dem ich schon 2 oder 3 mal Hilfe gebraucht habe.
    Diesmal hab ich ebenfalls keinen blassen Schimmer, wie ich das anstellen könnte bzw. steh voll aufm Schlauch :(

    Es geht, wie oben im Titel ebschrieben, um die Stelle in der While 1-Schleife der GUI, die sich um die Combobox kümmert.
    Hier der Quellcode:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=icon.ico
    ;#AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Comment=AutoItstall
    #AutoIt3Wrapper_Res_Description=Installationsmenü
    #AutoIt3Wrapper_Res_Fileversion=0.0.0.1
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    AutoitSetOption("TrayIconHide" ,1)

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

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <array.au3>

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

    If(IniRead("settings.ini", "Einstellungen", "Hinweise", "ja")="ja") Then
    MsgBox(48,"Wichtige Hinweise","1.) Sie sollten Hardwaretreiber vor der Software installieren! Die Hardwaretreiber finden Sie auf den Installationsmedien, die der Hardware beim Kauf beiliegen." & @CRLF & @CRLF & "2.) Sie sollten ihre Virenschutzsoftware während den automatische Installationen unbedingt deaktivieren! Es wird nur installiert und keine Anwendung gestartet. Überprüfen Sie gegebenenfalls nach Abschluss aller Installationen ihren Computer durch einen manuellen Suchvorgang nach Viren." & @CRLF & @CRLF & "3.) Es werden Administratorrechte benötigt, unter Windows Vista und neueren Windows-Betriebssystemen muss UAC (User Account Control) deaktiviert werden, dies kann nach diesem Hinweis über den Konfigurieren-Button rechts oben im Menü geschehen." & @CRLF & @CRLF & "4.) Während den automatischen Installationen sollten Sie nicht am Computer arbeiten!" & @CRLF & @CRLF & "5.) Nach Abschluss aller automatischen Installationen erfolgt ein automatischer Neustart.")
    EndIf

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

    Dim $onlineoffline
    $ping = Ping("www.google.com")
    If $ping > 0 then
    $onlineoffline = "data\website_online.jpg"
    Else
    $onlineoffline = "data\website_offline.jpg"
    EndIf
    $Form2 = GUICreate("AutoItstall", 1024, 650, -1, -1)
    $Pic15 = GUICtrlCreatePic("data\header.jpg", 0, 0, 174, 48)
    ;GUICtrlSetTip(-1, "Website im Browser öffnen")
    GUICtrlSetCursor (-1, 0)
    $Pic16 = GUICtrlCreatePic("data\background.jpg", 174, 0, 706, 48)
    $Help = GUICtrlCreatePic("data\background_thin.jpg", 880, 0, 48, 48)
    $About = GUICtrlCreatePic("data\about.jpg", 928, 0, 48, 48)
    GUICtrlSetTip(-1, "Über dieses Programm")
    GUICtrlSetCursor (-1, 4)
    $Combo1 = GUICtrlCreateCombo("benutzerdefiniert", 648, 56, 369, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$CBS_DROPDOWNLIST))
    $Label33 = GUICtrlCreateLabel("Fertige Zusammenstellung auswählen", 464, 61, 181, 17)
    $Install_Markierte = GUICtrlCreateButton("Installiere markierte Software jetzt!", 8, 56, 193, 25)
    $Settings = GUICtrlCreatePic("data\settings.jpg", 976, 0, 48, 48)
    GUICtrlSetTip(-1, "Einstellungen")
    GUICtrlSetCursor (-1, 0)
    $PageControl1 = GUICtrlCreateTab(8, 88, 1012, 557)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")

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

    $AnzKategorien=IniRead("settings.ini","Einstellungen","Kategorien","1")
    $AnzZusammenstellungen=IniRead("settings.ini","Einstellungen","Zusammenstellungen","1")
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht der Pfad zur Konfigurationsdatei, für alle ungeraden n.
    $Kategorien=IniReadSection("settings.ini","Kategorien")
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht die Auswahl der Daten
    $tempZusammenstellungen=IniReadSection("settings.ini","Zusammenstellungen")
    ; Legt die Kategorien als Reiter-Array an.
    Dim $TabSheetKategorien[($AnzKategorien*2)-1]
    ; Legt die in jedem Reiter vorhandenen Elemente an...
    Dim $AktuellBildBox[$AnzKategorien]
    Dim $AktuellBild[$AnzKategorien]
    Dim $Software[$AnzKategorien]
    Dim $AktuellBeschreibungBox[$AnzKategorien]
    Dim $AktuellBeschreibung[$AnzKategorien]
    Dim $Beschreibung[$AnzKategorien]
    Dim $Grafik[$AnzKategorien]
    Dim $AktuellWebsite[$AnzKategorien]
    Dim $AktuellSprache[$AnzKategorien]
    Dim $AktuellInstall[$AnzKategorien]
    Dim $AktuellFreeware[$AnzKategorien]
    Dim $AktuellParameter[$AnzKategorien]
    Dim $AnzElemente[$AnzKategorien]
    Dim $AktuellWebsiteGrafik[$AnzKategorien]
    Dim $AktuellInstallGrafik[$AnzKategorien]
    ;$IchbaumirmeinenStringfuerdieComboboxhaltselber
    Dim $IbmmSfdCbhs
    $IbmmSfdCbhs=""
    ;[X][0]=Name, [X][1]=Daten
    Dim $Zusammenstellungen[$AnzZusammenstellungen][2]

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

    ;26 mögliche Elemente je Kategorie sollten reichen - passen ja eh nur 26 auf eine Seite...
    Dim $Checkboxen[$AnzKategorien][26]
    Dim $Icons[$AnzKategorien][26]
    Dim $Titel[$AnzKategorien][26]
    Dim $Hersteller[$AnzKategorien][26]
    Dim $ElementeBeschreibung[$AnzKategorien][26]
    Dim $ElementeBild[$AnzKategorien][26]
    Dim $ElementeWebsite[$AnzKategorien][26]
    Dim $ElementeSprache[$AnzKategorien][26]
    Dim $ElementeFreeware[$AnzKategorien][26]
    Dim $ElementeInstall[$AnzKategorien][26]
    Dim $ElementeParameter[$AnzKategorien][26]

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

    $lw1=0
    $lw2=0
    While ($lw1 < ($AnzKategorien*2))
    $TabSheetKategorien[$lw1] = GUICtrlCreateTabItem($Kategorien[$lw1+1][1])
    $inifile=$Kategorien[$lw1+2][1]

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

    $Beschreibung[$lw2] = GUICtrlCreateEdit("", 16, 120, 489, 65, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    $file0 = FileOpen(IniRead($inifile,"Daten","Beschreibung","fehlt.txt"), 0)
    GUICtrlSetData($Beschreibung[$lw2], FileRead($file0))
    FileClose($file0)

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

    $Grafik[$lw2] = GuiCtrlCreatePic(IniRead($inifile, "Daten", "Grafik", ""), 512, 120, 64, 64)

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

    $Software[$lw2] = GUICtrlCreateGroup("Software", 16, 191, 561, 442)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellBildBox[$lw2] = GUICtrlCreateGroup("Logo/Bild", 592, 120, 337, 277)
    $AktuellBild[$lw2] = GUICtrlCreatePic("", 600, 144, 320, 240)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellBeschreibungBox[$lw2] = GUICtrlCreateGroup("Beschreibung", 592, 416, 417, 217)
    $AktuellBeschreibung[$lw2] = GUICtrlCreateEdit("", 600, 433, 401, 193, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellWebsiteGrafik[$lw2] = GUICtrlCreatePic($onlineoffline, 950, 130, 48, 48)
    GUICtrlSetTip(-1, "Website im Browser öffnen")
    GUICtrlSetCursor (-1, 0)
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellSprache[$lw2] = GUICtrlCreatePic("data\german.jpg", 950, 200, 48, 48)
    GUICtrlSetTip(-1, "Sprache: deutsch")
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellFreeware[$lw2] = GUICtrlCreatePic("data\freeware.jpg", 950, 270, 48, 48)
    GUICtrlSetTip(-1, "Keine Freeware!")
    GUICtrlSetCursor (-1, 4)
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellInstallGrafik[$lw2] = GUICtrlCreatePic("data\install.jpg", 950, 340, 48, 48)
    GUICtrlSetTip(-1, "Jetzt installieren!")
    GUICtrlSetCursor (-1, 0)
    GUICtrlSetState(-1, $GUI_HIDE)

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

    ;Eintragen der Elemente in die Softwareliste
    $AnzElemente[$lw2] = IniRead($inifile, "Daten", "Elemente", 0)
    $lw3=0
    While ($lw3 < $AnzElemente[$lw2])
    ;...
    $temp = Mod($lw3, 2)
    If ($temp == 0) Then
    ;linke Spalte
    $Checkboxen[$lw2][$lw3] = GUICtrlCreateCheckbox("", 24, Floor(223+40*($lw3/2)), 16, 16)
    ;GUICtrlSetState(-1, $GUI_HIDE)
    $Icons[$lw2][$lw3] = GUICtrlCreateIcon(IniRead($inifile, "Element"&$lw3+1, "Icon", "data\setup.ico"), -1, 40, Floor(215+40*($lw3/2)), 32, 32)
    $Hersteller[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Hersteller", "unbekannter Hersteller"), 80, Floor(215+40*($lw3/2)))
    $Titel[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Name", "?")&" v"&IniRead($inifile, "Element"&$lw3+1, "Version", "1"), 80, Floor(231+40*($lw3/2)))
    Else
    ;Rechte Spalte
    $Checkboxen[$lw2][$lw3] = GUICtrlCreateCheckbox("", 296, 203+40*($lw3/2), 16, 16)
    ;GUICtrlSetState(-1, $GUI_HIDE)
    $Icons[$lw2][$lw3] = GUICtrlCreateIcon(IniRead($inifile, "Element"&$lw3+1, "Icon", "data\setup.ico"), -1, 296, 195+40*($lw3/2), 32, 32)
    $Hersteller[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Hersteller", "unbekannter Hersteller"), 352, 195+40*($lw3/2))
    $Titel[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Name", "?")&" v"&IniRead($inifile, "Element"&$lw3+1, "Version", "1"), 352, Floor(211+40*($lw3/2)))
    EndIf
    $file1 = FileOpen(IniRead($inifile, "Element"&$lw3+1, "Beschreibung", "fehlt.txt"), 0)
    $ElementeBeschreibung[$lw2][$lw3] = FileRead($file1)
    FileClose($file1)
    $ElementeBild[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Grafik", "")
    $ElementeWebsite[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "URL", "http://www.autoit.de")
    $ElementeSprache[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Sprache", "en")
    $ElementeFreeware[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Freeware", "ja")
    $ElementeInstall[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Setupdatei", "data\dummy.exe")
    $ElementeParameter[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Parameter", "")
    ;Laufvariable für die Elemente erhöhen
    $lw3=$lw3+1
    WEnd
    ;übriger Code für die einzelnen Kategorien
    ;Erhöhen der Laufvariablen, $lw1 zählt im Auslesearray, $lw2 zählt in den Zielarrays, beide zählen in den Kategorien hoch.
    $lw1=$lw1+2
    $lw2=$lw2+1
    WEnd
    GUICtrlCreateTabItem("")

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

    ;Combobox-Daten auslesen
    $lw1=0 ;geht bis Anzahl Zusammenstellungen mal 2 (Siehe ini-Struktur)
    $lw2=0 ;geht bis tatsächliche Anzahl Zusammenstellungen
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht die Auswahl der Daten
    while ($lw1 < ($AnzZusammenstellungen*2))
    ;String für die Combobox bauen
    $IbmmSfdCbhs = $IbmmSfdCbhs & $tempZusammenstellungen[$lw1][1] & "|"
    ;Daten einlesen zur späteren bequemeren Verwendung...
    $Zusammenstellungen[$lw2][0] = $$tempZusammenstellungen[$lw1][1]
    $Zusammenstellungen[$lw2][1] = $$tempZusammenstellungen[$lw1+1][1]
    $lw1=$lw1+2
    $lw2=$lw2+1
    WEnd
    ;Den letzten | entfernen...
    $temp1 = StringLeft($IbmmSfdCbhs,StringLen($IbmmSfdCbhs))
    GUICtrlSetData($Combo1, $temp1, "benutzerdefiniert")
    GUISetState(@SW_SHOW)

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

    $iAktTab = 0
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Install_Markierte
    _InstallNow()
    Case $Combo1
    Switch $Combo1
    Case "benutzerdefiniert"
    ; nix machen ;)
    Case $Zusammenstellungen[0][0] To $Zusammenstellungen[$AnzZusammenstellungen-1][0]
    ; Haken (Checkboxen) setzen, aber wie?
    EndSwitch
    Case $PageControl1
    $iAktTab = _GUICtrlTab_GetCurSel($PageControl1)
    Case $Checkboxen[$iAktTab][0] To $Titel[$iAktTab][$AnzElemente[$iAktTab] - 1]
    ConsoleWrite("Ksg-ID: " & $nMsg & @TAB)
    if mod($nMsg - $Checkboxen[$iAktTab][0],4) Then
    $iAktCheckBox = -1 ;es kann keine Checkbox sein
    else
    $iAktCheckBox = ($nMsg - $Checkboxen[$iAktTab][0]) /4
    GUICtrlSetData($Combo1, "benutzerdefiniert")
    EndIf
    ConsoleWrite("Checkbox: " & $iAktCheckBox & @TAB)
    if mod($nMsg - $Icons[$iAktTab][0],4) Then
    $iAktIcon = -1 ;es kann kein Icon sein
    else
    $iAktIcon = ($nMsg - $Icons[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktIcon)
    EndIf
    ConsoleWrite("Icon: " & $iAktIcon & @TAB)
    if mod($nMsg - $Hersteller[$iAktTab][0],4) Then
    $iAktHersteller = -1 ;es kann kein Hersteller sein
    else
    $iAktHersteller = ($nMsg - $Hersteller[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktHersteller)
    EndIf
    ConsoleWrite("Hersteller: " & $iAktHersteller & @TAB)
    if mod($nMsg - $Titel[$iAktTab][0],4) Then
    $iAktTitel = -1 ;es kann kein Titel sein
    else
    $iAktTitel = ($nMsg - $Titel[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktTitel)
    EndIf
    ConsoleWrite("Titel: " & $iAktTitel & @CRLF)
    case $AktuellInstallGrafik[$iAktTab]
    GUISetState(@SW_HIDE)
    RunWait($AktuellInstall[$iAktTab]&" "&$AktuellParameter[$iAktTab])
    GUISetState(@SW_SHOW)
    case $AktuellWebsiteGrafik[$iAktTab]
    ShellExecute($AktuellWebsite[$iAktTab])
    case $AktuellFreeware[$iAktTab]
    MsgBox(64,"Keine Freeware!","Die (dauerhafte) Benutzung dieser Software ist kostenpflichtig!"&@CRLF&"Sie können Ihre Registrierungsinformationen beim ersten Programmstart eingeben.")
    EndSwitch
    WEnd

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

    Func _UnMarkAll($cat, $anzelements)
    $temp=0
    While ($temp < $anzelements+1)
    GUICtrlSetBkColor($Hersteller[$cat][$temp], $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetBkColor($Titel[$cat][$temp], $GUI_BKCOLOR_TRANSPARENT)
    $temp=$temp+1
    WEnd
    GUICtrlSetState($AktuellFreeware[$cat], $GUI_HIDE)
    GUICtrlSetState($AktuellSprache[$cat], $GUI_HIDE)
    EndFunc

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

    Func _SelectOne($cat, $element)
    GUICtrlSetBkColor($Hersteller[$cat][$element], 0x7A96DF)
    GUICtrlSetBkColor($Titel[$cat][$element], 0x7A96DF)
    GUICtrlSetData($AktuellBeschreibung[$cat], $ElementeBeschreibung[$cat][$element])
    GUICtrlSetImage($AktuellBild[$cat], $ElementeBild[$cat][$element])
    $AktuellInstall[$cat] = $ElementeInstall[$cat][$element]
    $AktuellWebsite[$cat] = $ElementeWebsite[$cat][$element]
    $AktuellParameter[$cat] = $ElementeParameter[$cat][$element]
    If ($ElementeFreeware[$cat][$element] <> "ja") Then
    GUICtrlSetState($AktuellFreeware[$cat], $GUI_SHOW)
    EndIf
    If (StringCompare($ElementeSprache[$cat][$element], "de")=0) Then
    GUICtrlSetImage($AktuellSprache[$cat], "data\german.jpg")
    GUICtrlSetState($AktuellSprache[$cat], $GUI_SHOW)
    GUICtrlSetTip($AktuellSprache[$cat], "Sprache: deutsch")
    EndIf
    If (StringCompare($ElementeSprache[$cat][$element], "en")=0) Then
    GUICtrlSetImage($AktuellSprache[$cat], "data\english.jpg")
    GUICtrlSetState($AktuellSprache[$cat], $GUI_SHOW)
    GUICtrlSetTip($AktuellSprache[$cat], "Sprache: englisch")
    EndIf
    GUICtrlSetState($AktuellInstallGrafik[$cat], $GUI_SHOW)
    GUICtrlSetState($AktuellWebsiteGrafik[$cat], $GUI_SHOW)
    EndFunc

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

    Func _InstallNow()
    ; Schön aufbereiten in der Darstellung
    $lw1=0 ; Laufvariable für Kategorien
    $lw2=0 ; Laufvariable für Programme
    While ($lw1 < $AnzKategorien)
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    ; Farbe ändern auf rot
    GUICtrlSetData($Icons[$lw1][$lw2], "data\not_installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0xff0000)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0xff0000)
    GUICtrlSetState($Checkboxen[$lw1][$lw2], $GUI_DISABLE)
    Else;If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_UNCHECKED) Then
    ; ausgrauen
    GUICtrlSetData($Icons[$lw1][$lw2], "data\not_install.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0xe2e2e2)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0xe2e2e2)
    GUICtrlSetState($Checkboxen[$lw1][$lw2], $GUI_DISABLE)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    $lw1 = $lw1+1
    $lw2 = 0
    WEnd
    ; Nun wird installiert!
    $lw1=0 ; Reinitialisierung Laufvariable für Kategorien
    $lw2=0 ; Reinitialisierung Laufvariable für Programme
    While ($lw1 < $AnzKategorien)
    GUISwitch($Form2, $TabSheetKategorien[$lw1])
    if ($lw1 <> 1) Then
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    RunWait($ElementeInstall[$lw1][$lw2]&" "&$ElementeParameter[$lw1][$lw2])
    ; Farbe ändern auf grün
    GUICtrlSetData($Icons[$lw1][$lw2], "data\installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0x00ff00)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0x00ff00)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    ElseIf ($lw1 = 1) Then
    ; nix machen, wird erst als letzte durchlaufen :P
    EndIf
    $lw1 = $lw1+1
    $lw2 = 0
    WEnd
    ; Nun wird die oben ausgelassene Kategorie nachgeholt.
    $lw1 = 1
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    RunWait($ElementeInstall[$lw1][$lw2]&" "&$ElementeParameter[$lw1][$lw2])
    ; Farbe ändern auf grün
    GUICtrlSetData($Icons[$lw1][$lw2], "data\installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0x00ff00)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0x00ff00)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    GUISetState(@SW_HIDE, $Form2)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Neustart", 186, 82, -1, -1)
    $Form1Label1 = GUICtrlCreateLabel("Installationen abgeschlossen.", 8, 8, 143, 17)
    $Form1Label2 = GUICtrlCreateLabel("Der Computer wird in", 8, 32, 102, 17)
    $Form1Label3 = GUICtrlCreateLabel("25", 112, 32, 16, 17)
    $Form1Label4 = GUICtrlCreateLabel("Sekunden", 128, 32, 53, 17)
    $Form1Label5 = GUICtrlCreateLabel("heruntergefahren und neu gestartet!", 8, 56, 174, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $countdown = 25
    While ($countdown > 0)
    sleep(999)
    GUICtrlSetData($Form1Label3, $countdown&"")
    $countdown = $countdown - 1
    WEnd
    GUISetState(@SW_HIDE, $Form1)
    Shutdown(6)
    ;While 1
    ;$nMsg = GUIGetMsg()
    ;Switch $nMsg
    ; Case $GUI_EVENT_CLOSE
    ; Exit
    ;
    ;EndSwitch
    ;WEnd
    EndFunc

    [/autoit]


    So sehen die Daten der Ini-Datei aus:
    ;Elemente der Kategorie, mit ; voneinander getrennt. Kategorien mit | voneinander getrennt.
    Zusammenstellung1Name=Alle Freeware
    Zusammenstellung1Auswahl=1;2;3;4;5|3;6

    Meine erste Idee war mit StringSplit, was vermutlich auch gehen würde, wenn ich wüsste, welcher Eintrag in der Combobox ausgewählt ist und welcher Zahl das in meinem Array entspricht, das ja so aufgebaut ist: ;[X][0]=Name, [X][1]=Daten Vielleicht tuts mir irgend einer Suche, dass ich den Index rausbekomme, aber ich habe ja nicht mal den Namen, also was in der Combobox gerade ausgewählt ist :(

    PS: Kleine Orientierungshilfe in dem langen Code:
    Zeilen 1-95: Deklarationen etc.
    Zeilen 95-195: Initialisierung der Variablen
    Zeilen 195-255: While 1-Teil der GUI
    Ab zeile 255: Hilfsroutinen

  • Problem mit While

    • Weisgarnix
    • 25. Mai 2011 um 01:51

    Woah, schrecklich zu lesen für meine Augen, ich empfehle für alle Ausdrücke immer Klammern^^

  • Kontext-Menü Einträge erstellen

    • Weisgarnix
    • 25. Mai 2011 um 01:47

    jo, schau mal rein. Die Aktuelle Datei inkl. Pfad befidnet sich in der Variable %1, wird dir beim Blick in die Registry auch auffallen :D^^

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™