GUI-Button mit farbigem Hintergrund - funzt nicht Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

davidgoehler
Posts: 13
Joined: 04 Sep 2023, 10:41

GUI-Button mit farbigem Hintergrund - funzt nicht

Post by davidgoehler » 25 Nov 2024, 16:48

Ich würde gerne einen einfachen Button mit einer Hintergrundfarbe versehen. Das Gui-Control "Button" beherrscht das nicht, daher dachte ich (wie in der Doku beschrieben), ich könnte eine farbige Progressbar dahinterlegen und beim Button mit "Backgroundtrans" den Hintergrund durchscheinend machen. Aber nichts funktioniert. In der Doku gab es dann noch den Hinweis "WS_CLIPSIBLINGS" (0x4000000) bei der Progressbar zu setzen und diese nach dem Erzeugen des Buttons anzulegen:

Code: Select all

test := Gui("MinSize300x100","Testfenster")

button := test.Add("Button","Section xm+10 ym+10 w50 BackgroundTrans h16","Test")
fläche := test.Add("Progress","xm+10 ym+10 w50 h16 0x4000000 cFFDD99",100)

test.Show("W400 H200")
Aber auch hier gibt es keinen orangenen Hintergrund beim Button. Es erscheint einfach nur der Button mit weißem Hintergrund.
Btw: Ich möchtge keinen Text mit einem Link versehen, weil dann dieser MouseOver-Effekt von Windows fehlt. Das Element soll wie ein richtiger Button aussehen, aber mit farbigem Hintergrund.

Hat jemand eine Idee oder ein Code-Stück?

gero
Posts: 193
Joined: 02 Oct 2013, 05:36

Re: GUI-Button mit farbigem Hintergrund - funzt nicht

Post by gero » 26 Nov 2024, 06:20

hi davidgoehler ... ich hatte neulich das gleiche Problem.
Ich (mit V.1 und ohne Kenntnis von höherem Classen-Code) hab's short+quick+dirty, jenseits aller Finesse und Eleganz, so für mich gelöst.
Sollte vom Prinzip her mit V.2 auch funktionieren:

gruss
gero

Code: Select all

#Requires AutoHotkey v1
#NoEnv
#SingleInstance force
Gui,color,dddddd
Gui,Font,s18 bold, Arial
Gui, +AlwaysOnTop
Gui, Add , Progress, x10 y10 w150 h40 BackgroundFFA500  +border disabled , 
Gui, Add , TEXT, xp yp wp h40 c0000FF vTEXT_1 gQUICK_n_DIRTY +0x400000 +E0x200  center BackgroundTrans ,- click -
Gui, Show,
return

QUICK_n_DIRTY:
GuiControl,hide,TEXT_1
Keywait,Lbutton,
;MsgBox,4096,Info,jep,1
GuiControl,show,TEXT_1
GuiControl,focus,TEXT_1
return

GuiClose:
ExitApp
return
Aber es kommen bestimmt noch Experten mit elegantem High-Code um die Ecke ... :)
Last edited by Ragnar on 26 Nov 2024, 06:52, edited 1 time in total.
Reason: #Requires


User avatar
LuckyJoe
Posts: 350
Joined: 02 Oct 2013, 09:52

Re: GUI-Button mit farbigem Hintergrund - funzt nicht

Post by LuckyJoe » 27 Nov 2024, 07:51

Bei mir funktioniert das, wenn ich statt eines Buttons ein Textfeld farbig gestalte:

Code: Select all

MyGui := Gui()

; Erstelle einen Text als "Button"
Label := MyGui.Add("Text", "x10 y10 w100 h50 Center BackgroundFFa500 Border +0x200", "Klick mich") ; +0x200 = Vertikale Zentrierung
Label.OnEvent("Click", (*) => MsgBox("Button wurde geklickt!")) ; Event bei Klick

MyGui.Show()
Herzliche Grüße aus dem Rheinland
Lucky Joe

davidgoehler
Posts: 13
Joined: 04 Sep 2023, 10:41

Re: GUI-Button mit farbigem Hintergrund - funzt nicht

Post by davidgoehler » 28 Nov 2024, 02:50

Wie beschrieben geht es mir um den "Button". mit Text habe ich es bisher auch schon gelöst. Aber dadurch ist der Mausover-Effekt, den alle anderen Button drumrum zeigen, nicht vorhanden. So sieht man deutlich, dass man hier getrickst hat. Kennt jemand auch eine Lösung mit einem Button-Ctrl?

just me
Posts: 9870
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GUI-Button mit farbigem Hintergrund - funzt nicht  Topic is solved

Post by just me » 28 Nov 2024, 04:01

Moin,

wenn Du den Hintergrund eines Buttons färben willst, musst Du ihn selbst zeichnen. Und wenn Du dann zusätzlich zum Randbereich einen Mausover-Effekt sehen willst, musst Du auch selbst dafür sorgen. Es gibt dafür verschiedene Ansätze.

Das Skript (Class) Imagebutton v1 / v2 bietet eine Möglichkeit. Für die Buttons werden dabei für die unterschiedlichen Stati unterschiedliche Bilder mit farbigem Hintergrund und dem Text des Buttons generiert. Den Rest erledigt das System automatisch.

Das von @daywalker genannte Skript Colobutton.ahk benutzt die "Customdraw" Methode. Immer wenn ein Button-Control neu gezeichnet werden muss, schickt das System dem Fenster eine NM_CUSTOMDRAW Nachricht. Die kann man abfangen und dann das Zeichnen selbst übernehmen. Das Skript gibt es aber bisher wohl nur für AHK v2.

gero
Posts: 193
Joined: 02 Oct 2013, 05:36

Re: GUI-Button mit farbigem Hintergrund - funzt nicht

Post by gero » 29 Nov 2024, 08:32

Nur so als Tip:
Um einen Button optisch hervorzuheben kann man ihn auch mit einer Grafik (oder Progress "disabled") hinterlegen, welche etwas grösser als der Button ist, so dass ein farbiger Rand um den Button entsteht.

gruss
gero

davidgoehler
Posts: 13
Joined: 04 Sep 2023, 10:41

Re: GUI-Button mit farbigem Hintergrund - funzt nicht

Post by davidgoehler » 01 Dec 2024, 16:03

Hi @just me, das war des Rätsels Lösung. Fuktioniert einwandfrei und da ich sowieso mit AHK 2.x unterwegs bin, war das schnell eingebunden. Danke vielmals!!

Post Reply

Return to “Ich brauche Hilfe”