<< Inhaltsverzeichnis Suchen >>

Java-Programme

Eigenschaften

Ebus-Java-Programme sind objektorientiert und unterscheiden sich deshalb im Verhalten in manchen Bereichen von Ebus-C-Programmen. Diese Besonderheiten werden hier beschrieben.

Java-Programme laufen auf vielen Plattformen (Windows, Linux, Solaris, Macintosh, etc.), deshalb können Windows-spezifischen Befehle nicht unterstützt werden. Informationen dazu finden sich in den folgenden Abschnitten.

 

ACHTUNG: Unter Java ist Groß- und Kleinschreibung bei allen Dateinamen entscheidend. Bei Bildern ist darauf zu achten, daß die Schreibweise im Macro identisch ist mit dem Namen auf der Festplatte. Programmnamen beginnen immer mit einem Großbuchstaben und alle folgenden Zeichen werden klein geschrieben.

 

Rollbereiche werden unter Java nicht unterstützt. Sie sind ein Relikt aus MS-DOS-Zeiten und können wesentlich eleganter durch SELECTA und SELAEDIT dargestellt werden.

Unter Java gibt es keinen System-Font.

Drag & Drop zwischen Maskenfeldern wird derzeit nicht unterstützt.

Konfigurationsmaske

Unter Windows wird die Konfigurationsmaske über das Systemmenue aufgerufen. Unter Java wird das Systemmenue nicht unterstützt, da es bei anderen Betriebssystemen nicht existiert. Standardmäßig wird die Konfigurationsmaske über das 1. Icon (F1) aufgerufen. Im Generator kann im Menuepunkt Param/Tasten im generierten Programm der Aufruf der Konfigurationsmaske bei Auskunft auf eine andere Taste gelegt werden.

Standardtasten

Folgende Standardtasten werden im Java-Programm verwendet:

F1:                        Konfigurationsmaske
F3:                        Blättern vorwärts
F4:                        Blättern rückwärts
F5:                        Löschen Feld
F6:                        Löschen Feldrest
F7:                        Stammdatenmodus
SHIFT/F7:            Drucken Bildschirm

Tabcontrols

Bei NOWAIT wird kein Window erzeugt. Der Tabcontrol wird wie ein Maskenfeld auf der aktuellen Maske eingefügt und kann wie die anderen Felder der Maske mit den Tasten <TAB>, <Cursor unten>, etc. angesprungen werden. Beendet werden kann solch ein Tabcontrol nicht mit der Taste <ESC>, sondern nur mit ENDPROG oder DELFIELD.

Ist <REITER-PRO-ZEILE> < 0 und passen alle Karteikartenreiter nicht in eine Zeile, so kann in den Karteikartenreitern gescrollt werden.

Der Macro vor Maskenausgabe wird nur einmal beim Erzeugen des Tabcontrols ausgeführt. Beim späteren Aktivieren einer Tabcontrolmaske wird der Macro nicht mehr ausgeführt.

Dagegen wird der Macro nach Maskenausgabe jedesmal ausgeführt, wenn die Maske aktiviert wird.

<TYP> legt fest, wo die Karteikartenreiter angeordnet werden:
2 = unten
3 = links
4 = rechts
sonst = oben.

Fehlermeldungen

Fehlermeldungen werden von Java nicht als Zahl sondern im Klartext geliefert. An vielen Stellen kann deshalb keine Fehlernummer sondern nur der Fehlertext geliefert werden. Die Variable ERRORTEXT$ enthält unter Java stets den Klartext des zuletzt aufgetretenen Fehlers, auch bei Fehlern, die durch weiterhin eine Nummer identifiziert werden.

Bei den Indexdateizugriffen werden weiterhin die bekannten Fehlernummer geliefert. Zusätzlich gibt es unter Java die allgemeine Fehlernummer 1080, die besagt, daß der Fehlertext in ERRORTEXT$ steht.

Bei sequentiellen und Random Dateien bedeutet OK = -1, daß der Fehlertext in ERRORTEXT$ steht.

Indexdateien

Die Schlüssel dürfen unter Java keine gepackten Felder enthalten.

Die Funktion SEARCH gibt automatisch alle gesperrten Datensätze frei.

