GUICtrlCreateGroup - Rahmenfarbe ändern

  • Servus zusammen,

    ich wollte eine GroupBox um mehrere Elemente haben, die aber auf meinem GUI mit schwarzem Hintergrund in ihrem Standard-Hellgrau blöd aussieht.
    Deshalb wollte ich gerne die Schrift und den Rahmen färben.

    1. Problem:
    Ich habe versucht mit GUICtrlSetColor() die Textfarbe der Caption von meiner GroupBox zu verändern => ohne Erfolg.
    Ja, ich habe die Hilfe gelesen und Nein, ich habe Windows 7 mit Windows Aero style und nicht den "Windows XP style".

    [autoit]


    $idGroupTeam1 = GUICtrlCreateGroup("Blue Team", 5, 5, 1260, 300)
    GUICtrlSetColor($idGroupTeam1, 0x3399FF) ; Gibt 1 zurück, es passiert aber nichts, die Schrift bleibt schwarz.

    [/autoit]

    Dieses Problem habe ich momentan mit diesem Workaround gelöst, aber es wäre nett, wenn ich trotzdem wüsste, wo das Problem dabei bei mir liegt:

    [autoit]


    $idGroupTeam1 = GUICtrlCreateGroup("Blue Team", 5, 5, 1260, 300, $WS_DISABLED)
    $idLabelGroupTeam1 = GUICtrlCreateLabel("Blue Team", 20, 5)
    GUICtrlSetColor($idLabelGroupTeam1, 0x3399FF) ; Hier funktioniert es, die Textfarbe vom Label kann ich verändern

    [/autoit]


    2. "Problem":
    Nun würde ich noch gerne die Rahmen-Farbe der GroupBox verändern, prinzipiell ist dies anscheinend möglich (Changing border color of GroupBox), aber in AutoIt ist dies wohl durch einen DllCall zu bewerkstelligen und damit kenne ich mich leider noch nicht gut genug aus, deshalb wäre ich euch sehr dankbar, wenn dafür jemand eine Lösung in AutoIt findet. Habe nämlich auch danach ausgiebig gegoogled und nichts brauchbares für mich gefunden.

    GroupBox Control (Windows) auf MSDN: http://msdn.microsoft.com/en-us/library/…6(v=vs.85).aspx


    LG und schönen Tag
    Joriktos

    Edit:

    Code zum testen innerhalb des GUI
    [autoit]


    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ###
    $hGUI = GUICreate("", 1270, 310, -1, -1)
    GUISetBkColor(0x000000)
    $idGroupTeam1 = GUICtrlCreateGroup("Blue Team", 5, 5, 1260, 300, $WS_DISABLED)
    $idLabelGroupTeam1 = GUICtrlCreateLabel("Blue Team", 20, 5)
    GUICtrlSetColor($idLabelGroupTeam1, 0x3399FF)
    $idPicPlayer1 = GUICtrlCreatePic("", 10, 15, 154, 280)
    $idPicPlayer2 = GUICtrlCreatePic("", 260, 15, 154, 280)
    $idPicPlayer3 = GUICtrlCreatePic("", 510, 15, 154, 280)
    $idPicPlayer4 = GUICtrlCreatePic("", 760, 15, 154, 280)
    $idPicPlayer5 = GUICtrlCreatePic("", 1010, 15, 154, 280)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    2 Mal editiert, zuletzt von Joriktos (22. Juli 2013 um 14:58)

  • Soweit ich weiß, ist es bisher noch nicht gelungen den Group-Rahmen individuell einzufärben.
    Mir ist auch keine Struktur bekannt, die mir per OWNERDRAW Zugriff auf den Rahmen erlaubt.

    Okay, das ist sehr schade... In Visual Basic scheint es möglich zu sein: GroupBox - BorderColor - Eigenschaft hinzufuegen
    Aber ich glaube, da ist das eh anders aufgebaut, mit den ganzen Objekten und so.

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    • Offizieller Beitrag

    Okay, das ist sehr schade... In Visual Basic scheint es möglich zu sein: GroupBox - BorderColor - Eigenschaft hinzufuegen


    Das ist aber keine "echte" Groupbox, sondern einfach nur ein Gebilde, das wie eine Groupbox aussieht - das kannst du in AutoIt auch machen.
    Eine Groupbox hat aber die wesentliche Eigenschaft, dass z.B. von allen enthaltenen Radio-Ctrl nur eines gecheckt werden kann. Bei dem Eigenbau ist das nicht der Fall.

  • Zitat

    Bei dem Eigenbau ist das nicht der Fall.

    Wenn man schon einen Eigenbau bastelt, der wie eine Groupbox aussieht, kann man nebenbei auch gleich die von dir genannte Eigenschaft reinpfriemeln. Und das alles wg. einem bunten Rähmchen.....

  • Warum nicht erneut Labels verwenden? ;)
    Die Eigenschaften können mit dem Styl WS_Group eingestellt werden (RadioBox).

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ###
    Global $hGUI = GUICreate("Colored Group", 1270, 310, -1, -1)
    GUISetBkColor(0x000000)
    Global $idLabelGroupTeam1 = GUICtrlCreateLabel("Blue Team", 25, 15)
    GUICtrlSetColor($idLabelGroupTeam1, 0xffffff)
    Global $lbl1 = GUICtrlCreateLabel("", 5, 10, 1255, 2)
    GUICtrlSetBkColor(-1, 0xffffff)
    Global $lbl2 = GUICtrlCreateLabel("", 5, 300, 1255, 2)
    GUICtrlSetBkColor(-1, 0xffffff)
    Global $lbl3 = GUICtrlCreateLabel("", 5, 10, 2, 290)
    GUICtrlSetBkColor(-1, 0xffffff)
    Global $lbl4 = GUICtrlCreateLabel("", 1260, 10, 2, 290)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd
    ; Ende

    [/autoit]
  • also die Textfarbe der Group zu ändern geht einfach
    ich finde die Default styles sowieso viel schöner in windows :)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $hGUI = GUICreate("", 600, 400)
    GUISetOnEvent(-3, "_exit", $hGUI)

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

    $idGroupTeam1 = GUICtrlCreateGroup("Blue Team", 5, 5, 590, 390)
    DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0)
    GUICtrlSetColor($idGroupTeam1, 0xFF0000)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    Sleep(200)
    WEnd

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]


    doch wie du nun die Rahmenfarbe änderst, da kann ich dir auch nicht helfen^^
    mfg

    PS: der DllCall geht bei ALLEN GUICtrl's zum einschalten des default themes und ich finde das sieht nicht nur besser aus es ist auch funktioneller da GUICtrlSetColor bei fast allen sachen dann funktioniert auch BkColor^^