GUI Elemente sperren...

  • Also ich habe versucht ein kleines Script zu schreiben, bei dem wenn man die Check Box markiert das Input Feld gesperrt werden soll und andersrum:

    Spoiler anzeigen
    [autoit]

    GUICreate("gui",150,100)
    $checkbox=GUICtrlCreateCheckbox("",10,10,20,20)
    $input=GUICtrlCreateInput("input",10,50,50,20,1)
    GUISetState(@SW_SHOW)
    While 1
    Sleep(10)
    If GUICtrlRead($checkbox)=1 Then
    GUICtrlSetState($input,@SW_LOCK)
    ElseIf GUICtrlRead($checkbox)=4 Then
    GUICtrlSetState($input,@SW_UNLOCK)
    EndIf
    $msg=GUIGetMsg()
    Select
    Case $msg=-3
    Exit
    EndSelect
    WEnd

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


    Das ganze funktioniert nun aber irgentwie nicht richtig :( ...Kann mir vielleicht jemand helfen?

    Einmal editiert, zuletzt von hugohansen (18. Mai 2010 um 19:50)

  • Ich hab es mal ein wenig aufgeräumt... :rolleyes:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $hWnd = GUICreate("gui", 150, 100)
    $checkbox = GUICtrlCreateCheckbox("", 10, 10, 20, 20)
    $input = GUICtrlCreateInput("input", 10, 50, 50, 20, 1)
    GUISetState()

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $checkbox
    If BitAND(GUICtrlRead($checkbox), $GUI_CHECKED) = 1 Then
    ControlDisable($hWnd, "", $input)
    Else
    ControlEnable($hWnd, "", $input)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Conan10 Nein so geht das auch nicht, die @SW Makros sind für GUIs gedacht ;).

  • Hab es gerade mal mit @SW_DISABLE und @SW_ENABLE versucht aber, auch dann kann ich z.B. den Text im Feld noch ohne Probleme verändern... :(

  • Oh sorry ;)
    Hab da wohl nicht richtig gelesen oder nicht richtig nachgedacht ^^
    Man kann es aber mit $GUI_DISABLE und $GUI_ENABLE machen ;)

    [autoit]

    GUICtrlSetState($handle,$GUI_DISABLE)

    [/autoit]

    Mist mal wieder zu langsam

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

  • Habe es jetzt wie name22 gemacht, klappt suuper, danke! :D + Aber auch danke an alle anderen! ;):D
    Ohja wo wir gerade bei Input Boxen sind kann man es auch z.B. so machen das wenn in der Input Box ein Text steht und ich dann in die Box klicke das dieser dann weggeht? :D

  • Zitat

    Input Box ein Text steht und ich dann in die Box klicke das dieser dann weggeht? :D


    Diese Frage habe ich schon mal beantwortet, aber da ich den Link nicht mehr finde: :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $hWnd = GUICreate("Test", 400, 400)
    $cLabel = GUICtrlCreateLabel("", 5, 5, 100, 20)
    $cInput = GUICtrlCreateInput("", 5, 5, 100, 20)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cLabel
    GUICtrlSetData($cInput, "")
    EndSwitch
    WEnd

    [/autoit]


    Und dann musst du, um das löschen des Textes in der InputBox zu verhindern, einfach das Label Disablen ;).