_GUICTRLCreateCheckbox mit Transparenzunterstützung

    • Offizieller Beitrag

    Hi,

    Weil ich es gerade selbst gebraucht habe:

    [autoit]

    Func _GUICtrlCreateCheckbox($_text, $_left, $_top, $_width)
    Local $_checkbox = GUICtrlCreateCheckbox("", $_left, $_top, 13, 13)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE)
    Local $_label = GUICtrlCreateLabel($_text, $_left + 18, $_top, $_width - 18)
    GUICtrlSetOnEvent(-1, "_toggleCheckbox")
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    Return $_checkbox
    EndFunc ;==>_GUICtrlCreateCheckbox

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

    func _toggleCheckbox()
    $_id = @GUI_CtrlId - 1 ; direkt nacheinander erstellt!
    GUICtrlSetState($_id, _IIf(BitAND(GUICtrlRead($_id), $GUI_CHECKED), $GUI_UNCHECKED, $GUI_CHECKED))
    EndFunc

    [/autoit]

    Hinweis: Es ist für den OnEventMode gedacht und unterstützt Klicks auf den Text zum An-/Abwählen.

    Edit: Frage: Wie kann ich statt des GUICTRLSetState in _toggleCheckbox einen echten Klickevent senden? GUICtrlSendMsg wäre meine Idee, aber hat jemand die Parameter da?

    Edit: Bild:
    autoit.de/wcf/attachment/7505/

    Johannes

  • Hallo peethebee
    Habe dein Script mal getestet, und habe ein paar Fehler :)
    Also ganz normal reinstellen funzt, Aber!
    Wenn ich vor _GUICtrlCreateCheckbox GUICtrlCreatePic(@MyDocumentsDir & "\Eigene Bilder\avatar1.jpg", 0, 0, 700, 700) schreibe,
    kann man die Checkbox nicht mehr klicken, und wenn ich GUICtrlCreatePic(@MyDocumentsDir & "\Eigene Bilder\avatar1.jpg", 0, 0, 700, 700) nach _GUICtrlCreateCheckbox schreibe, wird das Label unsichtbar, aber die Checkbox kann geklickt werden.
    Irgendwie strange ^^
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Spoiler anzeigen
    [autoit]


    Func GUICheckBoxSetColor(ByRef $CtrlID,$iColor,$iBkColor="0xF1EDED")
    ; SEuBo
    $CtrlHWnd = $CtrlID
    If Not IsHWnd($CtrlHWnd) Then $CtrlHWnd = GUICtrlGetHandle($CtrlID)
    $aParent = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $CtrlHWnd)
    $hOldG = GUISwitch($aParent[0])
    $aCPos = ControlGetPos($aParent[0],"",$CtrlID)
    $sOldT = GUICtrlRead($CtrlID,1)
    GUICtrlDelete($CtrlID)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
    $CtrlID = GUICtrlCreateCheckbox($sOldT,$aCPos[0],$aCPos[1],$aCPos[2],$aCPos[3])
    GUICtrlSetColor(-1,$iColor)
    GUICtrlSetBkColor(-1,$iBkColor)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
    GUISwitch($hOldG)
    EndFunc

    [/autoit]

    Sollte doch eigentlich das selbe machen, oder?
    Mit Lable hatt ichs auch erst probiert. Leider gibt das viele komplikationen.


  • Du must das Bild disablen,

    mfg (Auto)Bert


    Und zusätzlich sollte man die Styles des Bildes auf 0 setzen:

    [autoit]

    Func _GUICtrlCreatePicBG($sFilename, $iTop, $iLeft, $iWidth=Default, $iHeight=Default)
    ; Author: Prog@ndy
    Local $iPic = GUICtrlCreatePic($sFilename, $iLeft, $iTop, $iWidth, $iHeight, 0)
    If $iPic Then GUICtrlSetState($iPic, 128) ; GUI_DISABLE
    Return $iPic
    EndFunc

    [/autoit]