<< Inhaltsverzeichnis Suchen >>

ADDFIELD

Funktion

Syntax:

ADDFIELD(<FORMAT-STRING>,<VARIABLE>,
                      [<MACRO-VORHER>],[<MACRO-NACHHER>])

<FORMAT-STRING> = <STRING-AUSDRUCK>

 

Bedeutung:

Der <FORMAT-STRING> hat folgenden Aufbau:

 

 

Position

Länge

Bedeutung

 

1

1

Feldtyp: E = Eingabefeld
                S = Systemdatum
                B = Button
                P = DefPushbutton
                R = Radiobutton
                C = Checkbox

 

 

Achtung: Comboboxen, Listboxen, Scrollbars, Editfelder und statische Texte haben eine Sonderstellung und können nicht mit ADDFIELD sondern nur mit ADDCONTROL erzeugt werden.

 

 

 

 

 

 

2
4
6
8
9
10

2
2
2
1
1
1

Zeile
Spalte
Nachkommastellen
Vorzeichen J/N
Blinken J/N
Bildschirmattribut:

 

 

 

 

N             =             Normal (NORMAL)
D             =             Doppelt hell (INTENSIVE)
M            =             Matt invers (DARK)
I              =             Invers (INVERSE)
S             =             Standard (STANDARD)
U             =             Überschrift (HEADER)
E             =             Meldung (MESSAGE)

 

 

11
12
13
14
15
16
17
37


38


1
1
1
1
1
1
20
<n>


Änderbar J/N. (=N bei deaktiviertem Button)
Anzeige immer oder Ansprung I/A
Groß-/Kleinbuchstaben/Alle G/K/A
Sonderzeichen zulässig J/N
Schlüssel für Blättern in Indexdatei 0...9
Automatisches Feldende J/N
Zulässige Zeichenmenge
Maskenfelddarstellung z.B. $$#,##
<n> ist variabel lang. Es können die Sonderzeichen $, #, & und ^ wie bei der Maskenerstellung verwendet werden.
Bei Checkboxen und Radiobuttons folgt nach dem einstelligen & der Text für die Checkbox bzw. den Radiobutton.

 

 

ADDFIELD prüft, ob der <FORMAT-STRING> korrekt ist.

 

 

Mit der Funktion ADDFIELD können sowohl auf bestehenden Masken und Maskenwindows als auch auf Windows, die mit der Anweisung WINDOW erzeugt wurden, zusätzliche Eingabefelder (Buttons, etc.) dynamisch erzeugt und gelöscht (DELFIELD) werden. Die Funktion ADDFIELD unterscheidet automatisch zwischen den zwei in Frage kommenden Möglichkeiten:

 

 

1. Eine Maske oder ein Maskenwindow ist aktiv:

 

 

 

In diesem Fall werden alle durch ADDFIELD definierten Felder jeweils am Ende der Verarbeitungsreihenfolge angefügt.

 

 

 

Jedes definierte Feld steht sofort zur Verarbeitung zur Verfügung. Unter Windows ist die Anweisung DISPLAY #... oder DISPLAY ALL notwendig, um das neue Feld sichtbar zu machen, unter Java wird das Feld sofort sichtbar.

 

 

 

Die Anzahl der Felder, die unter Windows/DOS/UNIX auf einer Maske mit ADDFIELD eingefügt werden können, errechnet sich folgendermaßen:

 

 

 

Die Maximalanzahl von Eingabefeldern, für die vom EBUS-Generator bei der Generierung Speicherplatz angelegt wird, ist definiert durch die Maske des Programmes, die die meisten Eingabefelder besitzt. Folglich können auf jeder anderen Maske soviele Felder mit ADDFIELD hinzugefügt werden, bis diese Maximalanzahl erreicht ist. Um auch auf der Maske mit den meisten Eingabefeldern zusätzliche Felder definieren zu können, existiert die Compileranweisung #ADDFIELDS = <ZAHL>. Mit dieser Anweisung wird die Maximalanzahl um <ZAHL> Felder erhöht. Somit können dann auf der Maske mit den meisten Eingabefeldern noch <ZAHL> zusätzliche Felder definiert werden. Die Compileranweisung #ADDFIELDS ist unter Java nicht notwendig, da dort stets beliebig viele Maskenfelder mit ADDFIELD erzeugt werden können.

 

 

