Lade...
 

CX_SYSTEM_OBJECT::DefineSlot

CX_SYSTEM_OBJECT::DefineSlot

Beschreibung:

Diese Funktion legt einen neuen Slot an.

Die Funktion sucht einen freien Platz im Dictionary des ClassiX®-Systems und erzeugt dort einen Eintrag für ein dynamisches Datenfeld. Dieser Eintrag wird in ein Objekt der Klasse CX_VESSEL 'verpackt', damit der Dictionary-Eintrag mit InstantView® bearbeitet werden kann. DrainWindow für das erzeugte Objekt aktualisiert dann das Dictionary.

Sind die Meta-Informationen aus der CLASSIX.INI in der Datenbank gespeichert ist, dann lässt sich über die erhaltenen CX_VESSEL-Objekte auch das persistente Dictionary pflegen. Da dadurch aber das Dictionary aus der .ini und der Zustand des persistenten Dicitonaries auseinanderlaufen, wird empfohlen, DefineSlot nur für transiente, temporäre Slots zu verwenden.
Die mit DefineSlot angelegten Slots sind nur innerhalb der aktuellen ClassiX-Session gültig. Die Funktion sollte deshalb nur für das Erzeugen von temporären, transienten Slots verwendet werden. Die mit DefineSlot angelegten Slots werden auch ungültig, sobald ReloadSlotDefinitions ausgeführt wurde.

 

Wird DefineSlot nur für temporäre Slots verwendet, sollte falls möglich auf CX_JSON_OBJECT für beliebige Datenfelder ausgewichen werden (nur möglich, falls keine Objektreferenzen abgelegt werden müssen).

 

Für das dauerhafte Definieren von Slots, die über eine Session hinweg bestehen sollen, wird empfohlen, den entsprechenden Eintrag in die CLASSIX.INI einzufügen und die Slots mit ReloadSlotDefinitions neu zu laden.
Code-Beispiel:

Var(slot)
SystemObject Call(DefineSlot) -> slot
"tempSlot" slot Put(Name())
"STRING" slot Put(Type())

Var(obj)
CreateTransObject(CX_EXPANDABLE) -> obj
"My temporary data" obj Put(tempSlot)

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top    
Stack(Out) Top CX_VESSEL  
Funktionsaufruf: Call(DefineSlot)