<< Inhaltsverzeichnis Suchen >>

SELAEDIT

Funktion

Syntax:

SELAEDIT(<FELDER>,<FELDTYPEN>,<DEZIMALPUNKT>,
                     <TASTE>,[<MACRO-VORHER>],[<MACRO-NACHHER>])

<FELDER>                        = <STRING-AUSDRUCK>
<FELTYPEN>                   = <STRING-AUSDRUCK>
<DEZIMALPUNKT>       = <STRING-AUSDRUCK>
<TASTE>                           = <STRING-VARIABLE>
<MACRO-VORHER>      = <MACRO-NAME>
<MACRO-NACHHER>   = <MACRO-NAME>

Bedeutung:

SELAEDIT editiert Felder der aktuellen Zeile in einem SELECTA, der durch ein Trennzeichen getrennte Teilfelder enthält.

<FELDER> enthält durch Strichpunkt getrennt die Nummern der SELECTA-Teilfelder, die editiert werden sollen, und legt damit auch die Reihenfolge der Feldverarbeitung fest. Wird SELAEDIT im ON SELECT(RETURN) MACRO aufgerufen und wurde dieser Macro durch einen Mausklick aktiviert, so wird als erstes dasjenige Feld editiert, in dem sich der Mauszeiger befindet, falls dieses Feld in <FELDER> vorkommt. In jedem anderen Fall wird als erstes das erste Feld aus <FELDER> editiert.

<FELDTYPEN> enthält durch Strichpunkt getrennt die Feldtypen der Felder. Zu jeder Feldnummer in <FELDER> muß ein Feldtyp angegeben werden. Der Feldtyp ist folgendermaßen aufgebaut:

<FELDART>,<FELDLAENGE>[, <NACHKOMMASTELLEN>,
                                                           <NULLANZEIGE>
                                                           [,<TAUSENDER-TRENNZEICHEN>]]

 

<FELDART>                                                   =


<FELDLAENGE>                                          =
<NACHKOMMASTELLEN>                        =
<NULLANZEIGE>                                        =
<TAUSENDER-TRENNZEICHEN>            =

A (alphanumerisch) oder
N (numerisch) oder
D (Datum)
<ZAHL>
<ZAHL>
<ZAHL>
<ZAHL>

 

Leerzeichen (Blanks) sind innerhalb des Feldtyps nicht zulässig. Die Parameter <NACHKOMMASTELLEN> und <NULLANZEIGE> müssen angegeben werden bei <FELDART> = "N". Bei <FELDART> = "A" und "D" dürfen sie nicht angegeben werden.

Ist <FELDLAENGE> = 0, so gilt als Feldlänge die aktuelle Spaltenbreite im SELECTA.

<NACHKOMMASTELLEN> legt die Anzahl der Nachkommastallen fest bei <FELDART> = "N". Die <FELDLAENGE> ist dann die Gesamtlänge inklusive der <NACHKOMMASTELLEN>.

Ist <NULLANZEIGE> = 0, so wird beim Feldwert 0 nur der Leerstring angezeigt. Ist <NULLANZEIGE> <> 0, so wird auch der Feldwert 0 als Zahl angezeigt.

Ist <TAUSENDER-TRENNZEICHEN> = 0, so wird bei numerischen Werten, die >= 1000 sind, kein Tausender-Trennzeichen ("." oder ",") angezeigt, andernfalls schon. Fehlt der Parameter <TAUSENDER-TRENNZEICHEN>, so ist dies gleichbedeutend mit 1.

Werden numerische Felder editiert, so muß der <DEZIMALPUNKT> angegeben werden. Nur "." und "," sind zulässig.

Bei alphanumerischen Feldern kann unter WINDOWS die <FELDLAENGE> auch größer als die Windowbreite sein. Der maximal zulässige Wert ist 255.

Wird unter MS-DOS oder UNIX eine <FELDLAENGE> angegeben, die größer als die aktuelle Windowbreite ist, so gilt als <FELDLAENGE> die Windowbreite. Dies hat zur Folge, daß SELECTA-Teilfelder, die länger als die Windowbreite sind, beim Editieren rechts abgeschnitten werden.

Die Feldverarbeitung erfolgt in der gleichen Weise wie bei den Masken. Mit <®|>, <RETURN> und <> kann innerhalb der Felder vorwärts und rückwärts gesprungen werden. Mit den Tasten <¯> und <­> kann zeilenweise vorwärts und rückwärts geblättert werden. Mit der Maus kann jedes Feld aus <FELDER> angeklickt werden. Nach dem Verlassen eines Feldes wird der geändert Wert in die <TABELLE> des SELECTA eingetragen.

