INPUT-Feld, Edit-Feld nicht anklickbar machen

  • Gibt es eine Möglichkeit ein Eingabefeld (Edit, Input,...) inaktiv zu machen? So das man nicht hineinklicken kann.

    Mit "disable" ginge das zwar, dann wird der Text darin allerdings ausgegraut dargestellt. Was nicht so schön ist.

  • Es gibt noch den $ES_READONLY Style. Allerdings weiß ich nicht ob dieser die farben ändert. Du musst sonst die Farben selber dem Control zuweisen.

    Oder hat jemand eine andere Idee?

  • Du kannst auch ein durchsichtiges Fenster darüberlegen

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

    $hGui = GUICreate("Test", 320, 240)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $cEdit = GUICtrlCreateEdit("Edit", 10, 10, 300, 100)
    $cInput = GUICtrlCreateInput("Input", 10, 120, 300, 20)
    $cButton1 = GUICtrlCreateButton("Button 1", 10, 210, 145, 20)
    GUICtrlSetOnEvent($cButton1, "_SetEditText")
    $cButton2 = GUICtrlCreateButton("Button 2", 165, 210, 145, 20)
    GUICtrlSetOnEvent($cButton2, "_SetInputText")

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

    GUICtrlSetState($cButton1, $GUI_FOCUS)

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

    $hGuiNF1 = GUICreate("sdf", 300, 100, 10, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
    WinSetTrans($hGuiNF1, "", 1)
    GUISetState(@SW_DISABLE, $hGuiNF1)
    GUISetState(@SW_SHOW, $hGuiNF1)

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

    $hGuiNF2 = GUICreate("sdf", 300, 20, 10, 120, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
    WinSetTrans($hGuiNF2, "", 1)
    GUISetState(@SW_DISABLE, $hGuiNF2)
    GUISetState(@SW_SHOW, $hGuiNF2)

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

    GUISetState(@SW_SHOW, $hGui)

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

    While Sleep(100)
    WEnd

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

    Func _SetEditText()
    Local $sText = ""
    For $i = 1 To Random(5, 20, 1)
    $sText &= Chr(Random(65, 90, 1))
    Next
    GUICtrlSetData($cEdit, $sText)
    EndFunc ;==>_SetEditText

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

    Func _SetInputText()
    Local $sText = ""
    For $i = 1 To Random(5, 20, 1)
    $sText &= Chr(Random(65, 90, 1))
    Next
    GUICtrlSetData($cInput, $sText)
    EndFunc ;==>_SetInputText

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    E

  • Etwas einfacher wäre einfach die Hintergrundfarbe zu ändern:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate("Test", 320, 140)
    $idEdit = GUICtrlCreateEdit("Edit", 10, 10, 300, 100)
    $idBtnEdit = GUICtrlCreateButton("&Editierbar", 10, 115, 145, 20)
    $idBtnNoEdit = GUICtrlCreateButton("&Nicht Eitierbar", 165, 115, 145, 20)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    case $GUI_EVENT_CLOSE
    Exit
    case $idBtnEdit
    GUICtrlSetStyle($idEdit,$GUI_SS_DEFAULT_EDIT)
    GUICtrlSetBkColor($idEdit,0xFFFFFF)
    case $idBtnNoEdit
    GUICtrlSetStyle($idEdit,$ES_READONLY)
    GUICtrlSetBkColor($idEdit,0xFFFFFA)
    EndSwitch

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

    WEnd

    [/autoit]

    Wobei ich allerdings der Meinung bin dass der Anwender auch mitbekommen soll wo Eingaben erlaubt sind und wo nicht deshalb die leichte Farbabweichung,


    mfg autoBert