<< Inhaltsverzeichnis Suchen >>

FIELDMOVE

Funktion

Syntax:

FIELDMOVE

 

Bedeutung:

Beim Aufruf der Funktion FIELDMOVE schaltet das laufende EBUS-Programm in einen Modus, in dem der Anwender die Position und Reihenfolge der Maskenfelder und Texte ändern kann. Die Änderungen bleiben während des Programmlaufs wirksam. Die geänderte Maske wird in der Datei <PROGRAMM-NAME>.M<MASKEN-NUMMER> abgespeichert. Bei einem späteren Programmlauf kann die geänderte Maske durch die Funktion FIELDLOAD geladen werden.

 

 

FIELDMOVE liefert 3 mögliche Werte:

 

 

1:

Die Maske wurde geändert und die Änderungen wurden nach Betätigen von <END> ordnungsgemäß abgespeichert.

 

 

0:

Die Maske wurde nicht geändert, da die Bearbeitung mit <ESC> abgebrochen wurde, oder die Maske keine Maskenfelder besitzt.

 

 

-1:

Es trat ein Fehler auf, die Systemfehlernummer wird in der Variablen OK geliefert.

 

 

Nach Beenden der Funktion FIELDMOVE schaltet das Programm wieder in den normalen Modus zurück.

 

 

Einsatzmöglichkeiten von FIELDMOVE

 

 

Oft kommt es vor, daß Masken eines Programms für jeden Anwender individuell geändert werden müssen. Sei es, daß Felder auf dem Bildschirm an einer anderen Stelle plaziert werden müssen, oder daß die Feldreihenfolge geändert werden muß, oder daß einzelne Felder nicht benötigt werden. In der Praxis würde dies dazu führen, daß für jeden Anwender eine eigene Version erstellt und gepflegt werden müßte. Dies würde bei vielen Anwendern bei Programmerweiterungen und Änderungen zu einem erheblichen Verwaltungsaufwand führen. Mit Hilfe der Funktion FIELDMOVE können Masken ohne Programmieraufwand geändert werden.

 

 

Mit FIELDMOVE kann zur Laufzeit des EBUS-Programms die aktuelle Maske anwenderspezifisch geändert werden. Die geänderte Maske wird in der Datei <PROGRAMMNAME>.M<MASKEN-NUMMER> abgespeichert. Während des Programmlaufs bleibt die geänderte Maske wirksam. In späteren Programmläufen kann die geänderte Maske mit FIELDLOAD geladen werden.

 

 

Um die Änderung einer Maske nur einem autorisierten Anwender zu ermöglichen, kann folgendes Verfahren angewendet werden:

 

 

Init-Macro:

 

 

ON F2 MACRO NEUE.MASKE
...

 

 

Macro NEUE.MASKE:

 

 