Auch Drag & Drop zwischen verschiedenen SELECTA-Feldern ist möglich, wenn im ON DRAG MACRO die Variable EBUS_DRAG = 1 und im ON DROP MACRO die Variable EBUS_DROP = 1 gesetzt wird. Drag & Drop ist aber nur möglich für die in <FELDER> angegebenen Felder.

Beendet wird die gesamte Feldverarbeitung durch <ESC> in einem beliebigen Feld (die Änderungen des aktuellen Feldes werden dabei nicht übernommen) oder durch <RETURN> oder <®|> im letzten Feld. <TASTE> enthält dann die zuletzt gedrückte Taste, mit der die Feldverarbeitung beendet wurde. Auch durch die Anweisung ENDPROG im <MACRO-VORHER>, <MACRO-NACHHER>, ON <TASTE> MACRO oder ON <EREIGNIS> MACRO wird die Feldverarbeitung beendet. <TASTE> enthält dann den Leerstring "".

<MACRO-VORHER> und <MACRO-NACHHER> werden wie bei den Feldern von Masken und Maskenwindows vor bzw. nach der Feldeingabe ausgeführt. In diesen Macros ist EBUS_MNR stets = 1. EBUS_FENR enthält wie bei der Maskenverarbeitung die Feldreihenfolge, die ab 1 gezählt wird.

 

Achtung: EBUS_FENR enthält nicht die Nummern aus <FELDER> sondern die Feldreihenfolge.

Beispiel: <FELDER> = "2;6;4"

EBUS_FENR = 1, wenn das SELECTA-Feld Nr. 2 bearbeitet wird.
EBUS_FENR = 2 bei Feld Nr. 6 und = 3 bei Feld Nr. 4.

 

 

 

Achtung: Während der Abarbeitung der Macros gelten die aktuellen ON <TASTE> MACROs und nicht die ON SELECT(<TASTE>) MACROs !

Dem aktuellen Feld kann im ON <TASTE> MACRO mit Hilfe der Variablen EBUS_TRANSFER, EBUS_DATA und EBUS_DATA$ ein anderer Wert zugewiesen werden.

 

 

Achtung: Während SELAEDIT aktiv ist, darf die Anweisung DISPLAY nicht ausgeführt werden, da sie sich auf die tiefer liegende Maskenfeldverarbeitung bezieht.

 

 

 

 

SELAEDIT liefert folgende Ergebniswerte:

 

0
1
6200
6201
6202
6203
6204
6205
6206
6207
6208

Kein Fehler. Es wurden keine Daten geändert.
Kein Fehler. Daten wurden geändert.
SELECTA enthält keine Einzelfeldern
<FELDART> bei Feldtyp fehlt oder ist fehlerhaft
<FELDLAENGE> bei Feldtyp fehlt oder ist fehlerhaft
<NKS> bei Feldtyp fehlt oder ist fehlerhaft
Feldtyp ist fehlerhaft: Komma fehlt
Feldtyp ist fehlerhaft: Strichpunkt fehlt
Feldnummer existiert nicht
Feldlänge bei Datumsfeld muß 6 oder 8 sein
<NULLANZEIGE> bei Feldtyp fehlt oder ist fehlerhaft

 

SELAEDIT ruft intern die Funktion EDITFIELD auf. Deshalb können auch Fehlernummern von EDITFIELD als Ergebnis geliefert werden.

 

 

 

Beispiel:

DIM T$(3)

T$(1) = "Huber Josef;19.03.1954;235,40"
T$(2) = "Meier Franz;23.07.1965;0"
T$(3) = "Talmeier Erna;12.01.1958;-1235,75"

ON SELECT(RETURN) MACRO EDITIEREN
WINDOWPOS(5,10)
H% = SELECTA(T$,"",3,"SELECTA",1,3,";")
 ...

Macro EDITIEREN:

NR$ = "2;3;1"   /* Teilfelder 2, 3 und 1 editieren
FELDTYPEN$ = "D,8;N,8,2,1;A,20"
H% = SELAEDIT(NR$,FELDTYPEN$,",",TASTE$,,)
IF H% <> 0
THEN ERRORMES = "Fehler"+STR$(H%)
ENDIF

siehe auch:

SELECTA, SELEDIT$