Page 1 sur 1

SetGadgetColor() inactif dans FrameGadget()

Publié : mar. 17/sept./2024 13:09
par Jacobus
Dans l'exemple ci-dessous la fonction de coloration des gadgets ne fonctionne pas lorsqu'ils sont dans un FrameGadget() et si ce dernier se trouve dans un PanelGadget() c'est encore pire car on peut voir les limites des gadgets. C'est moche. Y a t-il moyen de corriger cela ?

Code : Tout sélectionner

Enumeration
  #WIN_DOW
  #FRAME_WIN1
  #TEXT_1
  #STRING_1
  #PANEL
  #FRAME_WIN2
  #TEXT_2
  #STRING_2
EndEnumeration


If OpenWindow(#WIN_DOW, 100, 100, 600, 400, "Color in frame", #PB_Window_SystemMenu)
  WinWidth  = WindowWidth(#WIN_DOW,#PB_Window_InnerCoordinate)
  WinHeight = WindowHeight(#WIN_DOW,#PB_Window_InnerCoordinate)
  
  FrameGadget(#FRAME_WIN1, 5, 5, 250, WinHeight-10, "GADGETS EN COULEUR" ,#PB_Frame_Container)
    TextGadget(#TEXT_1,5,30,100,20,"Texte Gadget :") 
    SetGadgetColor(#TEXT_1, #PB_Gadget_BackColor, RGB(255, 255, 255))  
    SetGadgetColor(#TEXT_1, #PB_Gadget_FrontColor, RGB(210, 60, 66))
    
    StringGadget(#STRING_1,5,60,100,20,"String Gadget",#PB_String_ReadOnly)
    SetGadgetColor(#STRING_1, #PB_Gadget_BackColor, RGB(255, 255, 255))  
    SetGadgetColor(#STRING_1, #PB_Gadget_FrontColor, RGB(68, 201, 66))
  CloseGadgetList()
  
  PanelGadget(#PANEL,260, 5, WinWidth-265, WinHeight-10)
  AddGadgetItem(#PANEL,0,"Panel Gadget")
  PanelWidth = GetGadgetAttribute(#PANEL, #PB_Panel_ItemWidth)
  PanelHeight = GetGadgetAttribute(#PANEL, #PB_Panel_ItemHeight)
      FrameGadget(#FRAME_WIN2, 5, 5, PanelWidth-10, PanelHeight-10, "Joli frame" ,#PB_Frame_Container)
        TextGadget(#TEXT_2,5,30,100,20,"Texte Gadget :") 
        SetGadgetColor(#TEXT_2, #PB_Gadget_BackColor, RGB(255, 255, 255))  
        SetGadgetColor(#TEXT_2, #PB_Gadget_FrontColor, RGB(210, 60, 66))
        
        StringGadget(#STRING_2,5,60,100,20,"String Gadget",#PB_String_ReadOnly)
        SetGadgetColor(#STRING_2, #PB_Gadget_BackColor, RGB(255, 255, 255))  
        SetGadgetColor(#STRING_2, #PB_Gadget_FrontColor, RGB(68, 201, 66))
      CloseGadgetList()
  CloseGadgetList()
  
  Repeat  
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow      
          Select EventWindow()     
            Case #WIN_DOW 
              Quit = 1          
          EndSelect
    EndSelect 
  Until Quit = 1
End  
EndIf 
 

Re: SetGadgetColor() inactif dans FrameGadget()

Publié : mar. 17/sept./2024 14:50
par venom
Tu s regarder dans les options du compilateur si le support des thèmes est activés ou pas ?







@++

Re: SetGadgetColor() inactif dans FrameGadget()

Publié : mar. 17/sept./2024 15:11
par Jacobus
venom a écrit : mar. 17/sept./2024 14:50 Tu s regarder dans les options du compilateur si le support des thèmes est activés ou pas ?
Oui, les thèmes et le facteur DPI. Pourquoi, chez toi ça fonctionne ?
Sinon la solution de rechange est de prendre un ContainerGadget() qui supporte les modifs couleurs, mais c'est dommage de ne pouvoir le faire avec le FrameGadget() que Fred a reformaté en "Container" avec la version 6.12.

Re: SetGadgetColor() inactif dans FrameGadget()

Publié : mar. 17/sept./2024 17:18
par venom
Non je n'ai pas testé. C'était une supposition :wink:







@++

Re: SetGadgetColor() inactif dans FrameGadget()

Publié : mer. 18/sept./2024 22:17
par Mindphazer
J'ai les mêmes symptômes sur Windows (aucun des gadgets n'affiche de texte en couleur)

Mais : sous MacOS, le même code affiche bien les gadgets en couleur...

Re: SetGadgetColor() inactif dans FrameGadget()

Publié : mer. 18/sept./2024 22:57
par Jacobus
Mindphazer a écrit : mer. 18/sept./2024 22:17 sous MacOS, le même code affiche bien les gadgets en couleur...
C'est donc la version 6.12 pour Windows qui clash. je pense que c'est le nouveau FrameGadget() qui déconne avec SetGadgetColor(). De plus, en fonction de l'ajout de l'option #container ou pas, de CloseGadgetList() ou pas.
j'ai testé FrameGadget() sans l'option #container et dans ce cas il ne faut pas mettre CloseGadgetList() sinon ça génère des erreurs. J'ai mis un moment à comprendre d'où venaient les erreurs...
Si tu décide de changer et d'ajouter l'option #container mais que tu oublies d'ajouter CloseGadgetList(), là aussi ça merdoie grave.
Donc, un coup avec CloseGadgetList() et un coup sans en fonction de ce que tu veux, en mode Container ou pas... Pas simple.
Il vaut mieux éviter FrameGadget() tant que le problème n'est pas corrigé.