NOREADLOCK hat unter Java keine Wirkung.

Die Dateitypen B (Btrieve) und C (C-Isam) werden nicht unterstützt. Die Indexdateien werden als Ebus-Indexdatei (Dateityp E) generiert.

Der Dateityp O (ODBC-Datei) wird in der Version 10.0 noch nicht unterstützt, sondern erst in der nächsten Version. Indexdateien mit Dateityp O werden ebenfalls als Ebus-Indexdatei (Dateityp E) generiert.

Report

LPRINT CHR$(12) ist bei ENABLE LP_GDI nicht mehr nötig und wird ignoriert. Ein Seitenvorschub kann nur über die Anweisung NEWPAGE erzwungen werden.

WCLOSE

Unter Java werden Windows automatisch geschlossen wenn die Maskenverarbeitung bzw. SELECT, GR_TREEVIEW, etc. beendet wurde. Die Anweisung WCLOSE ist nicht mehr notwendig und wird ignoriert.

WCLOSE wird nur noch benötigt zum Schließen von Windows, die mit der Anweisung WINDOW erzeugt wurden. Wenn ein bestehendes Programm für Java generiert, das WINDOW-Anweisungen enthält, muß geprüft werden, ob sich WCLOSE-Anweisungen von Maskenwindows jetzt nicht fälschlicherweise auf ein mit WINDOW erzeugtes Window beziehen !

Boxen

Maskenboxen haben unter Java einen unsichtbaren inneren Rand. Deshalb kann die erste Zeile in einer Box nicht an der berechneten Stelle sondern nur etwas tiefer angezeigt werden.

Empfehlung:        EBUS_BOX_EXTENT_HORI = 0.5
                              EBUS_BOX_EXTENT_VERTI = 0.5
                              Dadurch werden die Boxen um ½ Zeile und ½ Spalte
                              vergrößert.

SELECT/SELECTA

Wird eine Spaltenüberschrift angegeben, so wird unter Java kein zweites Window geöffnet. Dies muß beachtet werden, wenn die Windowtiefe EBUS_WDEPTH verwendet wird.

Bild und Text können in einer Spalte gleichzeitig angezeigt werden. Bildname und Text sind dann durch Komma getrennt anzugeben, z.B. @<Bildname>,<text>. Das Bild wird immer links von Text angezeigt.

Bilder sind auch in den Spaltenüberschriften möglich.

Werden mehrere Attribute einer Spalte, Zeile oder einem Feld zugewiesen, so gilt folgende Reihenfolge: Farbe, Ausrichtung, Bild.

Beim SELECTA können als <VOREINSTELLUNG> mehrere Zeilen markiert invers werden. Die Einträge in <VOREINSTELLUNG> müssen durch CHR$(9) getrennt sein.

SELECT und SELECTA werden wie ein Maskenfeld auf der aktuellen Maske eingefügt, wenn folgende 3 Bedingungen erfüllt sind:

1. der Parameter NOWAIT ist angegeben
2. die Überschrift ist der Leerstring "",
3. DISABLE GR_WINDOW_BORDER ist gesetzt

oder wenn folgende 2 Bedingungen erfüllt sind:

1. der Parameter NOWAIT ist angegeben
2. die Variable EBUS_CHILDWINDOW ist ungleich 0

In diesem Falle können SELECT und SELECTA wie die anderen Felder der Maske mit den Tasten <TAB>, <Cursor unten>, etc. angesprungen werden.

Im <EXITMACRO> enthält die Variable EBUS_DATA den Returncode.

GR_LISTVIEW

GR_LISTVIEW wird unter Java programmintern über die Funktion SELECTA dargestellt. Das Komma "," ist als Trennzeichen nicht zulässig, da es für die Trennung von <Bildname> und <Text> verwendet wird. Geänderte Spaltenbreiten werden nicht in die Variable <SPALTEN-BREITEN> zurückgeschrieben.

Schalter ROTATE

Bei DISABLE ROTATE bewirkt die Taste <ESC> keinen Sprung zur ersten Maske des Programms. Bei ENABLE ROTATE wird von Feld 1 auch zurück zum letzten Feld gesprungen.

