Seite 1 von 1

Set/GetGadgetItemData für Panel (crossplattform)

Verfasst: 19.12.2010 21:00
von ts-soft

Code: Alles auswählen

;======= Set/GetGadgetItemData for Panel ==================
;  Author:                Thomas Schulz (ts-soft)
;  Date:                  December 19, 2010
;  Target OS:             All
;  Target Compiler:       Requires PureBasic 4.50
;==========================================================

EnableExplicit

Structure _PanelGadgetItem_
  Map Item.i()
EndStructure

NewMap _PanelItemData_._PanelGadgetItem_()

Procedure _SetGadgetItemData(Gadget, Item, Value)
  Shared _PanelItemData_._PanelGadgetItem_()

  If GadgetType(Gadget) = #PB_GadgetType_Panel
    _PanelItemData_(Str(Gadget))\Item(Str(Item)) = Value
  Else
    ProcedureReturn SetGadgetItemData(Gadget, Item, Value)
  EndIf
EndProcedure

Procedure _GetGadgetItemData(Gadget, Item)
  Shared _PanelItemData_._PanelGadgetItem_()

  If GadgetType(Gadget) = #PB_GadgetType_Panel
    ProcedureReturn _PanelItemData_(Str(Gadget))\Item(Str(Item))
  Else
    ProcedureReturn GetGadgetItemData(Gadget, Item)
  EndIf
EndProcedure

Macro SetGadgetItemData(Gadget, Item, Value)
  _SetGadgetItemData(Gadget, Item, Value)
EndMacro

Macro GetGadgetItemData(Gadget, Item)
  _GetGadgetItemData(Gadget, Item)
EndMacro

Procedure DeletePanelGadgetItemData(Gadget)
  Shared _PanelItemData_._PanelGadgetItem_()
  
  ClearMap(_PanelItemData_(Str(Gadget))\Item())
  DeleteMapElement(_PanelItemData_(), Str(Gadget)) 
EndProcedure
Eine weitere Version von mir findet Ihr hier: http://www.purebasic.fr/english/viewtop ... 12#p341412

Gruß
Thomas

Re: Set/GetGadgetItemData für Panel (crossplattform)

Verfasst: 19.12.2010 21:28
von edel
Erstellst du nen Panel immer wieder (z.b. Prefsdialog) wird die Map immer groesser und groesser

Re: Set/GetGadgetItemData für Panel (crossplattform)

Verfasst: 19.12.2010 21:40
von ts-soft
edel hat geschrieben:Erstellst du nen Panel immer wieder (z.b. Prefsdialog) wird die Map immer groesser und groesser
Bei #PB_Any schon, ansonsten wird es ja überschrieben, enthält aber bereits Werte :mrgreen:
Sollte meistens nichts ausmachen, ansonsten gibts ja noch Deine Windows-Only Version!

Hab aber DeletePanelGadgetItemData(Gadget) als WorkAround hinzugepackt, hoffentlich geht das auch :mrgreen:

Gruß
Thomas