OptionGadget Hintergrundfarbe

Für allgemeine Fragen zur Programmierung mit PureBasic.
TKRoth
Beiträge: 32
Registriert: 24.02.2012 15:34
Wohnort: Hamburg
Kontaktdaten:

OptionGadget Hintergrundfarbe

Beitrag von TKRoth »

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?
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: OptionGadget Hintergrundfarbe

Beitrag von Derren »

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...)
Signatur und so
TKRoth
Beiträge: 32
Registriert: 24.02.2012 15:34
Wohnort: Hamburg
Kontaktdaten:

Re: OptionGadget Hintergrundfarbe

Beitrag von TKRoth »

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
EndIf
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: OptionGadget Hintergrundfarbe

Beitrag von Derren »

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.

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
EndIf
Signatur und so
Benutzeravatar
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

Beitrag von ts-soft »

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
EndProcedure
reicht auch :wink:
PureBasic 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.
Bild
TKRoth
Beiträge: 32
Registriert: 24.02.2012 15:34
Wohnort: Hamburg
Kontaktdaten:

Re: OptionGadget Hintergrundfarbe

Beitrag von TKRoth »

@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 :cry:
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Antworten