Die Funktion ADDFIELD liefert als Ergebnis 0, wenn kein Fehler auftrat, sonst eine Fehlernummer. Die entsprechenden Fehlernummern sind im Anhang aufgeführt.

Wird ADDFIELD unter Java in einer Funktion ausgeführt, so müssen dimensionierte <VARIABLE> verwendet werden, andernfalls werden lokale Variablen aus der Funktion verwendet, die nach der Beendigung der Funktion nicht mehr existieren.

 

Beispiel:

/* Zwei Felder sollen hinzugefügt werden: Datum und Betrag
 H%=ADDFIELD ("E071500NNDJIAJ N                    ^^.^^.^^",
                                  DATUM,PROG.MACRO.VOR,PROG.MACRO.NACH)
IF H%<>0 THEN ... FEHLER ... ENDIF
H%=ADDFIELD ("E091502NNDJIAJ N                    $$$.$$#,##",
                                  BETRAG,PROG.MACRO.VOR2,
                                  PROG.MACRO.NACH2)
IF H%<>0 THEN ... FEHLER ... ENDIF

 

 

 

 

Achtung: Bei Masken und Maskenwindows, die keine Eingabefelder besitzen, können im Macro vor Maskenausgabe mit ADDFIELD Felder definiert werden. Werden die Felder im Macro für Maskenverarbeitung definiert, so liefert ADDFIELD zwar keinen Fehler, die eingefügten Felder können aber nicht verarbeitet werden, da keine Feldverarbeitung aktiv ist.

 

 

 

 

 

2. Ein Window ist aktiv, das mit der Anweisung WINDOW erzeugt wurde:

 

 

 

Ein derartiges Window besitzt keine Eingabefelder. Mit ADDFIELD ist es möglich, beliebige Felder für eine Feldverarbeitung zu definieren. Die Anzahl der zusätzlich definierbaren Felder wird ausschließlich durch die Compileranweisung #ADDFIELDS = <ZAHL> festgelegt. Da das Window keine Feldverarbeitung besitzt, speichert ADDFIELD die Felder nur in einem Zwischenpuffer. Die Verarbeitung dieser Felder wird durch die Funktion STARTFIELD gestartet.

 

Beispiel:

/* In einem Window sollen MELDUNG1$ und MELDUNG2$ angezeigt
/* werden. Zusätzlich sollen 2 Pushbuttons mit ‘OK’ und ‘Abbruch’ erzeugt
/* werden:
WINDOWPOS(8,20)
WINDOW(2,5,40,1,3,"Meldung")
CURSOR(2,1) PRINT MELDUNG1$;
CURSOR(3,1) PRINT MELDUNG2$;
JA$ = "&OK"
NEIN$ = "&Abbruch"
H1%=ADDFIELD ("B023000 NDJIAJ N                    &&&&&&&&&",
                                   JA$,,PROG.JA)
IF H1%<>0 THEN ...
FEHLER ... ENDIF
H2%=ADDFIELD ("B043000 NDJIAJ N                    &&&&&&&&&",
                                   NEIN$,,PROG.NEIN)
IF H2%<>0 THEN ... FEHLER ... ENDIF
H3%=STARTFIELD
IF H3%<>0 THEN ...
FEHLER ... ENDIF
WCLOSE
...

 

 

Die Macronamen dürfen fehlen, wenn bei der Feldverarbeitung keine Macros ausgeführt werden sollen. in diesem Fall werden nur Kommata geschrieben:

 

Beispiel:

H%=ADDFIELD("B071500 NDJIAJ N                    &&&&&&",H$,,)

 

siehe auch:

ADDCONTROL, #ADDFIELDS, DELFIELD, STARTFIELD, EDITFIELD