Set/GetGadgetItemData für Panel (crossplattform)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
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

Set/GetGadgetItemData für Panel (crossplattform)

Beitrag 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
Zuletzt geändert von ts-soft am 19.12.2010 22:42, insgesamt 1-mal geändert.
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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

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

Beitrag von edel »

Erstellst du nen Panel immer wieder (z.b. Prefsdialog) wird die Map immer groesser und groesser
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: Set/GetGadgetItemData für Panel (crossplattform)

Beitrag 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
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