Problem mit Hintergrundfarbe beim Containergadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Forsti
Beiträge: 23
Registriert: 21.01.2011 12:46

Problem mit Hintergrundfarbe beim Containergadget

Beitrag von Forsti »

Hallo liebe Forumer!
Ich stelle immer wieder Merkwürdigkeiten in PureBasic fest. Beim Einfärben des Hintergrundes von unterschiedlichen Containergadgets habe ich festgestellt, daß letztere nicht unterschiedlich gefärbt werden können. Ein mitgeliefertes Codeschnipsel zeigt das Verhalten:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Container_0
  #Text_3
  #Button_1
  #Button_2
  #Container_4
  #Calendar_9
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 569, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ContainerGadget(#Container_0, 65, 35, 420, 130, #PB_Container_Raised)
      TextGadget(#Text_3, 110, 60, 170, 20, "Label", #PB_Text_Center)
      ButtonGadget(#Button_1, 15, 15, 150, 20, "Button_1")
      ButtonGadget(#Button_2, 240, 15, 150, 20, "Button_2")
    CloseGadgetList()
    ContainerGadget(#Container_4, 60, 185, 420, 190, #PB_Container_Raised)
      CalendarGadget(#Calendar_9, 80, 10, 240, 165)
    CloseGadgetList()
    ; Gadget Colors
    PureCOLOR_SetGadgetColor(#Container_0, #PureCOLOR_SystemColor, $FF0080)
    PureCOLOR_SetGadgetColor(#Text_3, #PureCOLOR_SystemColor, $FFFF)
    PureCOLOR_SetButtonColor(#Button_1, #PureCOLOR_SystemColor, $FFFF00)
    PureCOLOR_SetButtonColor(#Button_2, #PureCOLOR_SystemColor, $8080FF)
    PureCOLOR_SetGadgetColor(#Container_4, #PureCOLOR_SystemColor, $1791E8)   ; $1791E8 überschreibt $FF0080?
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Container_0
      ElseIf EventGadget = #Text_3
      ElseIf EventGadget = #Button_1
      ElseIf EventGadget = #Button_2
      ElseIf EventGadget = #Container_4
      ElseIf EventGadget = #Calendar_9
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Wie mein Beispiel (erzeugt vom PureForm Designer ohne weitere Funktionalität) zeigt, gibt es zwei Container, die mit verschiedenen Background Farben belegt worden sind. Angezeigt werden beide aber mit der zuletzt angegebenen Farbe (im Code mit Kommentar versehen). Liegt das eventuell an der Einstellung >xp skin< in den Compiler-Optionen? Für mich ist dies erstmal nicht zu erklären.

Vielen Dank im Voraus für eine Antwort

forsti
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: Problem mit Hintergrundfarbe beim Containergadget

Beitrag von ts-soft »

Bei Fragen zu Purecolor kann Dir Gnozal eher helfen, wenn Du des engl. Mächtig bist, am besten hier:
http://www.purebasic.fr/english/viewforum.php?f=25 mal nachfragen.

Ich selber nutze die Lib nicht, da ich Abhängigkeiten und Einschränkungen (kein 64-Bit usw.)
möglichst vermeide. Jedenfalls mit den PB Funktionen kann ich keinen Fehler feststellen:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Container_0
  #Text_3
  #Button_1
  #Button_2
  #Container_4
  #Calendar_9
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 569, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ContainerGadget(#Container_0, 65, 35, 420, 130, #PB_Container_Raised)
      TextGadget(#Text_3, 110, 60, 170, 20, "Label", #PB_Text_Center)
      ButtonGadget(#Button_1, 15, 15, 150, 20, "Button_1")
      ButtonGadget(#Button_2, 240, 15, 150, 20, "Button_2")
    CloseGadgetList()
    ContainerGadget(#Container_4, 60, 185, 420, 190, #PB_Container_Raised)
      CalendarGadget(#Calendar_9, 80, 10, 240, 165)
    CloseGadgetList()
    ; Gadget Colors
    SetGadgetColor(#Container_0, #PB_Gadget_BackColor, $FF0080)
    SetGadgetColor(#Text_3, #PB_Gadget_BackColor, $FFFF)
    SetGadgetColor(#Container_4, #PB_Gadget_BackColor, $1791E8)
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Container_0
      ElseIf EventGadget = #Text_3
      ElseIf EventGadget = #Button_1
      ElseIf EventGadget = #Button_2
      ElseIf EventGadget = #Container_4
      ElseIf EventGadget = #Calendar_9
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Gruß
Thomas
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
Antworten