Seite 1 von 1

Problem mit Hintergrundfarbe beim Containergadget

Verfasst: 20.06.2012 15:22
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

Re: Problem mit Hintergrundfarbe beim Containergadget

Verfasst: 20.06.2012 15:40
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