MAL-Homepage
Inhaltsverzeichnis
MAL Dokumentation: Menüs und Masken
1. MASKEN
Beschreibungsdatensätze für Bildschirmmasken sind Verbunde von
Strings, die sich als Zeilen der Maske verstehen. Die Ein-/Ausgabefelder
der Masken (aktive Felder) sind durch eine ununterbrochene Folge
von ´_´ (Textfelder), ´#´ (Zahlenfelder) oder ´!´ (Textfelder ohne Echo)
gekennzeichnet. Jedem aktiven Feld ist in der gleichen Zeile ein
Feldname voranzustellen. Dieser muß vorne und hinten
jeweils durch mindestens ein Blank von anderen Texten getrennt sein.
Zur Bearbeitung dieser Datensätze, also zum Aufrufen der Masken,
können die Worte
MAL-Homepage Inhaltsverzeichnis
1.1. Vorbesetzungen
Existiert zu einem Ein/Ausgabefeld ein gleichnamiges Wort im
MAL-Vokabular, so wird dieses zur Vorbesetzung verwendet.
Als Vorbesetzungen werden für Textfelder Strings und Realzahlen, für
Nummernfelder nur Realzahlen akzeptiert. Es können auch
Verbunde der jeweiligen Datentypen verwendet werden.
Dann wird jeweils mit der ersten Komponente vorbesetzt und
bei der Eingabe kann in dem entsprechenden Feld mit Ctrl-N
und Ctrl-R geblättert werden (bei einer graphischen Benutzeroberfläche
erscheint eine Scroll-Box).
Beispiel:
[
" PERSONENMASKE"
""
" Vorname _____________ Familienname ____________"
""
" Alter ###### Passwort !!!!!!"
] >> maske
10 >> Alter
[ "Müller" "Meier" "Huber" ] >> Familienname
maske writemask >> eingabedaten
MAL-Homepage Inhaltsverzeichnis
1.2. Bedienung von Masken
Bei MAL-Systemen, für die keine graphische Benutzeroberfläche
implementiert
ist (DOS, Linux) gilt folgendes:
Abgesehen von den normalen alphanumerischen Tasten
können noch folgende Tasten für die Eingabe verwendet werden:
MAL-Homepage Inhaltsverzeichnis
1.3. Überprüfung von Eingabedaten
Sollen die in ein Feld eingegebenen Daten unmittelbar bei der
Eingabe überprüft werden, so ist eine Doppelpunktdefinition
mit folgender Syntax zu definieren:
eingegebene_daten -> flag
´flag´ = 0 bedeutet: Daten nicht akzeptabel.
´flag´ = 1 bedeutet: Daten sind aktzeptabel.
Der Name der Doppelpunktdefinition muß gleich dem Feldnamen,
erweitert um die Zeichenfolge "_c" sein.
Beispiel:
: monatstag_c >> tag tag 1 >= tag 31 <= and ;
: wochentag_c [ "mo" "di" "mi" "do" "fr" "sa" "so" ] find count ;
[ "monatstag ##### wochentag __" ] writemask
MAL-Homepage Inhaltsverzeichnis
2. MENÜS
Das Wort amenue
dient zum Aufbau von Menüs.
Syntax:
[ kopfzeile escape_code text1 code1 text2 code2 . . ] ->´textI´ ist ein String, der in der I-ten Zeile des Menüs ausgegeben wird. Die Auswahl der Menüpunktes kann auch durch Eingabe des ersten Buchstabens von ´textI´ erfolgen. Daher sollte man darauf achten, daß die Texte unterschiedliche Anfangsbuchstaben haben, was man notfalls durch Voranstellen von Kennbuchstaben oder Ziffern erreichen kann.
MAL-Homepage Inhaltsverzeichnis
3. BLÄTTERFUNKTIONEN
Zur interaktiven Verwaltung von Verbunden mit
gleichartigen Komponenten ist das Wort
browse geeignet.
Syntax:
men liste
formatzeile zeilenaufbau ->
browse baut eine
Bildschirmseite auf, bei der für jede Komponente des
Verbundes ´liste´ eine Zeile ausgegeben wird. Zum Blättern
können die gleichen Tasten wie beim MAL-Editor verwendet werden
(gilt nur eingeschränkt für graphische Benutzeroberflächen).
Am Bildschirmrand wird ein Menü eingeblendet
(beschrieben durch den Datensatz men ). Am oberen
Bildschirmrand befindet sich eine Kopfzeile
(definiert durch den Datensatz ´formatzeile´).
Die Datensätze von 'liste' müssen nicht alle gleich sein,
wichtig ist nur, daß mit der Prozedur zeilenaufbau aus
allen eine gleichartige Zeile gewonnen werden kann, und
daß die Prozeduren des Menüs mit den Komponenten
arbeiten können. Die Doppelpunktdefinition zeilenaufbau
wird beim Aufbau der Bildschirmseite jeweils zur
Berechnung einer Zeile herangezogen. Sie muß folgender Syntax genügen:
komponente_aus_liste ->
[ spalte1 spalte2 ... ]
wobei ´spalteI´ ein String ist, der in der I-ten Spalte ausgegeben wird.
Die Spalteneinteilung erfolgt aufgrund des Strings 'formatzeile'.
Jeweils zusammenhängende Zeichenfolgen ohne Blank signalisieren
eine Spalte. Sinnvoller Weise verwendet man als Zeichenfolge gleich
eine Überschrift für die jeweilige Spalte.
Einfaches Beispiel ohne Menü:
[
[ "Hugo" 17 ]
[ "Willi" 25 ]
[ "Anna" 34 ]
[ "Hans" 20 ]
] >> liste
"Vorname_____ Alter" >> formatzeile
: zeilenaufbau >> eintrag
[ eintrag 1 , eintrag 2 , >string ] ;
[ ] liste formatzeile cool zeilenaufbau browse
MAL-Homepage Inhaltsverzeichnis
3.1. Spezielle Blätterfunktionen
Das Wort FO_browse
ist speziell für das Blättern in Foldern ausgelegt (siehe Kapitel Folder).
Das Wort browse_voc
kann zum Blättern in Vokabularsfoldern, also Foldern mit
MAL-Worten, verwendet werden. Das Wort benötigt keine
Versorgung über den Stack. Man muß nur zuvor den
entsprechenden Folder mit >voc
in das Vokabular laden.
Beispiel:
public \ folderdir \ startup_folder >voc browse_voc
MAL-Homepage Inhaltsverzeichnis
3.2. Tabellen
Die Klasse table_class
bindet das Wort
common_browser
(siehe oben) in eine menügesteuerte Bedienoberfläche ein.
Die Instanzen der Klasse
table_class
beinhalten nebst den Tabellendaten
eine Beschreibungsliste aller Attribute (=Tabellenspalten),
eine Eingabemaske und eine Menübeschreibung.
Mit der Funktion create_table wird eine leere,
unkonfigurierte Tabelle mit einem Standardmenü erzeugt.
Diese kann mit
den Funktionen admin und edit_menu interaktiv
konfiguriert werden. Mit der Funktion browse können
anschließend Einträge eingetragen, modifiziert usw.
werden.
Beispiel:
Einrichten einer Tabelle:
interface_of table_class >voc create_table >> tabelleKonfigurieren der Attribute und Menüpunkte:
tabelle admin edit_menu -> tabelleBlättern in der konfigurierten Tabellen:
tabelle browse -> tabelleBeim Aufruf der Funktion admin erscheint zunächst eine Liste der bereits eingerichteten Attribute (bei einer neuen Tabelle ist diese leer). Wird mit Insert ein neues Attribut eingerichtet, so erscheint folgende Eingabemaske Die Werte dieser Maske verstehen sich wie folgt:
: histogramm >> eintrag eintrag \ Zufallszahlen ahisto screen ;Im Menü (editiern des Menüs siehe oben) müsste dann folgende Zeile stehen, um den Menüpunkt aufrufbar zu machen:
[ . . "Histogramm" "histogramm" . . ]
MAL-Homepage Inhaltsverzeichnis