Nach Klick auf einen Button soll der Button "gedrückt" bleiben.

  • Einen schönen Tag Euch allen.

    Ich habe ein "kosmetisches" Problem mit meiner GUI-Programmierung.

    Szenario:

    GUI1 (OnEventModus) enthält einen Button1.

    Bei Klick auf diesen Button öffnet sich GUI2.

    Gleichzeitig erhält Button1 eine neue Funktion ( GUICtrlSetOnEvent($Btn1, "GUI2Close") ).

    Bei erneutem Klick auf Button1 soll GUI2 geschlossen werden.

    Das funktioniert alles soweit auch wunderbar.

    Ich möchte jedoch erreichen, das Button1 die Optik eines "gedrückten" Buttons hat, solange, bis man ihn ein zweites Mal drückt. Danach soll Button1 wieder aussehen, wie ein "normaler" Button, bis man ihn erneut drückt.

    Ich hatte bereits unter GUICtrlSetStyle nachgeforscht, komme aber zu keinem Ergebnis.

    Was würdet Ihr machen?

    Vielen Dank bereits im Voraus.

  • Das geht auch mit einer Checkbox im ButtonStyle:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 633, 448, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "AForm1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "AForm1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "AForm1Restore")
    $Checkbox1 = GUICtrlCreateCheckbox("ACheckbox1", 56, 16, 185, 65)
    GUICtrlSetOnEvent(-1, "ACheckbox1Click")
    $CheckboxButton = GUICtrlCreateCheckbox("ACheckboxButton", 56, 96, 209, 49, BitOR($BS_CHECKBOX,$BS_AUTOCHECKBOX,$BS_PUSHLIKE,$WS_TABSTOP))
    GUICtrlSetOnEvent(-1, "ACheckboxButtonClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("AForm2", 192, 74, 193, 115)
    $Label1 = GUICtrlCreateLabel("GUI2", 56, 24, 49, 28)
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

    Func ACheckbox1Click()
    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    MsgBox(0,"Checkbox1","checked")
    Else
    MsgBox(0,"Checkbox1","unchecked")
    EndIf
    EndFunc

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


    Func ACheckboxButtonClick()
    If GUICtrlRead($CheckboxButton) = $GUI_CHECKED Then
    GUISetState(@SW_SHOW,$Form2)
    MsgBox(0,"CheckboxButton","checked")
    Else
    GUISetState(@SW_HIDE,$Form2)
    MsgBox(0,"CheckboxButton","unchecked")
    EndIf
    EndFunc

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


    Func AForm1Close()
    Exit
    EndFunc

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


    Func AForm1Maximize()

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

    EndFunc

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


    Func AForm1Minimize()

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

    EndFunc

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


    Func AForm1Restore()

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

    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (19. Oktober 2007 um 13:23)

  • Xenobiologist , progandy,

    Danke für Eure Lösungen. Ich habe mich dazu entschieden, die von progandy zu nehmen, weil das exakt den Effekt hat, den ich haben wollte - obwohl mir durch den Vorschlag von Xenobiologist endlich vollständig klar geworden ist, welche Möglichkeiten NOTIFY bietet... Na ja, siehe Sig.

    Danke Euch und noch 'n schönes WE