Lade...
 

Enum-Transformationstabelle Syntax

Syntax der Enumeration-Transformationstabelle

Eintrag
:= ganzeZahl, Bezeichner, Bitmaske
Bezeichner
:= String | multiple String-Konstante
Liste
:=  Liste | Liste Eintrag
Tabelle
:= Liste | sectionName { Liste }

Beispiel

            // Zahl  Bezeichner                     Bitmaske 
            paymentEnum   
                              
            {                                
               0,    T("Überweisung", Remittance),  0xff 
               1,    T(Scheck, Cheque),             0xff 
               2,    T(Bankeinzug, Draft),          0xff 
               3,    T(Bar, Cash),                  0xff 
            }    

Mehrere Transformationstabellen können in einem File zusammengefasst werden. Dann muss allerdings ein Sektionsname angegeben sein. Beim Anlegen oder Ändern einer Transformationstabelle muss darauf geachtet werden, mit welchem Typ die Slots angelegt wurden.

Für die nachfolgenden Typen gilt der folgende  Werte-Bereich:

Für die nachfolgenden Typen gilt folgender Wertebereich:

INTEGER, ENUMINT:     -2.147.483.648 bis 2.147.483.647

SHORT, ENUMSHORT:            - 32.768 bis 32.767

CHAR, ENUMCHAR:                     - 128 bis 127

Werden die Wertebereiche verlassen, dann wird der Eintrag zwar zur Auswahl angeboten, kann aber nicht gespeichert werden.

Eine Tabelle darf auch mehrere Einträge für die gleiche Zahl oder für den gleichen Bezeichner enthalten. Transform wird dann immer den ersten passenden Eintrag verwenden. Enumerationswidgets können dadurch Einträge mit doppelten Bezeichnern enthalten, wobei immer nur der erste auswählbar ist.

 

Filter
Über die jedem Eintrag zugeordnete Bitmaske kann die Tabelle hierarchisch aufgeteilt werden. Das Enumeration-Windowobjekt zeigt nur die Einträge, die sein internes Filter-Flag auswählt. Letzteres ist mit 0xff initialisiert, kann aber mit dem Flag MASK(n) gesetzt oder mit SetFlags verändert werden. Als Filterung wird eine binäre Maske verwendet, die nur die Elemente durchlässt, deren Bit-Wert im Filter-Flag enthalten ist.

                                                                // Bitmaske
attributeEnum                                                   //   Hex          Bin    Dez
{
     0, T("", ""),                                                  0x01 // 0000 0001 =   1
     1, T("Sachmerkmal", "Attribute"),                              0x02 // 0000 0010 =   2
     2, T("Annahme", "Approximation"),                              0x08 // 0000 1000 =   8
     4, T("Standard", "Standard"),                                  0x10 // 0001 0000 =  16 
     8, T("circa", "about"),                                        0x08 // 0000 1000 =   8
  1024, T("nur für interne Zwecke", "for internal use only"),       0x04 // 0000 0100 =   4
}

Alle Bit-Maskierungen zusammen ergeben den Wert  0x1F = 1 1111 = 31

Beispiel 1:

Enum(CX_ATTRIBUTE::attributeEnum, MASK(0x03), 10, 16, 125, 80, "classix.num~attributeEnum")

In diesem Fall werden nur die beiden ersten Einträge (0x01 + 0x02) angezeigt. Der Filter kann während der Laufzeit auch mittels 0x03 SetFlags(, attributeEnum) gesetzt werden
 

Beispiel 2:
Enum(CX_ATTRIBUTE::attributeEnum, MASK(0x1D), 10, 16, 125, 80, "classix.num~attributeEnum")

In diesem Fall werden alle - außer dem zweiten - Einträge (0x1F - 0x02 = 0x1D, bzw. dezimal: 31 - 2 = 29) angezeigt. Der Filter kann während der Laufzeit auch mittels 0x1D SetFlags(, attributeEnum) gesetzt werden
 

Persistente Transformationstabellen
Statt als File, können Transformationstabellen auch in der Datenbank abgelegt werden (siehe Anweisung SaveEnumTbl), d.h. als Objekte der Klasse CX_ENUM_TABLE. Wenn das ClassiX®-System ein Enumeration-Element transformieren muss, sucht es die entsprechende Tabelle zunächst in der Datenbank, dann als File.

Enumerations-Namen können beliebige Texte sein. Auch führende Leerzeichen sind erlaubt.