Je cherche le moyen de créer des ListIconGadget dynamiquement.
J'ai réussi pour des panelgadget, mais la je bloque.
Ci joint un code rapide pour être plus clair.
Mon code exemple n'est pas parfait, c'est juste pour essayer de vous faire comprendre mon besoin.
Je passe par une base de données sqlite pour gérer certains gadgets dynamique (plus pratique pour moi),
et pour l'exemple ci-joint j'ai remplacé les "GetDatabaseString(Bdd_Onglets, 1))" et "GetDatabaseString(Bdd_ListIcon, 2))"
par les variables "NomTab.s" et "NouveauListIcon.s".
Si une âme charitable a une idée...
Merci d'avance.
Code : Tout sélectionner
Global Window_1
Global Panel_0, ListIcon_0, Frame3D_Tab, Button_Tab, Frame3D_List, Button_List, Frame3D_Tab_Variable, Button_Tab_Variable, Frame3D_List_variable, Button_List_variable, String_Nom, Text_0
Global NouveauListIcon.s, NomTab.s
Procedure OpenWindow_1(x = 0, y = 0, width = 710, height = 460)
Window_1 = OpenWindow(#PB_Any, x, y, width, height, "Ajouter Tab et ListIcon Dynamique", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Panel_0 = PanelGadget(#PB_Any, 10, 10, 650, 200)
AddGadgetItem(Panel_0, -1, "Tab 1")
ListIcon_0 = ListIconGadget(#PB_Any, 0, 0, 650, 180, "Column 1", 100)
SetGadgetColor(ListIcon_0, #PB_Gadget_BackColor,RGB(216,254,254))
SetGadgetAttribute(ListIcon_0, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)
CloseGadgetList()
Frame3D_Tab = FrameGadget(#PB_Any, 20, 270, 280, 70, "Ajouter Tab dynamiquement")
Button_Tab = ButtonGadget(#PB_Any, 120, 300, 100, 25, "Ajouter Tab")
Frame3D_List = FrameGadget(#PB_Any, 330, 270, 330, 70, "Ajouter ListIconGadget dynamiquement")
Button_List = ButtonGadget(#PB_Any, 450, 300, 100, 25, "Ajouter LisIcon")
Frame3D_Tab_Variable = FrameGadget(#PB_Any, 20, 350, 280, 70, "Ajouter Tab dynamiquement à partir d'une variable")
Button_Tab_Variable = ButtonGadget(#PB_Any, 80, 380, 180, 25, "Ajouter Tab à partir d'une variable")
Frame3D_List_variable = FrameGadget(#PB_Any, 330, 350, 330, 70, "Ajouter ListIconGadget dynamiquement à partir d'une variable")
Button_List_variable = ButtonGadget(#PB_Any, 400, 380, 210, 25, "Ajouter LisIcon à partir d'une variable")
String_Nom = StringGadget(#PB_Any, 110, 230, 140, 25, "")
Text_0 = TextGadget(#PB_Any, 20, 240, 80, 25, "Nom du Tab")
EndProcedure
Procedure AjouteTab()
OpenGadgetList(Panel_0)
AddGadgetItem(Panel_0, -1, GetGadgetText(String_Nom))
EndProcedure
Procedure Ajoute_Tab_Depuis_Une_Variable()
;Cette variable provient d'une base de donnée
NomTab = GetGadgetText(String_Nom)
OpenGadgetList(Panel_0)
AddGadgetItem(Panel_0, -1, NomTab )
EndProcedure
Procedure AjouteListIcon()
Global ListIcon_1 : If UseGadgetList(WindowID(Window_1)) : ListIcon_1 = ListIconGadget(#PB_Any, 0, 0, 585, 144, "Nom_Panel" , 585) : SetGadgetColor(ListIcon_1, #PB_Gadget_BackColor,RGB(46, 244, 216)) : SetGadgetAttribute(ListIcon_1, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon) : EndIf
EndProcedure
Procedure Ajoute_ListIcon_Depuis_Une_Variable()
;Cette variable provient d'une base de donnée, je suis obligé de faire comme ça.
NouveauListIcon = "Global ListIcon_2 : If UseGadgetList(WindowID(Window_1)) : ListIcon_2 = ListIconGadget(#PB_Any, 0, 0, 585, 144," + Chr(34) + "Nom_Panel" + Chr(34) + " , 585) : SetGadgetColor(ListIcon_0, #PB_Gadget_BackColor,RGB(204, 156, 251)) : SetGadgetAttribute(ListIcon_0, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon) : EndIf"
; C'est à partir de là que je ne sais pas quoi faire.
; Ajouter le panelgadget c'est facile puisque j'ai le "AddGadgetItem(Panel_0, -1, NomTab )",
;mais pour le "ListIcon" je n'ai rien trouvé.
EndProcedure
Procedure Window_1_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_Tab
AjouteTab()
Case Button_Tab_Variable
Ajoute_Tab_Depuis_Une_Variable()
Case Button_List
AjouteListIcon()
Case Button_List_variable
Ajoute_ListIcon_Depuis_Une_Variable()
Debug NouveauListIcon
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
OpenWindow_1()
Repeat
event = WaitWindowEvent()
WEvent = EventWindow()
Until Window_1_Events(event) = #False
End