Inputfelder $GUI_Enable durch Checkbox $GUI_Checked und vice versa

  • Hallo Leute,

    wenn ich das mal aufgreifen darf - habe nämlich ein ähnliches Problem.

    Habe vor kurzem auch diese Eigenschaft implementiert, dass die Input-Felder erst aktiv werden wenn die CheckBox 'checked' ist.
    Das ganze hatte ich sogar schon, wie hier auch gesagt wurde, in die GUI-Schleife eingebaut bzw. in die Switch-Case-Abfrage.

    Sieht so aus:

    Spoiler anzeigen
    [autoit]

    Case $agCB[0]
    GUICtrlSetState($agIn[0], $GUI_Enable)
    GUICtrlSetState($agIn2[0], $GUI_Enable)
    Case $agCB[1]
    GUICtrlSetState($agIn[1], $GUI_Enable)
    GUICtrlSetState($agIn2[1], $GUI_Enable)
    Case $agCB[2]
    GUICtrlSetState($agIn[2], $GUI_Enable)
    GUICtrlSetState($agIn2[2], $GUI_Enable)
    Case $agCB[3]
    GUICtrlSetState($agIn[3], $GUI_Enable)
    GUICtrlSetState($agIn2[3], $GUI_Enable)
    Case $agCB[4]
    GUICtrlSetState($agIn[4], $GUI_Enable)
    GUICtrlSetState($agIn2[4], $GUI_Enable)
    Case $agCB[5]
    GUICtrlSetState($agIn[5], $GUI_Enable)
    GUICtrlSetState($agIn2[5], $GUI_Enable)
    Case $agCB[6]
    GUICtrlSetState($agIn[6], $GUI_Enable)
    GUICtrlSetState($agIn2[6], $GUI_Enable)
    Case $agCB[7]
    GUICtrlSetState($agIn[7], $GUI_Enable)
    GUICtrlSetState($agIn2[7], $GUI_Enable)
    Case $agCB[8]
    GUICtrlSetState($agIn[8], $GUI_Enable)
    GUICtrlSetState($agIn2[8], $GUI_Enable)
    Case $agCB[9]
    GUICtrlSetState($agIn[9], $GUI_Enable)
    GUICtrlSetState($agIn2[9], $GUI_Enable)
    Case $agCB[10]
    GUICtrlSetState($agIn[10], $GUI_Enable)
    GUICtrlSetState($agIn2[10], $GUI_Enable)

    [/autoit]

    Hier nun meine zwei Fragen:

    • Kann ich diese Menge an Cases auch über ein For-Schleife abwickeln innerhalb der Switch-Case? O.o
    • Wie kann ich das ganze umgekehrt machen, dass die Input-Boxen wieder 'gui_disable' sind wenn man den Haken rausmacht? Setze ich nämlich einfach nochmal soviele Cases mit umgekehrter Eigenschaft (also 'Case $agCB[1] = 0') dann bekomm ich nur ein Flimmern in die Boxen :huh:

    Vielleicht hat mir jemand nen Tipp :)

    Danke schonmal Leute


    Edit BugFix:

    Bitte keine Crosspostings. Da du jetzt einen eigenen Thread eröffnet hast, lösche ich mal den identischen Post aus dem anderen Thread.

    Edit Towacom:
    Jup richtig - Sorry mein Fehler. Wollte den alten noch löschen habs aber vergessen. Keine Absicht.

    3 Mal editiert, zuletzt von Towacom (16. Juli 2008 um 15:42)

  • Ok sorry - dachte da gibts auch so schon ne Möglichkeit was zu sagen.
    Naja... hab nicht alle Eventualitäten bedacht *g

    Hier der komplette Code der main-func:

    Spoiler anzeigen
    [autoit]

    Func _main()

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

    ;~ ******************** Temp-variables ********************
    Local $fileexist, $file_temp, $edit_last, $GUI_Msg
    Local $ar_adate

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

    ;~ ******************** Delete last record in INI ********************
    IniWrite('options.ini', 'Options', 'Lastrun', '')

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

    ;~ ******************** File check operations ********************
    DirCreate('lib')

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

    If Not FileExists('Options.ini') Then FileInstall('Options.ini', 'Options.ini')
    If Not FileExists('lib/Logo.jpg') Then FileInstall('lib/Logo.jpg', 'lib/Logo.jpg')
    If Not FileExists('lib/schliessen.ico') Then FileInstall('lib/schliessen.ico', 'lib/schliessen.ico')
    If Not FileExists('lib/loeschen.ico') Then FileInstall('lib/loeschen.ico', 'lib/loeschen.ico')
    If Not FileExists('lib/drucken.ico') Then FileInstall('lib/drucken.ico', 'lib/drucken.ico')
    If Not FileExists('lib/speichern.ico') Then FileInstall('lib/speichern.ico', 'lib/speichern.ico')

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

    If FileExists('meldung.html') = 1 Then FileDelete('meldung.html')

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

    _createDB()

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

    #Region ### START Koda GUI section ### Form=Haupt-GUI.kxf

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

    GUICreate($firma & ": Ausschuss Erfassung " & $abteilung & " by ToWaCom", 1050, 750, 187, 109)
    GUICtrlCreatePic($logo, 950, 0, 100, 100, 0)
    GUICtrlCreateLabel('Version ' & FileGetVersion(@ScriptName), 950, 110)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

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

    GUICtrlCreateLabel("Meldedatum:", 950, 125, 120, 20)
    GUICtrlSetFont(-1, 10, 600, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x006400)
    $save_date = GUICtrlCreateDate('', 950, 145, 85, 25, $DTS_SHORTDATEFORMAT)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUICtrlCreateLabel("Ausschusserfassung " & $abteilung, 45, 20, 356, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateGroup(" Info ", 40, 70, 595, 55)
    GUICtrlCreateLabel("Diese Software ist lediglich für die Abteilung " & $abteilung & " der Firma " & $firma & "! Sie darf nicht von anderen", 50, 85, 579, 17)
    GUICtrlCreateLabel("Abteilungen verwendet werden!", 50, 100, 154, 17)
    GUICtrlCreateLabel("Bitte füllen Sie alle Felder komplett aus bevor Sie fortfahren! Danke.", 205, 100, 322, 17)

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

    ;~ ******************** Begin TAB section ********************
    GUICtrlCreateTab(15, 155, 1024, 463)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    ;~ ******************** TAB 1 ********************
    GUICtrlCreateTabItem("Hauptdaten")

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

    ;~ ******************** Group quantity details ********************

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

    Dim $amenge, $fmenge

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

    GUICtrlCreateGroup("Mengenangaben", 33, 196, 401, 86)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Ausschuss Menge (Stück):", 78, 221, 184, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $amenge = GUICtrlCreateInput("", 268, 216, 151, 24)
    GUICtrlSetTip(-1, 'Bitte geben Sie die reine Ausschussstückzahl an.', 'Ausschussmenge eingeben', 1, 1)
    GUICtrlCreateLabel("Fertigungsmenge (inkl. Ausschuss):", 48, 251, 214, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $fmenge = GUICtrlCreateInput("", 268, 246, 151, 24)
    GUICtrlSetTip(-1, 'Bitte geben Sie die gesamte gefertigte Menge ein.' & @CRLF & 'D.h. die Gesamtmenge inkl. Ausschussstückzahl!', 'Fertigungsmenge eingeben', 1, 1)

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

    ;~ ******************** Group waste reasons ********************
    GUICtrlCreateGroup("Ausschuss Gründe", 35, 305, 400, 300)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    Dim $y = 305, $agCB[11], $agIn[11], $agIn2[11], $num
    For $i = 0 To UBound($agCB) - 1
    $y += 25
    If $i < UBound($agCB) - 1 Then
    $num = $i + 1
    Else
    $num = 99
    EndIf
    $agCB[$i] = GUICtrlCreateCheckbox($num & ". " & Eval("G" & $i + 1), 50, $y, 150, 17)
    $agIn[$i] = GUICtrlCreateInput("", 200, $y, 50, 20)
    GUICtrlSetLimit(-1, 10)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $agIn2[$i] = GUICtrlCreateInput("", 255, $y, 150, 20)
    GUICtrlSetLimit(-1, 200)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Next

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

    #cs ******************** Group message details ********************
    $wo_id -> Fertigungsauftragsnummer $ps_id -> Leitzahl Arbeitsgang
    $radio_FAart -> Erstfertigung, Nacharbeit oder Zusatzarbeit
    $save_date -> Datum der Ausschussmeldung

    $adate -> Datum des Ausschuss-Buchungsdatums (Ausschussanfall)
    $input_worker -> Namen der Arbeiter, die den Auftrag bearbeiten
    #ce **************************************************************************

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

    Dim $wo_id, _
    $ps_id, _
    $combo_teilnr, _
    $combo_FAart, _
    $radio_FAart, _
    $input_worker, _
    $adate

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

    GUICtrlCreateGroup("Fertigungsauftragsdetails", 460, 195, 560, 410)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

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

    GUICtrlCreateLabel("Fertigungsauftragsnummer:", 470, 235, 166, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $wo_id = GUICtrlCreateInput("", 645, 235, 150, 20)
    GUICtrlSetTip(-1, 'Bitte geben Sie die Fertigungsauftrags-Nummer ein.' & @CRLF & 'Alle Eingaben bitte OHNE Schrägstrich oder Sonderzeichen.', 'FA-Nummer eingeben', 1, 1)

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

    GUICtrlCreateLabel("Arbeitsgang-Leitzahl:", 470, 265, 129, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $ps_id = GUICtrlCreateInput("", 645, 265, 150, 20)
    GUICtrlSetTip(-1, 'Bitte geben Sie die Arbeitsgang-Leitzahl ein.' & @CRLF & 'Alle Eingaben bitte OHNE Schrägstrich oder Sonderzeichen.', 'Leitzahl eingeben', 1, 1)

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

    GUICtrlCreateLabel("Teile-Nummer:", 470, 295, 100, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $combo_teilnr = GUICtrlCreateCombo("", 645, 295, 100, 20)
    GUICtrlSetData($combo_teilnr, $INI_teilelist)

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

    GUICtrlCreateLabel("Ausschuss aus:", 470, 325, 100, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $combo_FAart = GUICtrlCreateCombo("", 645, 325, 100, 20)
    GUICtrlSetData($combo_FAart, $INI_FAart)

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

    GUICtrlCreateLabel("Zeitpunkt Ausschussanfall:", 470, 355, 160, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $adate = GUICtrlCreateDate(@YEAR & '/' & (@MON + 1) & '/' & @MDAY, 645, 355, 100, 20, $DTS_SHORTDATEFORMAT)

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

    GUICtrlCreateLabel('Arbeitername / Personen:', 470, 385, 160, 50)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $input_worker = GUICtrlCreateInput("", 645, 385, 300, 20)
    GUICtrlSetTip(-1, 'Bitte geben Sie mindestens den Nachnamen der Person an,' & @CRLF & 'die den genannten Auftrag bearbeitet hat.' & @CRLF & _
    'Mehrere Namen bitte durch einfaches Komma trennen.', 'Person eingeben', 1, 1)

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

    ;~ ******************** TAB 2 ********************
    Dim $comment

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

    GUICtrlCreateTabItem("Kommentarzusatz")
    $comment = GUICtrlCreateEdit("", 45, 245, 950, 311)
    GUICtrlSetLimit(-1, 5000)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Zusatzkommentare (max. 5000 Zeichen):", 45, 225, 279, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

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

    ;~ ******************** TAB Common buttons ********************
    Dim $button_go, $button_print, $button_form_null, $button_quit = 0

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

    GUICtrlCreateTabItem("")
    $button_go = GUICtrlCreateButton("Eintragen", 25, 625, 48, 48, $BS_Icon)
    GUICtrlSetTip(-1, 'Die Eingaben werden geprüft und in die Datenbank geschrieben.' & @CRLF & 'Danach wird die Maske geleert bzw. auf Null gesetzt.', 'Eingaben speichern', 1, 1)
    GUICtrlSetImage(-1, 'lib/speichern.ico', -1, 1)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")

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

    $button_print = GUICtrlCreateButton("Nur drucken", 83, 625, 48, 48, $BS_Icon)
    GUICtrlSetTip(-1, 'Die Eingaben werden in eine Tabelle eingetragen und ausgedruckt.' & @CRLF & 'Nur möglich solange Maske gefüllt ist!', 'Maskeneingaben drucken', 1, 1)
    GUICtrlSetImage(-1, 'lib/drucken.ico', -1, 1)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")

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

    $button_form_null = GUICtrlCreateButton("Formular leeren", 200, 625, 48, 48, $BS_Icon)
    GUICtrlSetTip(-1, 'Die gesamte Eingabemaske wird nach dem Anklicken auf Null gesetzt.' & @CRLF & 'Alle Eingaben gehen verloren!', 'Eingaben löschen', 1, 1)
    GUICtrlSetImage(-1, 'lib/loeschen.ico', -1, 1)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")

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

    $button_quit = GUICtrlCreateButton("Schliessen", 975, 625, 48, 48, $BS_Icon)
    GUICtrlSetTip(-1, 'Das Programm wird nach Rückfrage beendet.', 'Programm Beenden', 1, 1)
    GUICtrlSetImage(-1, 'lib/schliessen.ico', -1, 1)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial Black")

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

    ;~ ******************** Show last saved message ********************
    GUICtrlCreateLabel("Letzte Meldung:", 40, 690, 100, 20)
    $edit_last = GUICtrlCreateEdit("", 140, 685, 900, 50)
    GUICtrlSetTip(-1, 'Anzeige der zuletzt gespeicherten Meldung seit Programmaufruf in Kurzform.', 'Letzte gespeicherte Meldung', 1, 1)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetData(-1, $last)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")

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

    ;~ ******************** GUI show ********************
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $GUI_Msg = GUIGetMsg()
    Switch $GUI_Msg
    Case $GUI_EVENT_CLOSE
    _quit()
    ContinueLoop

    Case $button_go
    If MsgBox(4, 'Meldung speichern', 'Wollen Sie die Daten endgültig speichern?') = 7 Then
    ContinueLoop
    Else

    ;~ $amenge -> validate bigger than 0
    If Number(GUICtrlRead($amenge)) <= 0 Then
    MsgBox(16, 'Ausschussmenge', 'Ausschussmenge zu klein oder falsche Eingabe. Bitte prüfen!')
    ContinueLoop
    EndIf

    ;~ $fmenge -> validate bigger than 0 and bigger than $amenge
    If Number(GUICtrlRead($fmenge)) <= 0 Or Number(GUICtrlRead($fmenge)) < Number(GUICtrlRead($amenge)) Then
    MsgBox(16, 'Fertigungsmenge', 'Fertigungsmenge zu klein oder falsche Eingabe. Bitte prüfen!')
    ContinueLoop
    EndIf

    ;~ $wo_id -> validate int with ini-options
    If Number(GUICtrlRead($wo_id)) > Number($INI_FAmax) Or Number(GUICtrlRead($wo_id)) < Number($INI_FAmin) Then
    MsgBox(16, 'Fertigungsauftragsnummer', 'FA-ID fehlerhaft: Bitte kontrollieren Sie Ihre Eingaben!')
    ContinueLoop
    EndIf

    ;~ $ps_id -> validate int with ini-options
    If Number(GUICtrlRead($ps_id)) > Number($INI_LZmax) Or Number(GUICtrlRead($ps_id)) < Number($INI_LZmin) Then
    MsgBox(16, 'Leitzahl', 'Leitzahl fehlerhaft: Bitte kontrollieren Sie Ihre Eingaben!')
    ContinueLoop
    EndIf

    ;~ $adate -> validate not smaller than (today - 2 years) and not bigger than today
    $ar_adate = StringSplit(GUICtrlRead($adate), '.')
    If $ar_adate[3] < String(@YEAR - 2) Or String($ar_adate[3] & '/' & $ar_adate[2] & '/' & $ar_adate[1]) > String(@YEAR & '/' & @MON & '/' & @MDAY) Then
    MsgBox(16, 'Ausschuss-Datum', 'Ausschussdatum falsch: Datum kann nicht in der Zukunft liegen.' & @CRLF & _
    'Datum muss nach Jahr ' & (@YEAR - 3) & ' liegen. Bitte kontrollieren Sie Ihre Eingaben!')
    ContinueLoop
    Else
    _save()
    _form_null()
    ContinueLoop
    EndIf
    EndIf

    _print()
    _form_null()
    ContinueLoop

    Case $button_print
    _print()
    ContinueLoop

    Case $button_form_null

    If MsgBox(4, 'Form löschen', 'Wollen Sie Ihr Formular wirklich leeren?') = 7 Then
    ContinueLoop
    Else
    _form_null()
    ContinueLoop
    EndIf

    Case $agCB[0]
    GUICtrlSetState($agIn[0], $GUI_Enable)
    GUICtrlSetState($agIn2[0], $GUI_Enable)
    Case $agCB[1]
    GUICtrlSetState($agIn[1], $GUI_Enable)
    GUICtrlSetState($agIn2[1], $GUI_Enable)
    Case $agCB[2]
    GUICtrlSetState($agIn[2], $GUI_Enable)
    GUICtrlSetState($agIn2[2], $GUI_Enable)
    Case $agCB[3]
    GUICtrlSetState($agIn[3], $GUI_Enable)
    GUICtrlSetState($agIn2[3], $GUI_Enable)
    Case $agCB[4]
    GUICtrlSetState($agIn[4], $GUI_Enable)
    GUICtrlSetState($agIn2[4], $GUI_Enable)
    Case $agCB[5]
    GUICtrlSetState($agIn[5], $GUI_Enable)
    GUICtrlSetState($agIn2[5], $GUI_Enable)
    Case $agCB[6]
    GUICtrlSetState($agIn[6], $GUI_Enable)
    GUICtrlSetState($agIn2[6], $GUI_Enable)
    Case $agCB[7]
    GUICtrlSetState($agIn[7], $GUI_Enable)
    GUICtrlSetState($agIn2[7], $GUI_Enable)
    Case $agCB[8]
    GUICtrlSetState($agIn[8], $GUI_Enable)
    GUICtrlSetState($agIn2[8], $GUI_Enable)
    Case $agCB[9]
    GUICtrlSetState($agIn[9], $GUI_Enable)
    GUICtrlSetState($agIn2[9], $GUI_Enable)
    Case $agCB[10]
    GUICtrlSetState($agIn[10], $GUI_Enable)
    GUICtrlSetState($agIn2[10], $GUI_Enable)

    Case $button_quit
    _quit()
    ContinueLoop

    EndSwitch
    WEnd

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

    EndFunc ;==>_main

    [/autoit]

    Ich hoffe jetzt nur dass ich nicht wieder nen Denkfehler habe und was wichtiges vergessen hab. :S
    Müsste aber glaub alles wichtige drin sein.

    Thx!

    • Offizieller Beitrag

    dachte da gibts auch so schon ne Möglichkeit was zu sagen.


    Es war nicht ersichtlich, gegen welchen Wert dein Case prüft - jetzt weiß ich's: $GUI_Msg :D
    Einfach folgende Schleife außerhalb des Switch-Case-Statements einfügen:

    [autoit]

    For $i = 0 To 10
    If $GUI_Msg = $agCB[$i] Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    EndIf
    Next

    [/autoit]
  • Hy BugFix,

    danke, funktioniert in die eine Richtung wie meine Case-Statements nur eben geschickter und kürzer.
    Wie aber geht das nun umgekehrt?

    D.h.
    per Default sind die Input-Boxen disabled, beim Haken setzen in der Checkbox werden sie aktiv (haben wir ja jetzt).
    Nun sollten die Dinger aber wieder deaktiviert werden wenn ich den Haken wieder rausnehm.

    Wenn ich nun aber in dein Beispiel noch ein

    [autoit]

    For $i = 0 To 10
    If $GUI_Msg = $agCB[$i] Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    Else
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    EndIf
    Next

    [/autoit]

    hinzufüge dann habe ich wieder ein Flimmern drin - d.h. er macht da kontinuierlich etwas.
    Die Logik bzw. der Ablauf zu diesem Problem ist mir momentan noch etwas unschlüssig wie man merkt ;)

    Hab grad paar Schwierigkeiten mit so verworrenen Kontruktionen :/

    • Offizieller Beitrag

    :D Ja klar, der Status muß natürlich ausgelesen werden.

    [autoit]

    For $i = 0 To 10
    If $GUI_Msg = $agCB[$i] Then
    If BitAND(GUICtrlRead($agCB[$i]), $GUI_CHECKED) Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    Else
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    EndIf
    EndIf
    Next

    [/autoit]
  • So, habe es nun noch selbst geschafft zumindest das ganze auch umgekehrt machen zu können, d.h. es werden die Input-Boxen auch wieder deaktiviert bei der Herauslöschung des Hakens in der Checkbox.

    Sieht jetzt so aus:

    [autoit]

    For $i = 0 To UBound($agCB) - 1
    If $GUI_Msg = $agCB[$i] Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    ElseIf GUICtrlRead($agCB[$i]) = $Gui_unchecked Then
    GUICtrlSetState($agIn[$i], $GUI_DISABLE)
    GUICtrlSetState($agIn2[$i], $GUI_DISABLE)
    EndIf

    Next

    [/autoit]

    Problem: Ich glaube nicht dass das so korrekt ist weil ich nun ein Flimmern in den Input-Feldern habe als würde er sie die ganze Zeit ein und ausschalten - sieht irgendwie komisch aus :D
    Die ganze For-Schleife liegt direkt unter der Switch-Case-Auswahl.

  • Ah ok - super BugFix - bist echt ein Profi ;)
    Deine Version funktioniert bestens.

    Meine macht fast das gleiche aber flimmert halt noch - kA worin jetzt da der Unterschied liegt.
    Mit dem BitAND hab ich noch nie was gemacht - muss ich mir wohl mal genauer ansehn um das zu verstehn warum deine Version nicht flimmert.

    Aber danke - passt *g

    Gibst du eigentlich Kurse? :D Spass ;)