Ich verwende in einem Programm diverese OptionGadget auf diversen eingefärbten Fenstern. Nun wird bei diesen Gadgets aber immer als Hintergrundfarbe die Standardfarbe von Windows verwendet. Ich bräuchte hier einen Kniff, der auch bei OptionGadgets die H-Farbe ändert.
Auf RSBasic gibt es eine Routine. Aber diese ist ja fest auf eine GadgetID festgelegt. Ich müsste extra eine Tabelle anlegen, wo alle Gadgets durchgeprüft werden. Gibt es da nichts Einfacheres?
OptionGadget Hintergrundfarbe
OptionGadget Hintergrundfarbe
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Re: OptionGadget Hintergrundfarbe
Hast du mal nen Link zu dem Code von RSBasic (bzw. auf seiner Seite)?
Ich denke nicht, dass du irgendwelche Listen erstellen musst.
Versuch mal BefehlX(GadgetID(#OptionGadget), color etc...)
Ich denke nicht, dass du irgendwelche Listen erstellen musst.
Versuch mal BefehlX(GadgetID(#OptionGadget), color etc...)
Signatur und so
Re: OptionGadget Hintergrundfarbe
Hier der Code von RSBasic:
Code: Alles auswählen
EnableExplicit
Define EventID
Global color = CreateSolidBrush_(RGB(255,0,0))
Procedure myCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_CTLCOLORSTATIC
If lparam = GadgetID(1)
ProcedureReturn color
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OptionGadget(1,10,10,200,20,"Link")
SetWindowCallback(@myCallback())
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DeleteObject_(color)
End
EndIf
ForEver
EndIfComputer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Re: OptionGadget Hintergrundfarbe
Ok, also diese Zeile ist die entscheidende:
If lparam = GadgetID(1)
Anstatt 1 müssen dort alle GadgetIDs von deien OptionGadgets rein.
Ich habe das jetzt mit Enumeration gelöst.
Für den Fall, dass du deine OptionGadgets dynamisch erstellst, musst du die ID tatsächlich in einer Liste speichern. Aber das muss du dann so oder so. Sonst kommst du ja nicht an die Daten ran.
If lparam = GadgetID(1)
Anstatt 1 müssen dort alle GadgetIDs von deien OptionGadgets rein.
Ich habe das jetzt mit Enumeration gelöst.
Für den Fall, dass du deine OptionGadgets dynamisch erstellst, musst du die ID tatsächlich in einer Liste speichern. Aber das muss du dann so oder so. Sonst kommst du ja nicht an die Daten ran.
Code: Alles auswählen
EnableExplicit
Enumeration
#Option1
#Option2
#Option3
EndEnumeration
Define EventID
Global color = CreateSolidBrush_(RGB(255,0,0))
Procedure myCallback(hWnd, uMsg, wParam, lParam)
Protected n.i ;LaufVariable
Select uMsg
Case #WM_CTLCOLORSTATIC
For n = #Option1 To #Option3
If lparam = GadgetID(n)
ProcedureReturn color
EndIf
Next
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OptionGadget(#Option1,10,10,200,20,"Link 1")
OptionGadget(#Option2,10,40,200,20,"Link 2")
OptionGadget(#Option3,10,70,200,20,"Link 3")
SetWindowCallback(@myCallback())
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DeleteObject_(color)
End
EndIf
ForEver
EndIfSignatur und so
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: OptionGadget Hintergrundfarbe
Code: Alles auswählen
Global color = CreateSolidBrush_(RGB(255,0,0))
Procedure myCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_CTLCOLORSTATIC
If GadgetType(GetDlgCtrlID_(lParam)) = #PB_GadgetType_Option
ProcedureReturn color
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedurePureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: OptionGadget Hintergrundfarbe
@TS-Soft:
1 Mio x Danke. Das war der Kniff nachdem ich gesucht habe. Aber nu muss ich leider noch etwas arbeiten und kann nicht weiter proggen
1 Mio x Danke. Das war der Kniff nachdem ich gesucht habe. Aber nu muss ich leider noch etwas arbeiten und kann nicht weiter proggen
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.