Bei Stammdatenmasken im alten Modus gilt generell: DISABLE ROTATE.

Schalter CHECKFIELDS

Bei ENABLE CHECKFIELDS werden beim Rücksprung die dazwischenliegenden Macro-vorher nicht ausgeführt.

Wird bei ENABLE CHECKFIELDS und ENABLE BUTTON_ACTIVATE ein Button angeklickt, so werden beim Vorwärtssprung die Macro-vorher und Macro-nachher der dazwischen liegenden Felder ausgeführt.

INI-Datei

Um den gleichzeitigen Betrieb von C- und Java-Programmen zu ermöglichen, hat unter Java die Programm-INI-Datei die Endung .jni.

In der Java-Programmsprache gibt es kein GOTO. Die GOTO's im Macro werden unter Java durch WHILE-Schleifen simuliert. Deshalb sind Sprünge nur innerhalb des aktuellen Blocks und der umgebenden Blöcke möglich.

Beispiel:                         K% = 10
                         WHILE K% > 0
                         DO         K% = K% - 1
            N1:                      IF K% < 5
                                        THEN GOTO N2 /* Sprung in umgebenden Block ist zulässig.
                                        ENDIF
                         ENDDO

            N2:       IF L% = 2
                         THEN GOTO N1 /* Sprung in parallelen Block ist nicht zulässig.
                         ENDIF

Die Zeichenfolge für den Zeilenvorschub "\n" ist Text einer MESSAGEBOX und bei Buttons zulässig.

Buttontexte können mit <html> formatiert werden.

Beispiel:                         Beim Buttontext "<html><u>Drucken</u>" wird der Text "Drucken"
                         unterstrichen dargestellt.

Wird GR_STARTMENUE in einem Unterprogramm ausgeführt, so wird unter Java das Menue automatisch beendet, wenn das Unterprogramm beendet wird.

Die Funktionen SELECT und SHOW werden unter Java programmintern über SELECTA dargestellt. Die Unterdrückung des Inversbalkens bei SHOW ist deshalb unter Java nicht möglich.

Die Funktionen FIELDVALUE und FIELDVALUE$ gelten unter Java auch für EBUS-Indexdateien.

Bei GR_MAINSIZE und #GR_MAINSIZE sind die Parameter <ZEILEN> und <SPALTEN> bedeutungslos, da unter Java Scrollbalken angezeigt werden, wenn das Main-Window kleiner als die anzuzeigende Maske ist.

DISABLE GR_NOASYNC_BUTTONS ist unter Java nur dann notwendig, wenn auf der aktuellen Maske ein Button aktiviert werden können soll während ein Macro läuft. Das Aktivieren von Buttons auf tiefer liegenden Windows wird allein über die Variablen EBUS_..._DEPTH gesteuert.

Bei der Funktion GET_EBUS_FENR kann unter Java auch ein Feldname als String angegeben werden.

CLS löscht unter Java nur Elemente, die mit PRINT, GR_LINE, GR_FILLRECT, GR_FILLRECT_GRADIENT und GR_CIRCLE erzeugt wurden, und setzt keine Hintergrundfarbe. Maskenfelder werden nicht gelöscht.

Die Anweisung COLOR hat keine Wirkung. Die Farben werden bei PRINT mit GR_PRINT_TEXTCOLOR und GR_PRINT_BACKGROUNDCOLOR gesetzt.

SETCOL wirkt unter Java nur bei alphanumerischen Felder, kann aber auch im Macro-nachher verwendet werden.

SHELL und SHELLW sind identisch.

RUN und CHAIN sind identisch.

Ein Prozentwert < 0 oder > 100 löscht unter Java die WORKINGLINE.

Es können keine Windows ohne Rand erzeugt werden.

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.

STARTFIELD muß nur bei einem mit WINDOW erzeugten Window ausgeführt werden.

EBUS_SEQ_OPENMODE: Exklusiv-Open ist nicht möglich bei OPEN OUPUT, da unter Java immer nur der bereits existierende Teil einer Datei gesperrt werden kann.

Bei SEND_MAIL muß unter Java ein <ABSENDER> angegeben werden.