GuiCtrlSetState will nicht

  • Hallo mal wieder,

    ich kämpfe mal wieder den ganzen Morgen
    mit mir selbst. Jetzt muß ich mich doch melden.

    Also:
    ich habe es geschafft mit Arrays Controls anzulegen (Checkboxen)
    Das klappt soweit prima.
    Dann habe ich einen Button "Select all" gemacht
    und das klappt nicht.
    Ich möchte also alle Controls anwählen und abwählen.

    Zum Nachvollziehen:
    Ich verwende die Namen aus einer ini. Die Controls
    werden angelegt.

    Spoiler anzeigen


    [Titel]
    1=Petra
    2=Klaus
    3=Lissi
    4=Norbert

    Hier mal mein Code

    [autoit]


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

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)
    GUISetState(@SW_SHOW)

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

    $var = IniReadSection(@ScriptDir & '\meine.ini',"Titel")

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

    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    EndIf

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

    ;Local $aktiv = True
    Local $arControl[15]
    #region Ausrichtung Controls
    $Startoben = 50
    $Startlinks = 70
    $progbarLinks = 170
    $oben = $Startoben
    $ctrlLinks = $Startlinks
    #endregion Ausrichtung Controls
    For $i = 1 to 14
    $oben += "25"
    $arControl[$i] = GUICtrlCreateCheckbox($var[$i][1],$ctrlLinks,$oben)
    $arControl[$i]= GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    next

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

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

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

    Case $SelectAll
    for $i = 1 to UBound($arControl)-1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState ($arControl[$i],$gui_checked)
    ;MsgBox(0,$i,$arControl[$i])
    next
    EndSwitch
    WEnd

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


    Case $SelectAll .... das stimmt was nicht!

    Liebe Grüße
    Ilse ;)

    3 Mal editiert, zuletzt von Ilse (11. Juni 2011 um 10:39)

  • Öhm ja du überschreibst die Checkbox Controlid ja auch mit der Controlid der Progressbar (Zeile 29), somit stehen in deinem Array keine Controlids der Checkboxen mehr und du kannst dadurch auch keine checkboxen mehr mit setstate verändern. Benutze für die Progressbars ein zweites Array oder verwende ein 2 dimensionales Array.

    • Offizieller Beitrag

    Außerdem erstellst Du zu viele Checkboxen (mehr als in der Inidatei vorhanden). Das führt zu einem Abbruch des Skripts, weil das Array $var gar nicht so viele Einträge besitzt.
    Besser ist es, wenn Du beim erstellen UBound verwendest:

    Spoiler anzeigen
    [autoit]


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

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)
    GUISetState(@SW_SHOW)

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

    Dim $var[4][2] = [[1, 'Petra'], [2, 'Klaus'], [3, 'Lissi'], [4, 'Norbert']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Local $arControl[UBound($var)][2]
    #region Ausrichtung Controls
    $Startoben = 50
    $Startlinks = 70
    $progbarLinks = 170
    $oben = $Startoben
    $ctrlLinks = $Startlinks
    #endregion Ausrichtung Controls
    For $i = 0 To UBound($arControl) - 1
    $oben += "25"
    $arControl[$i][0] = GUICtrlCreateCheckbox($var[$i][1], $ctrlLinks, $oben)
    $arControl[$i][1] = GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    Next

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

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

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

    Case $SelectAll
    For $i = 0 To UBound($arControl) - 1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    ;MsgBox(0,$i,$arControl[$i])
    Next
    EndSwitch
    WEnd

    [/autoit]
  • Hallo Misterspeed,

    es klappt nun, dank dir.

    Habe noch ein kleines Problem mit der Hintergrundgrafik!
    Wenn eine Grafik dahinter ist habe ich folgende Probleme:

    1. Wenn ich auf die Checkbox klicke erscheint erst der Button (vorher nicht sichbar)
    2. Wie kann ich die Checkboxbezeichner transparent machen?

    Hier nochmal der Code

    [autoit]


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

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetBkColor(-1, -2)
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)
    GUISetState(@SW_SHOW)

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

    $var = IniReadSection(@ScriptDir & '\meineIni.ini',"Titel")

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

    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    EndIf

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

    ;Local $aktiv = True
    Local $arControl[15]
    Local $arprogbar[15]
    #region Ausrichtung Controls
    $Startoben = 50
    $Startlinks = 70
    $progbarLinks = 170
    $oben = $Startoben
    $ctrlLinks = $Startlinks
    #endregion Ausrichtung Controls
    For $i = 1 to 14
    $oben += "25"
    $arControl[$i] = GUICtrlCreateCheckbox($var[$i][1],$ctrlLinks,$oben)
    $arprogbar[$i]= GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    next

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

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

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

    Case $SelectAll
    for $i = 1 to UBound($arControl)-1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState ($arControl[$i],$gui_checked)
    ;MsgBox(0,$i,$arControl[$i])
    next
    EndSwitch
    WEnd

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

    Habe es mit GUICtrlSetBkColor(-1, -2) nicht geschafft!

    Liebe Grüße
    Ilse ;)

  • @ Misterspeed
    das mit dem Button klappt, nur die Transparenz der Controls noch nicht!

    Hallo Oscar,
    da hatte ich auch schon daran gedacht
    hm das Problem bei uBound ist
    ich wollte mehrere Spalten machen
    also 3 Spalten mit je 10 Einträgen! Auch mehrere Schleifen
    For $i = 1 to 10....
    For $i = 11 to 20...


    nur die Transparenz macht mir noch Probleme!

    Grüße
    Ilse ;)

  • noch ein Problem....
    wie schaffe ich es die Progressbars zu sehen.
    Die werden ja in der Schleife erstellt.
    Die Controls und die Buttons sind jetzt oben
    aber meine Progressbars nicht!

    [autoit]


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

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)

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

    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetBkColor(-1, -2)
    $None = GUICtrlCreateButton("None", 556, 528, 75, 25)
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)
    GUISetState(@SW_SHOW)

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

    $var = IniReadSection(@ScriptDir & '\meineIni.ini',"Titel")

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

    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    EndIf

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

    ;Local $aktiv = True
    Local $arControl[15]
    Local $arprogbar[15]
    #region Ausrichtung Controls
    $Startoben = 50
    $Startlinks = 70
    $progbarLinks = 170
    $oben = $Startoben
    $ctrlLinks = $Startlinks
    #endregion Ausrichtung Controls
    For $i = 1 to 14
    $oben += "25"
    $arControl[$i] = GUICtrlCreateCheckbox($var[$i][1],$ctrlLinks,$oben)
    $arprogbar[$i]= GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    next

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

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

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

    Case $SelectAll
    for $i = 1 to UBound($arControl)-1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState ($arControl[$i],$gui_checked)
    ;MsgBox(0,$i,$arControl[$i])
    next

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

    Case $None
    for $i = 1 to UBound($arControl)-1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState ($arControl[$i],$gui_unchecked)
    ;MsgBox(0,$i,$arControl[$i])
    next
    EndSwitch
    WEnd

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

    Grüße
    Ilse ;)

  • also 3 Spalten mit je 10 Einträgen! Auch mehrere Schleifen
    For $i = 1 to 10....
    For $i = 11 to 20...

    Wenn ich dich richtig verstehe sollen also die Elemente 11-20 wieder ganz oben beginnen und entsprechend weit nach rechts verschoben sein, also check1->prog1->check11->prog11->chck21->prog21 usw. ?
    Wenn ja brauchst du doch dafür keine fixe Schleifendurchlaufszahl und erst recht nicht mehrere Schleifen. Du änderst einfach die werte von oben und links (so hiessen die Variablen glaube ich) sobald $i = 11 ist bzw auch sobald $i=21 ist usw.

    [autoit]


    For $i = 1 to ubound($arrayname) -1
    if $i = 11 then
    $oben = 0 ; ka wo du mit oben anfängst, also hier statt der null einfach den Wert den auch das Element 1 hatte
    $ctrlinks = 200 ; ka da wo eben spalte 2 anfangen soll
    $progbarlinks = 260 ; auch nur geraten, eben da wo die progbar Spalte 2 landen soll
    endif
    ; das selbe spiel ggf. noch für spalte 3 usw.
    $oben += "25"
    $arControl[$i] = GUICtrlCreateCheckbox($var[$i][1],$ctrlLinks,$oben)
    $arprogbar[$i]= GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    next

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

    Sofern du die Anzahl der vertikalen elemente variabel halten willst, also immer alle Elemente gleichmässig auf 3 spalten aufteilen willst benutzt du in der if Bedingung keine festen werte sondern sowas hier:

    [autoit]


    if $i = (ubound($arrayname) - 1 ) / 3 then ; Daten für Spalte 2 usw, siehe oben (hier sollte vllt noch ein Round eingesetzt werden um Probleme zu vermeiden wenn es sich nicht um Ganzzahlen handelt)

    [/autoit]
    • Offizieller Beitrag

    Checkboxen lassen sich nicht transparent darstellen. Da muss man etwas tricksen (leere Checkbox und ein Label dahinter). Damit man aber trotzdem auf das Label klicken kann (zum Haken setzen), ist der OnEventMode besser geeignet.
    Damit man die Progressbars sieht solltest Du GUISetState erst benutzen nachdem alle GUI-Elemente erstellt wurden. Anderenfalls musst Du sie einzeln nach vorn holen.
    Für mehrere Spalten braucht man die Position lediglich errechnen, dann funktioniert es auch in einer Schleife. Hier mal ein Beispiel, wo das beschriebene eingebaut ist:

    Spoiler anzeigen
    [autoit]


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

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[8][2] = [[1, 'Petra'], [2, 'Klaus'], [3, 'Lissi'], [4, 'Norbert'], [5, 'Paul'], [6, 'Carla'], [7, 'Fritz'], [8, 'Tanja']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Local $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', 70 + Int($i/4) * 300, 50 + Mod($i, 4) * 25, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], 90 + Int($i/4) * 300, 50 + Mod($i, 4) * 25)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress(170 + Int($i/4) * 300, 50 + Mod($i, 4) * 25, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc

    [/autoit]

    P.S.: Verwende für Deinen Quelltext bitte Spoiler.

  • das habe ich hinbekommen....
    Nur die Transparenz der Controls auf der Grafik nicht!!!!

    Checkboxen: (Bezeichner auf der Grafik sind weiß) sollen aber Transparent sein!
    Progressbars: sind im Hintergrund. (Werden von der Hintergrundgrafik verdeckt!)

    sonst läuft alles
    ;) Ilse

  • Hallo Oscar,

    ich kann die kpl. Ini nicht einlesen.
    Die Spalten werden nach rechts verschoben....
    Hier mal eine Beispiel-Ini mit Ländern

    Spoiler anzeigen


    [Titel]
    1=United States
    2=Argentina
    3=Austria
    4=Australia
    5=Belgium
    6=Brazil
    7=Canada
    8=China
    9=Czech Republic
    10=Denmark
    11=Finnland
    12=Germany
    13=Greece
    14=France
    15=Hungary
    16=Hong Kong
    17=Ireland
    18=India
    19=Italy
    20=Korea

    Ich müße irgendwie am Anfang bestimmen können:
    Wieviele Spalten ich ungefähr brauche damit alle Einträge der jeweiligen ini
    da hinein passen.
    Die inis sind immer unterschiedlich groß

    z.B. 20 Länder oder 50 Namen...

    huh ...
    Grüße Ilse ;)

    • Offizieller Beitrag

    Achso!
    Die Anzahl der Spalten ist abhängig von der Anzahl der benutzten Zeilen.
    Ich habe das Beispiel mal etwas geändert, damit Du die Anzahl der Zeilen entsprechend anpassen kannst (siehe Kommentare):

    Spoiler anzeigen
    [autoit]


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

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[18][2] = [[1, 'Petra'],[2, 'Klaus'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', 70 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], 90 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress(150 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit]
  • Hallo Oscar,
    super, hm aber
    da ist noch irgendwo was nicht in Ordnung.

    Wenn ich die ini einlese,
    dann bleibt die erste Checkbox leer.
    Die Zweite Checkbox darunter erhält aber den ersten Eintrag.

    [ ]
    [ ] erster Ini Eintrag


    Wenn ich
    For $i = 1 To UBound($arControl) - 1

    stimmt es, nur die erste Spalte hängt zu tief!
    Die Zweite und die dritte Spalte ist normal!
    Eine Idee woran das liegen kann?

    ;) Ilse

  • Ja das hat geklappt.
    eine Frage noch:
    Kann man irgendwie für alle Spalten
    den Abstand von Oben bestimmen?
    Ich meine daß alles etwas runterrutschen kann.

    Wenn ich andere Inis einlese sieht das immer etwas komisch aus.

    Das wäre super.

    ;) Ilse

    • Offizieller Beitrag

    Ich hab's mal in Variablen gepackt:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[19][2] = [[18,0],[1, 'Petra'],[2, 'Klaus'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf
    _ArrayDelete($var, 0)
    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Links = 50
    Dim $Oben = 20
    Dim $Zwischen = 25
    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress($Links + 80 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit]
  • 1000 Dank Oscar
    Bin echt begeistert!
    Ich konnte mich nicht früher melden
    meine Internetverbindung ist gruselig (1000 er Leitung)
    manchmal keine Verbindung...Absturz
    Beneide alle anderen mit einer 16000 er Leitung

    Auf jedenfall freue ich mich sehr daß das so toll klappt.
    Nochmal vielen vielen Dank

    Liebe Grüße
    Ilse ;)

  • Hallo zusammen,

    ich hoffe das Oscar das ganze liest.
    Ich habe noch ein Problem mit der Schriftgröße bei den Zeilen:
    Wenn ich die Größe ändere (8 ist wirklich sehr klein)
    z.B. GUICtrlSetFont(-1, 9, 500, 0, "Arial")
    dann wird ein Zeilenumbruch gemacht!

    Beispiel:

    [autoit]


    ;Schriftgröße 8 = ok!
    ; United States
    ;Schriftgröße 9 sieht so aus
    ;United
    ;States
    ;States ist nichtmehr sichbar!

    [/autoit]


    ...obwohl noch genügen Platz bis zur Progressbar ist.
    Hier nochmal der Code mit der Schriftgröße

    [autoit]


    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetFont(-1, 9, 500, 0, "Arial") ; hier habe ich die Schriftgröße geändert
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress($Links + 130 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 14)
    Next

    [/autoit]

    Liebe Grüße
    ;) Ilse