"gestapelte" Controls - Problem bei der Bk-Farbgebung

  • Hallo zusammen,

    ich hab den halben Tag "gebastelt" - leider ohne Erfolg!!

    Ich habe ein GUI die ich in einem tollen GELB als "Bk" einfärbe. Darauf lege ich "riesiege" Button. Auch alles noch gut. Da die Kennzeichnung des Hotkey (&Zulauf) doch sehr sparsam ausfällt will ich in meinem "RiesenButton" den Hotkey einfach oben rechts mit einblenden. Ich habe als die Create-Befehle "gestapelt". Das funzt auch alles - nur die Farbe stimmt nicht.

    Ich hab das mal ausgeklinkt:

    Spoiler anzeigen

    #include-once

    #include <FontConstants.au3>

    #include <GUIConstantsEx.au3>

    #include <WindowsConstants.au3>

    ; -----------------------------------------------------------------------

    $hGui = GUICreate("Lable über Button", 500, 400)

    GUISetBkColor(0xFFCC01, $hGui) ; gelb


    $idZulauf = GUICtrlCreateButton("Zulauf", 250, 150, 220, 100)

    GUICtrlSetFont($idZulauf, 40, $FW_BOLD, 0)

    $vText = "Es gibt:"&@LF&@LF&"GUISetBkColor - Hintergrundfarbe GUI - genutzt"&@LF&@LF&"GUICtrlSetBkColor - Hintergrundfarbe Contol - genutzt"

    GUICtrlCreateLabel($vText,10,20,380,100)

    GUICtrlSetFont(-1, 10, $FW_BOLD, 0)

    ;~ GUICtrlCreateGroup(" HotKey ", 395, 155, 60, 20)

    ;~ GUIctrlSetBKColor(0xF0F0F0,-1)

    $hHKInfo = GUICtrlCreateLabel('"Alt + z"', 400, 160, 50, 15, Default, $WS_EX_TRANSPARENT)

    GUICtrlSetFont(-1, 10)

    GUICtrlSetBkColor(0xF0F0F0, -1)

    ;~ GUICtrlCreateGroup("", -99, -99, 1, 1) ; Gruppe schliessen

    GUICtrlCreateLabel("Warum scheint das GELB durch?",10,260,380,40)

    GUICtrlSetFont(-1, 10, $FW_BOLD, 0)

    GUICtrlCreateLabel("Auch wenn ich eine 'Gruppe' dahinterlege (hier als Komentar) ändert sich an dem GELB nix",10,300,480,40)

    GUICtrlSetFont(-1, 10, $FW_BOLD, 0)

    GUICtrlCreateLabel("Wo ist der Fehler ???? (:-(((",10,350,380,40)

    GUICtrlSetFont(-1, 20, $FW_BOLD, 0)

    GUISetState(@SW_SHOW, $hGui)

    While 1

    Switch GUIGetMsg()

    Case $GUI_EVENT_CLOSE

    ExitLoop

    EndSwitch

    WEnd

    ; Ende

    Wo ist der Fehler? Warum scheint GELB durch???

    Hab ihr eine Idee ? ;)

    Vorab schon mal Danke:thumbup:

    Wenn Du's eilig hast - geh langsam...

    • Offizieller Beitrag

    Statt ein Label über den Button zu legen, was öfter zu Problemen beim Refresh führt, würde ich lieber den Text auf eine Bitmap schreiben und diese dem Button zuweisen:

  • @chesstiger: Danke für die schnelle Antwort ... mitten in der Nacht .... Hab ich heute früh gelesen und mußte erst mal herzhaft lachen. Mit war schon aufgefallen das die zwei Funktionen (GUICtrlSetBkColor und GUISetBkColor) mit ihren Parameter unterschiedlich aufgebaut sind. Find ich ja komisch aber es war nun mal der Wille des Schöpfers. ... und deshalb hab ich hier ca. 2h rumgemährt und noch nen Thema im Forum aufgemacht. ;(

    Hab's korrigiert und siehe da es funst nicht so wie gedacht, da das Lable beim Überfahren des Button verschwindet und nicht mehr wieder kommt. Somit ist der Beitrag von @Oscar natürlich berechtigt. Danke @Oscar Das schau ich mir genauer an. Wobei der Code-Aufwand für diese paar Buchstaben gigantisch ist. Dennoch vielen Dank.

    Wenn Du's eilig hast - geh langsam...

    • Offizieller Beitrag

    Wobei der Code-Aufwand für diese paar Buchstaben gigantisch ist.

    Ich hab's Dir doch als Funktion geschrieben.

    Wenn Du nicht nur einen Button damit benutzt, ist es doch schon wieder wenig Code.

    Und im Prinzip könnte man zusätzlich auch noch ein Icon oder so mit auf den Button anzeigen. Solche universellen Buttons bekommt man nunmal nicht "umsonst".

  • @Oscar: Ja, danke noch mal für diese Funktion. Die Code-Länge sah hier im Forum wesentlich größer aus als er sich im SciTE darstellt. Und da ich mehrere Button verwende relativiert sich das wieder. Was mich zum nächsten Punkt bring. Bei einem weiteren Button benutze ich einen mehrzeiligen Text ('Paket"&@CR&@CR&"&Ausgabe').

    Die Funktion "_GDIPlus_GraphicsDrawStringEx" setzt diesen String in eine Grafik um, kann aber nicht mit Steuerbefehlen umgehen.
    Hier zur Ansicht:

    Es werden also die Steuerbefehle mit dargestellt. Die Funktion "_GDIPlus_GraphicsDrawStringEx" bringt keine weiteren Möglichkeiten der Textmanipulation mit sich. Bliebe also die Variante für den Button-Text (mehrzeilig) zwei bzw. mehrere "Grafiktexte" zu erstellen und entsprechen anzuordnen. Oder hast Du/Ihr noch ne andere Idee?

    Vorab vielen Dank und einen schönen sonnigen Sonntag:thumbup:

    Wenn Du's eilig hast - geh langsam...

  • OT:

    De Rand Ere deine Markierung mit dem @ Zeichen solltest du dir abgewöhnen.

    WBB hat bereits eine Funktion implementiert um Nutzer zu benachrichtigen, dazu musst du einfach nur @ schreiben und danach den Nutzernamen (ein Popup taucht auf).

    Wenn du das ganze so machst, wird der User auch markiert und kriegt eine Benachrichtigung. Du musst nicht manuell das Profil verlinken und den Namen einfärben.

    • Offizieller Beitrag

    Die Funktion "_GDIPlus_GraphicsDrawStringEx" bringt keine weiteren Möglichkeiten der Textmanipulation mit sich.

    Doch, eigentlich schon! Wenn man es richtig macht. ;)

    Es wird immer das Rechteck ($tLayout) gefüllt. Für einen Zeilenumbruch muss man aber @LF und nicht @CR verwenden. Unter Windows sowieso am sichersten beides (@CRLF).

    Ich habe die Funktion mal so angepasst, dass es dem Original sehr ähnlich sieht:

  • Oscar Geil, sowas von geil ... das freut mich echt. Will noch mal schauen, was Du verändert hast um halbwegs zu verstehen, wie das geht. _GDIPlus ist nicht so meine Welt. Da muß ich mich immer erst neu reindenken.

    Nu hab ich den Kanal aber erstmal voll und geh in den Garten ... "eh bissl rumwürschn" und eh Bier trinken.
    Gehabt Euch wohl ...

    Wenn Du's eilig hast - geh langsam...