/* Passwort eingeben.
/* Der Bildschirm wird nicht verändert
GETCHAR H1$
GETCHAR H2$
GETCHAR H3$

/* Wenn Passwort ok, dann Maske verändern
IF H1$+H2$+H3$ = "PAS"
THEN X=FIELDMOVE
ENDIF

 

 

Ablauf der Funktion FIELDMOVE

 

 

Bei FIELDMOVE existieren 3 Modi:

 

 

a) Verschieben Maskenfelder
b) Ändern Reihenfolge
c) Verschieben/Ändern Texte

 

 

Der aktuelle Modus wird stets in der Meldungszeile angezeigt.

 

 

In jedem Modus können mit <F1> die gerade gültigen Funktionstasten am Bildschirm angezeigt werden.

 

 

Nach dem Aufruf von FIELDMOVE ist als erstes der Untermodus Verschieben Maskenfelder eingeschaltet.

 

 

a) Verschieben Maskenfelder

 

 

Das aktuelle Maskenfeld wird invers angezeigt, jedes Feld kann beliebig verschoben werden.

 

 

Folgende Funktionstasten stehen zur Verfügung:

 

 

Taste

Bedeutung

 

Beenden, Modus wechseln

 

 

<CTRL/E> oder <END>

Die Änderungen werden abgespeichert und die Funktion FIELDMOVE wird verlassen.

 

 

<ESC>

Die Änderungen werden nicht abgespeichert. Die Funktion FIELDMOVE wird verlassen.

 

 

<F7> oder <CTRL/P>

Wechseln zum Modus b) Ändern Reihenfolge.

 

 

<F6>oder <CTRL/L>

Die Maskendatei PROGRAMM-NAME>. M<MASKEN-NUMMER>wird gelöscht.

 

 

Positionieren

 

 

<RETURN>

Sprung zum nächsten Maskenfeld

 

<F5> oder <CTRL/D>

Sprung zum vorherigen Maskenfeld

 

Verschieben

 

 

<­>

Verschieben Feld eine Zeile nach oben

 

<¯>

Verschieben Feld eine Zeile nach unten

 

<®>

Verschieben Feld eine Spalte nach rechts

 

<¬>

Verschieben Feld eine Spalte nach links

 

<F3> oder <CTRL/+>

Verschieben Feld 10 Spalten nach rechts

 

<F4> oder <CTRL/->

Verschieben Feld 10 Spalten nach links

 

 

 

 

b) Ändern Reihenfolge

 

 

Folgende Funktionstasten stehen zur Verfügung:

 

 

Taste

Bedeutung

 

Beenden, Modus wechseln

 

 

<CTRL/E> oder <END>

Die Änderungen werden abgespeichert und die Funktion FIELDMOVE wird verlassen.

 

 

<ESC>

Die Änderungen werden nicht abgespeichert. Es wird in den Modus a) Verschieben Maskenfelder zurückgewechselt.

 

 

<F7> oder <CTRL/P> 

Wechseln zum Modus c) Verschieben / Ändern Texte

 

 

Positionieren

 

 

<RETURN>

Sprung zum nächsten Maskenfeld

 

<F5> oder <CTRL/D>

Sprung zum vorherigen Maskenfeld

 

In jedem Feld kann eine Reihenfolgenummer eingegeben werden. Zulässig sind nur Zahlen von 0 bis zur Anzahl der Maskenfelder.

 

 

Die Reihenfolgenummer 0 bedeutet: Feld nicht auf der Maske darstellen. Durch Streichen von Maskenfeldern vermindert sich entsprechend die höchst mögliche Reihenfolgenummer.

 

 

Die Reihenfolgenummern müssen beginnend bei 1 eine fortlaufende Folge von Zahlen darstellen.

 

 

Die Eingabe einer Zahl wird mit <RETURN> beendet, die Zahl wird dann sofort auf Zulässigkeit geprüft.

 

 

Nach Eingabe der 1. Ziffer können nur noch weitere Ziffern eingegeben werden, oder die aktuelle Eingabe kann mit <ESC> abgebrochen werden; bis dahin stehen die anderen Funktionstasten nicht zur Verfügung.

 

 

 

 

Achtung: Eine geänderte Reihenfolge muß sofort mit <END> abgespeichert werden. Die anderen Änderungen werden dabei mit abgespeichert. Ist die geänderte Reihenfolge unzulässig, erfolgt eine Fehlermeldung und die Änderungen werden nicht abgespeichert.

 

 

Bei der Änderung der Feldreihenfolge ist folgendes zu beachten:

 

 

Die Anweisung DISPLAY bezieht sich auf dasselbe Feld wie vor der Änderung. Ist das Feld nicht mehr auf der Maske (Reihenfolgenummer=0), so ist die Anweisung DISPLAY wirkungslos.

 

 

Beispiel:

alte Reihenfolge: DISPLAY #.4
Änderung Feld 4
® Feld 7
neue Reihenfolge: DISPLAY #.4    /* zeigt Feld mit der neuen
                                                           /* Nummer 7 an

 

 

Die Anweisungen
GOTO #<MASKEN-NUMMER>.#<VAR-NAME>
bzw.
GOTO #<MASKEN-NUMMER>.#<INDEXDATEI-NAME>.<FELDNAME>

 

 

springen auch in der neuen Reihenfolge das spezifizierte Feld richtig an. Ist das spezifizierte Feld gelöscht, wird zum 1. Feld in der neuen Reihenfolge gesprungen.

 

 

Alle anderen Anweisungen GOTO #... (z.B. GOTO #.1, GOTO #5, GOTO #.+2) arbeiten genauso wie in der alten Feldreihenfolge. Z.B. springt GOTO #.-1 zum vorherigen Feld bezogen auf die alte Feldreihenfolge. Ist das Feld gelöscht, so wird zum 1. Feld der Maske in der neuen Reihenfolge gesprungen. Dadurch arbeiten alle Sprünge auf bestimmte Maskenfelder auch nach der Änderung der Feldreihenfolge korrekt (Ausnahme: gelöschte Felder).

 

 

c) Verschieben/Ändern Texte

 

 

Der aktuelle Text wird invers angezeigt.

 

 

Folgende Funktionstasten stehen zur Verfügung:

 

 

Taste

Bedeutung

 

Beenden, Modus wechseln

 

 

<CTRL/E> oder <END>

Die Änderungen werden abgespeichert und die Funktion FIELDMOVE wird verlassen.

 

 

<ESC>

Die Änderungen werden nicht abgespeichert. Es wird in den Modus a) Verschieben Maskenfelder zurückgewechselt.

 

 

<F7> oder <CTRL/P>

Wechseln zum Modus a) Verschieben Maskenfelder

 

 

<F8> oder <CTRL/R>

Ändern Texte

Es gelten folgende Steuertasten bei Ändern Texte:

 

 

 

<RETURN>

geänderten Text übernehmen und mit Verschieben/ÄndernTexte fortfahren

 

 

 

<ESC>

geänderten Text nicht übernehmen und mit Verschieben/Ändern Texte fortfahren

 

 

 

<¬>

Cursor ein Zeichen nach links

 

 

 

<®>

Cursor ein Zeichen nach rechts

 

 

 

<Backspace>

Cursor ein Zeichen nach links

 

 

 

Positionieren

 

 

<RETURN>

Sprung zum nächsten Maskenfeld

 

<F5> oder  <CTRL/D>

Sprung zum vorherigen Maskenfeld

 

Verschieben

 

 

<­>

Verschieben Text eine Zeile nach oben

 

<¯>

Verschieben Text eine Zeile nach unten

 

<®>

Verschieben Text eine Spalte nach rechts

 

<¬>

Verschieben Text eine Spalte nach links

 

<F3> oder <CTRL/+>

Verschieben Text 10 Spalten nach rechts

 

<F4> oder <CTRL/->

Verschieben Text 10 Spalten nach links

Beispiel:

CASE FIELDMOVE
               OF -1 ERRORMES = "Systemfehler: "  + STR$(OK)
               OF 0  MESSAGE = "Maske nicht geändert"
               OF 1  MESSAGE = "Maske geändert"
ENDCASE

 

siehe auch:

FIELDLOAD, EBUS_FIELDLOAD_PATH$