Hauptindex
Juggler Hilfe-Index

Im folgenden finden Sie die Hauptthemen der Hilfedatei zu dem Autorensystem Juggler für Windows aufgelistet. Klicken Sie bitte das Thema für das Sie sich interessieren, mit der Maus an.

Allgemeines

Informationen für Beta-Tester

Einleitung

Programmieren mit Juggler für Windows

Umstieg von DOS auf Windows

Komponenten des Autorensystems

Entwicklungsumgebung (dieses Programm)

Laufzeitsystem

Werkzeuge

Befehlsreferenz

Befehle

Systemvariablen

Systemfunktionen

Weiterentwicklung des Autorensystems

Wie gehts weiter?

Sonstiges

Die häufigsten Fehler

Was muß ich in Verbindung mit einem Lernprogramm kopieren?


Einleitung

Wir freuen uns, daß Sie sich entschieden haben, mit dem Autorensystem Juggler für Windows zu arbeiten. Juggler ist eine moderne und bedienungsfreundliche Autorensprache, die es Ihnen erlaubt, die Möglichkeiten Ihres Computers zur Erstellung von Lern- und Präsentationsprogrammen voll auszunutzen.

Ob Sie ein interaktives Lernprogramm erstellen oder eine umfangreiche Datenbank-Applikation mit einer ansprechenden Oberfläche versehen wollen, Juggler ist Ihr leistungsfähiges Werkzeug dazu. Im folgenden sind die Leistungen dieses Systems kurz aufgelistet:

Bedienungsfreundliche Entwicklungsumgebung mit Editor, Compiler, Linker und Laufzeitsystem.

Sehr umfangreiche Online-Hilfe.

Leicht zu erlernende BASIC-ähnliche Sprache mit Befehlen wie GeheZu, Wenn....Dann.... etc.

Über 200 Befehle für Grafik, Text, Bilder, Buttons, Programmablauf, Animation, Multimedia.

Befehle zur einfachen Programmierung von Windows-Fenstern, Menüleisten, Schaltern, Eingabefeldern usw.

Integrierte dBase-kompatible Datenbank. Schneller Zugriff über ISAM/Btree-Routinen.

Ansteuerung des Media-Control-Interface (MCI) unter Windows.

Unterstützt die folgenden Grafikformate: BMP, TIF, PCX, GIF

15 verschiedene Überblendeffekte für Grafiken.

Umfangreiche Möglichkeiten zur Animation von Bildobjekten.

Automatische Anpassung von Lernprogrammen an unterschiedliche Bildschirmauflösungen.

Keine Runtime-Lizenzen für fertige Programme.

Das Besondere an Juggler für Windows ist, das es systemunabhängig programmiert wurde. Es kann deshalb mit sehr geringem Aufwand auf die folgenden Systemplattformen portiert werden:

Windows 3.x

Windows NT

OS/2 2.x

Motif

OpenLook

Macintosh

Mit Juggler ist deshalb eine plattformübergreifende Programmierung von Lern- und Präsentationsprogrammen möglich.

Welche Plattformen bereits unterstützt werden, erfahren Sie bei der Media Concept GmbH in Griesheim (die Adresse finden Sie am Ende dieses Abschnitts).

Beachten Sie bitte auch das Kapitel Weiterentwicklung in diesem Online-Handbuch.

Copyright

Das Autorensystem Juggler, alle mit Juggler mitgelieferten Programme, Dateien und Dokumentationen, sind für die Firma Reitz Software-Entwicklung durch nationale und internationale Copyright-Vorschriften geschützt.

Sobald Sie mit Juggler zu arbeiten beginnen, erkennen Sie automatisch die nachfolgend aufgeführten Lizenzvereinbarungen und alle damit verbundenen Copyright-Vorschriften an. Nur unter gleichzeitiger Anerkennung dieser Fakten sind Sie berechtigt, Juggler zu nutzen.

Lizenzumfang

Juggler und alle dazu gehöenden Dateien und Schriften düfen nur auf der Anzahl von Computern eingesetzt werden, für die eine gültige Lizenz erworben wurde.

Gebrauch von Juggler in einem Computer-Netzwerk

Juggler kann auch auf einem Computer-Netzwerk installiert werden oder von einem an ein Netzwerk angeschlossenen Computer übertragen werden, unter der Voraussetzung, daß unter keinen Umständen die Anzahl der Gesamtbenutzer von Juggler die in der Lizenzvereinbarung angegebene Höchstzahl von Anwendern überschreitet.

Als Anwender ist jeder Computer-Benutzer definiert, dessen Maschine in einem solchen Computer-Netzwerk installiert ist, ungeachtet davon, ob der Anwender weiß, daß Juggler in dem Netzwerk installiert ist und unabhängig davon, ob der Anwender Juggler benutzt oder nicht.

Erstellen von Kopien

Das Erstellen von Kopien der Juggler Disketten ist nur zu Sicherungszwecken erlaubt. Es wird sogar dringend empfohlen, vor der Arbeit mit den Disketten Sicherheitskopien anzufertigen. Die Erstellung von Kopien zu anderen Zwecken ist untersagt und kann strafrechtlich verfolgt werden.

Das Handbuch und sonstiges schriftliches Begleitmaterial darf ohne ausdrückliche schriftliche Genehmigung der RSE unter keinen Umständen in irgendeiner Art vervielfältigt werden.

Haftung

Die Firma RSE schließt jede Haftung für Schäden aus, die durch vorhandene Angaben in der Dokumentation entstehen.

Obwohl das Autorensystem Juggler sehr sorgfältig getestet wurde, kann eine Haftung für mittelbare oder unmittelbare Folgeschäden aus Programmfehlern nicht übernommen werden. Die maximale Haftung der Reitz Software-Entwicklung ist auf den vom Lizenznehmer bezahlten Preis begrenzt.

Hersteller

Reitz Software-Entwicklung

Langendellschlag 58

65199 Wiesbaden

Tel:  0611/466618

- Kompetente Systemprogrammierung für MS-DOS, Windows, OS/2 und Unix.

- Programmierung von multimedialen Datenbankanwendungen.

- Erstellung maßgeschneiderter Problemlösungen unter Verwendung

  moderner objektorientierter Programmiertechniken.

Vertrieb:

Media Concept GmbH

Am Markt 1

64347 Griesheim

Tel: 06155/76336

Fax: 06155/76337

Ihr Spezialist für Multimedia, Lernprogramme und Multimedia Kiosk-Terminals.


Portierung
Umstieg von DOS auf Windows

Wenn Sie bereits mit der MSDOS-Version des Autorensystems Juggler gearbeitet haben, dann finden Sie hier die erforderlichen Informationen für den Umstieg.

Die Windows- und die DOS-Version sind dateikompatibel, d.h. Juggler-Quellprogramme (*.MOD), die mit der DOS-Version erstellt wurden, können mit der Windows-Version bearbeitet werden. Des weiteren können Sie Ihre Datenbanken und Lexikon-Dateien weiterverwenden.

Die beiden Versionen sind nicht befehlskompatibel. Es ist nicht möglich, ein DOS-Programm unter Windows ohne Änderungen zum Laufen zu bringen. Das ließ sich nicht vermeiden, da Windows gerade im Bereich Fenster-Management, Grafik-Bearbeitung, Animation und Multimedia sehr viel umfangreichere Möglichkeiten bietet als MSDOS. Eine befehlskompatible Version hätte bedeutet, auf einen Großteil der Möglichkeiten, die Windows bietet, zu verzichten. Aus diesem Grunde haben wir uns zugunsten der Leistung entschieden.

Die grundlegende Struktur von Lernprogrammen ist gleichgeblieben. Ein Programm baut sich aus bis zu 300 Modulen auf, die sich gegenseitig aufrufen können. Die Änderungen betreffen vor allem die folgenden Bereiche:

1.  Fenster-Management.

2. Laden von Bitmap-Grafiken

3. Animation

4. Video- und Audio-Ansteuerung

Einige bekannte Befehle der DOS-Version fallen unter Windows weg, da diese Befehle in einer ereignisorientierten Systemoberfläche wie Windows keinen Sinn mehr machen. Dazu gehören z.B. die Befehle WTASTE, TASTE etc.

Bei anderen Befehlen hat sich die Syntax verändert. Dazu gehören die Befehle FENAUF, FENZU usw.

Eingehendere Informationen über die Änderungen finden Sie in den Kapiteln Programmierung und der Befehlsreferenz dieser Online-Hilfe.

Sehen Sie sich außerdem den Quellcode der mitgelieferten Demo-Programme an, um ein Gefühl für die Programmierung von Lernprogrammen unter Windows zu bekommen.


Weiterentwicklung
Wie gehts weiter?

Das Autorensystem Juggler wird ständig weiterentwickelt und verbessert. Da es sich hier um ein deutsches Produkt handelt, besteht für Sie als Anwender die Möglichkeit durch Ihre Anregungen und Ideen auf die Entwicklung Einfluß zu nehmen. Schreiben Sie uns einfach und teilen Sie uns Ihre Verbesserungsvorschläge mit. Die Adresse finden Sie in der Einleitung dieses Online-Handbuchs. Haben Sie bitte Verständnis dafür, daß nur Verbesserungsvorschläge aufgegriffen werden können, die für alle Anwender interessant sind. Funktionen, die nur von einer bestimmten Firma oder für ein bestimmtes Projekt benötigt werden, können in eine Standard-Software, wie sie Juggler für Windows darstellt, nicht aufgenommen werden.

Natürlich sind wir auch an Fehlermeldungen interessiert. Obwohl wir uns bemüht haben, das Autorensystem so gründlich wie möglich zu testen, ist es unmöglich, alle denkbaren Situationen, denen das Autorensystem im Laufe der Zeit ausgesetzt wird, herbeizuführen. Es wird deshalb sicher noch der eine oder andere Fehler auftreten. Falls das der Fall ist, teilen Sie uns dies bitte mit. Wir werden uns bemühen, jeden Fehler schnellstmöglich aus der Welt zu schaffen.

Wir haben selbst schon einige Ideen, was am Autorensystem noch zu verbessern ist. Deshalb möchten wir Ihnen hier kurz vorstellen, was in den nächsten Monaten und Jahren für die Weiterentwicklung von Juggler geplant ist.

Portierung

Portierung des Systems auf OS/2 2.x, Windows NT und Solaris 2.x (SUN Sparc-Station).

Ressource-Editor

Entwicklung eines Ressourcen-Editors, der es erlaubt, Bildschirmfenster und deren Inhalte interaktiv zu bearbeiten. Die derart erstellten Fensterobjekte können in eine Datei geschrieben werden, aus der sie mit einem Befehl des Autorensystems geladen werden können. Alternativ kann aus einem solchen Fensterobjekt auch Juggler-Quellcode erzeugt werden.

Entwicklung einer Windows-Version des Datenbank-Werkzeugs.

Weiterentwicklung des Befehlssatzes.

Unterstützung von weiteren Grafikformaten.

Verbesserte DVI-Unterstützung, die über die Möglichkeiten des MCI hinausgeht.


Editor

In einem Editorfenster kann ein Modul aus einem Juggler-Lernprogramm editiert werden. Es können bis zu 20 Editorfenster gleichzeitig auf dem Bildschirm sein, d.h. es können maximal 20 Module gleichzeitig bearbeitet  werden.

Geben Sie Ihren Text einfach so ein, als würden Sie eine Schreibmaschine benutzen. Drücken Sie die Eingabetaste, um eine Zeile zu beenden.

In einem Editorfenster können maximal 32768 Zeichen (32 KB) bearbeitet werden, entsprechend der maximalen Größe eines Juggler-Moduls. Eine Zeile kann insgesamt 256 Zeichen lang werden, Wird versucht, darüber hinaus zu schreiben, wir dein Signalton ausgegeben.

Der Editor bietet neben den normalen Clipboard-Funktionen (Ausschneiden, Kopieren, Einfügen, Löschen) auch eine Wordstar-kompatible Tastaturbelegung.

Wordstar-kompatible Tastaturfunktionen

Allgemeine Funktionen

Zeichen links	Strg - S oder Linkspfeil

Zeichen rechts	Strg - D oder Rechtspfeil

Wort links	Strg - A

Wort rechts	Strg - F

Zeile aufwärts	Strg - E oder Aufwärtspfeil

Zeile abwärts	Strg - X oder Abwärtspfeil

Aufwärts rollen	Strg - W

Abwärts rollen	Strg - Z

Seite zurück	Strg - R oder PgUp

Seite vorwärts	Strg - C oder PgDn

Insert/Overwrite	Strg - V oder INS

Zeile einfügen	Strg - N

Zeile löschen	Strg - Y

Zeichen links vom Cursor löschen	Strg - H oder Rücktaste

Zeichen auf Cursorposition löschen	Strg - G oder DEL

Suchen/Ersetzen wiederholen	Strg - L

Blockfunktionen

Blockbeginn setzen	Strg - K B

Blockende setzen	Strg - K K

Block kopieren	Strg - K C

Block verschieben	Strg - K V

Block löschen	Strg - K Y

Block lesen	Strg - K R

Block schreiben	Strg - K W

Markierung löschen	Strg - K H

Block drucken	Strg - K P

Block einrücken	Strg - K I

Block ausrücken	Strg - K U

Sonstige Funktionen

Bis Zeilenende löschen	Strg - Q Y

Suchen	Strg - Q F

Suchen & Ersetzen	Strg - Q A


Entwicklungsumgebung

Das Programm 'juggler.exe' ist das zentrale Programm des Autorensystems. Es enthält alle Komponenten, die zum Entwickeln, Testen und Ausführen von Lernprogrammen erforderlich sind.

Das Programm (das auch als integrierte Entwicklungsumgebung bezeichnet wird) besteht aus den folgenden Teilen:

Editor

Bebeiten und Editieren der Lernprogramme.

Werkzeuge

Unterstützen des Entwicklers.

Hilfesystem

Anbieten von ausführlichen Hilfetexten zur Entwicklungsumgebung und zum Befehlssatz.

Compiler

Umsetzen der Lernprogramme in ein Format, das sehr schnell ausgeführt  werden kann. Komplette Überprüfung der Befehlssyntax.

Linker

Erzeugen des ausführbaren Lernprogramms.

Laufzeitsystem

Ausführen des fertigen Lernprogramms.

Alle Teile der integrierten Entwicklungsumgebung können über eine komfortable Menüleiste bedient werden und zwar wahlweise mit der Tastatur oder mit der Maus. Im folgenden finden Sie eine Auflistung aller Funktionen der Menüleiste:

Datei

Neu

Öffnen

Speichern

Speichern unter

Drucken

Druckerinstallation

Beenden

Bearbeiten

Rückgängig

Ausschneiden

Kopieren

Einfügen

Löschen

Modul

Öffnen

Speichern

Schließen

Anlegen

Löschen

Umbenennen

Kopieren

Einlagern

Compiler

Modul compilieren

Mit Make compilieren

Make & Start

Alles compilieren

Ab Modul starten

Optionen

Compiler-Optionen

Makros bearbeiten

Definitionen bearbeiten

Werkzeuge einstellen

Schriften definieren

Muster definieren

Fenster

Horizontal ordnen

Vertikal ordnen

Überlappend ordnen

Symbole ordnen

Alle schließen

Hilfe

Index

Hilfe verwenden

Info

System

Der Editor des Autorensystems verfügt darüberhinaus über Wordstar-kompatible Tastaturfunktionen.


Laufzeitsystem

Nachdem ein Lernprogrammautor eine Applikation mit der integrierten Enwicklungsumgebung (juggler.exe) erstellt hat, möchte er natürlich sein Werk an Dritte weitergeben. Außerdem soll das Lernprogramm ausgeführt werden können, ohne beim Programmstart jedesmal die Entwicklungsumgebung aktivieren zu müssen.

Die erzeugten Lernprogramme mit der Dateikennung '.CBT' können nicht selbständig ausgeführt werden. Der Juggler-Compiler erzeugt keinen echten Maschinencode, der vom Computer direkt ausgeführt werden kann. Die erzeugten Lernprogramme benötigen ein sogenanntes 'Laufzeitsystem' zur Ausführung. Dieses Laufzeitsystem ist ein eigenständiges Programm namens 'exw.exe'. Dieses Programm wird von der Entwicklungsumgebung beim Start eines Lernprogramms automatisch aufgerufen. Es kann aber auch unabhängig von der Entwicklungsumgebung verwendet werden.

Starten des Laufzeitsystems

Wird das Icon des Laufzeitsystems angeklickt, dann wird ein Abfragefenster aufgeblendet, in dem der Name des zu startenden Programms eingegeben werden kann.

Wird das Laufzeitsystem über einen Kommandozeileninterpreter aufgerufen, dann kann dem System der Name des zu startenden Programms als Parameter mitgegeben werden:

exw  programm

Beispiel

exw  demo    -    Aufruf des Lernprogramms DEMO.CBT.

Soll ein Lernprogramm beim Anklicken des Icons des Laufzeitsystems automatisch gestartet werden, dann muß das Lernprogramm mit dem Laufzeitsystem im Dateimanager mittels der Funktion 'Verknüpfen' verbunden werden.


Werkzeuge

Dem Autorensystem liegen noch verschiedene ergänzende Programme bei. Dazu gehören:

Mehrprogramm-Linker (wlink.exe)

Der Mehrprogramm-Linker paßt die Variablenbereiche verschiedener Lernprogramme aneinander an. Dadurch können Lernprogramme sich gegenseitig aufrufen (mittels des Befehls PROGRAMM) und dabei die gleichen Variablen benutzen.

Datenbank-Werkzeug (dbtool.exe)

Dieses Programm dient dem Anlegen und der Bearbeitung von dbase-kompatiblen Datenbanken. Auf die derart erstellten Datenbanken kann aus Lernprogrammen heraus zugegriffen werden.

Grafikbibliothek-Generator (grflib.exe)

Dieses Programm faßt Bitmap-Grafiken (*.BMP) in  einer sogenannten Grafikbibliothek zusammen. Eine solche Bibliothek ist leichter zu handhaben als mehrere dutzend oder hundert Einzelgrafiken. Außerdem können Grafiken in einer solchen Bibliothek nicht von Dritten verändert werden.

Zum Zugriff auf eine Grafikbibliothek werden die Systemvariable GRFLIB$ und die Befehle GRFLADEN oder BILDLADEN benötigt.

Lexikon-Compiler (lex.exe)

Der Lexikon-Compiler erzeugt aus einer ASCII-Datei eine Lexikondatei, die vom Autorensystem mittels des Befehl LEXIKON eingebunden werden kann.

Optimierungs-Programm (optimize.exe)

Dieses Programm optimiert ein Juggler-Quellprogramm (*.MOD). Lücken im Programmindex werden geschlossen. Nicht benötigter Speicherplatz in der Programmdatei wird freigegeben.


Haeufige_Fehler
Die häufigsten Fehler

Im folgenden sind die Programmierfehler aufgelistet, die nach unserer Erfahrung am häufigsten auftreten.

Die Make-Funktion des Compilers funktioniert nicht. Es werden grundsätzlich alle Module meines Programms compiliert.

Wahrscheinlich ist die Systemzeit auf Ihrem Rechner verstellt. In einem Juggler-Quellprogramm wird das Datum der letzten Änderung zu jedem Modul abgespeichert. Wird die Systemuhr zurückgestellt, dann werden bei der Compilierung die Module in der Objekt-Datei (*.OBJ) mit einem früheren Datum abgespeichert. Der Compiler stellt dann beim Datumsvergleich immer fest, das das Quellmodul ein späteres Datum hat und compiliert werden muß.

Abhilfe: Stellen Sie das Systemdatum richtig ein. Sicherheitshalber sollten Sie außerdem das Programm 'optimize.exe' benutzen, um Ihr Juggler-Quellprogramm (*.MOD) zu optimieren. Bei der Optimierung werden alle Module auf die aktuelle Systemzeit gesetzt. Darüberhinaus sollten Sie die Objekt- (*.OBJ) und die Programmdatei (*.CBT) des Programms löschen und das Programm anschließend neu compilieren.

Ich habe Änderungen an meinem Programm vorgenommen. Beim Start des Programms mit der Funktion 'Make & Start' wird aber trotzdem eine alte Programm-Version aufgerufen.

Auch hier ist wahrscheinlich das Systemdatum der Schuldige. Stellen Sie das Systemdatum korrekt ein. Anschließend optimieren Sie bitte Ihr Quellprogramm (*.MOD) mit dem Programm 'optimize.exe'. Danach löschen Sie die Objekt- (*.OBJ) und die alte Programmdatei (*.CBT). Compilieren Sie das Programm im Anschluß neu.

Ich bekomme beim Ablauf des Programms nach einiger Zeit die Meldung 'Überlauf des Modulstacks'.

Sie haben Ihr Lernprogramm falsch aufgebaut. Module verhalten sich wie Prozeduren oder Funktionen von Hochsprachen wie Pascal oder C. Beim Aufruf eines Moduls wird die Position im aktuellen Modul in einer Liste (dem sogenannten Modulstack) gespeichert. Wird das aufgerufene Modul beendet (durch komplette Abarbeitung oder den Befehl ENDE), wird der Eintrag im Modulstack verwendet, um an die aktuelle Codeposition im rufenden Modul zurückzukehren. Der Modulstack wird im Anschluß verkleinert.

Das heißt, Sie müssen Ihre Programme immer als Baumstruktur aufbauen. Im oberen Teil der folgenden Grafik ist zu sehen, wie ein Juggler-Programm aufgebaut werden sollte.

Im unteren Teil der Grafik sehen Sie eine Programmstruktur, bei der sich Module permanent gegenseitig aufrufen, ohne jemals zum rufenden Modul zurückzukehren. Irgendwann kommt es dann zu einem Überlauf des Modulstacks, d.h. es ist kein Platz mehr in der Rücksprungliste vorhanden, um die Rücksprungadressen aufzunehmen. Der Modulstack kann maximal 100 Einträge aufnehmen. Sind diese Einträge verbraucht, dann wird das Lernprogramm mit einer Fehlermeldung abgebrochen.

Ich eröffne mit dem Befehl FENAUF ein Fenster vom Typ 0 oder 1 (Kindfenster), das aber nicht auf dem Bildschirm zu sehen ist.

Alle Kindfenster werden dem zuletzt eröffneten Standard- (Typ 2) oder Dialogfenster (Typ 3) zugeordnet. Die Kindfenster werden dabei nebeneinander angeordnet. Möglicherweise wird Ihr neu eröffnetes Fenster durch ein zuvor eröffnetes Kindfenster verdeckt. Das passiert vor allem, wenn Sie Kindfenster haben, welche die Fläche ihres Vaterfensters ausfüllen. Ordnen Sie in dem Fall dem neu eröffneten Fenster mit dem Befehl FENVATER das zuvor eröffnete Kindfenster als Vaterfenster zu.

In folgendem Beispiel tritt das Problem auf. Das zweite Fenster ist nicht zu sehen.

FenAuf 1 0 0 &breite &hoehe 2

breite = &xmax - 1

hoehe  = &ymax - 1

FenAuf 2 0 0 breite hoehe 0

"Das hier ist das erste Kindfenster."

FenAuf 3 0 0 breite hoehe 0

"Das hier ist das zweite Kindfenster."    ! nicht zu sehen

Warte

Um das Problem zu lösen, fügen wir eine Programmzeile hinzu:

FenAuf 1 0 0 &breite &hoehe 2

breite = &xmax - 1

hoehe  = &ymax - 1

FenAuf 2 0 0 breite hoehe 0

"Das hier ist das erste Kindfenster."

FenVater 3 2

FenAuf 3 0 0 breite hoehe 0

"Das hier ist das zweite Kindfenster."    ! Jetzt sieht man es

Warte

Eine zweite mögliche Lösung ist die folgende:

FenAuf 1 0 0 &breite &hoehe 2

breite = &xmax - 1

hoehe  = &ymax - 1

FenAuf 2 0 0 breite hoehe 0

"Das hier ist das erste Kindfenster."

FenAuf 3 0 0 breite hoehe 0

FenOben 3

"Das hier ist das zweite Kindfenster."    ! Jetzt sieht man es

Warte

Beim Testen eines Juggler-Programms tritt manchmal der Laufzeitfehler 'Kein Fenster mit dieser ID eröffnet' auf.

Ein solcher Fehler kann auftreten, wenn Sie dem Anwender eines Juggler-Programms erlauben, ein Fenster durch den Schließ-Befehl im Fenster-Menü zu schließen. Falls das geschieht, wird das Fenster geschlossen und ein Ereignis vom Typ 11 an das Programm gemeldet.

Wird dieses Ereignis nicht ausgewertet und werden weiterhin Ausgaben in das nicht mehr vorhandene Fenster gemacht, dann kann die angegebene Fehlermeldung auftreten.

Um das zu umgehen, sollte das Schließen eines Fensters durch den Benutzer entweder gesperrt werden (durch den Befehl FENDEF oder die Systemvariable FILTER$), oder nach den betroffenen EREIGNIS- oder WARTE-Befehlen müssen Ereignisse vom Typ 11 ausgewertet und dementsprechend reagiert werden.

Ich kann ein Fenster im Lernprogramm nicht durch das Fenster-Menü schließen, obwohl der Menüpunkt 'Schließen' aktiviert ist.

Wahrscheinlich haben Sie die Systemvariable FILTER$ falsch eingestellt. Mit dieser Variablen können Ereignisse, die an einer bestimmten Stelle im Programm nicht von Interesse sind, ausgefiltert werden. Dadurch wird die Auswertung der Ereignisse einfacher. Außerdem kann mit dieser Variablen festgelegt werden, von welchen Fenstern Ereignisse erlaubt sind. Da das Schließen eines Fensters durch das Fenster-Menü ebenfalls ein Ereignis ist (Typ 11), kann eine falsche Einstellung von FILTER$ dazu führen, daß das Fenster nicht mehr geschlossen werden kann.

Dieser Umstand kann zu einer fatalen Situation führen, wenn ein Programm nur durch das Schließen des Applikationsfensters (ID = 1) beendet werden kann. Ist hier der Filter falsch eingestellt, kann das Programm nur noch durch einen Warmstart des Rechners beendet werden.

Sie sollten deshalb sicherheitshalber während der Entwicklung eines Programms immer den Befehl DEBUG verwenden. Solange das Programm im Debug-Modus ist, können Sie jederzeit mit der Tastenkombination Strg-D die Debug-Box aufrufen. Von hier aus können Sie das Programm jederzeit beenden.


Programm_kopieren
Was muß ich in Verbindung mit einem Lernprogramm kopieren?

Folgende Komponenten müssen in Verbindung mit einem Lernprogramm kopiert werden:

1. Das lauffähige Lernprogramm mit der Dateikennung .CBT.

2. Alle Grafiken, Grafikbibliotheken, Datenbanken, Lexika und sonstige Dateien, die zu dem Programm gehören.

3. Das Laufzeitsystem (exw.exe).

4. Die Schriftendatei (juggler.fnt).

5. Die Kommandotabelle (command.dat)

6. Die Fehlertabelle (errtab.dat)

7. Folgende DLL-Dateien:

commdlg.dll

mmub100.dll

svb100.dll

toolb100.dll


Informationen
Informationen für Beta-Tester

Guten Tag,

wir freuen uns, Sie beim Beta-Test-Programm des Autorensystems Juggler für Windows begrüßen zu können.

Der Beta-Test hat offiziell am 01.08.93 begonnen und wird voraussichtlich bis November/Dezember dieses Jahres dauern. Wenn Sie mit dem Programm zufrieden sind, können Sie ab diesem Zeitpunkt die Alpha-Version des Autorensystems erwerben.

Wir hoffen, daß Ihnen auch die Beta-Version schon gute Dienste leisten wird. Obwohl wir (Reitz Software-Entwicklung und Media Concept GmbH) bereits umfangreiche Tests durchgeführt haben, ist es natürlich unmöglich, das Programm in allen denkbaren Kombinationen von Hard- und Software zu testen. Deshalb sind wir auf Ihre Hilfe angewiesen. Je intensiver Sie mit dem Programm arbeiten, desto besser.

In Verbindung mit dieser Beta-Version steht noch kein Handbuch zur Verfügung. Die Hilfedatei des Autorensystems ist allerdings in der Form eines Online-Handbuchs aufgebaut. Die Hilfedatei enthält alle Informationen, die Sie benötigen. Lesen Sie sich die verschiedenen Kapitel der Hilfe bitte sorgfältig durch.

Im Kapitel Programmieren mit Juggler für Windows werden Sie in die Art und Weise eingeführt, in der mit Juggler Programme erstellt werden. Zum Befehlssatz, sowie zu den Systemvariablen und Systemfunktionen finden Sie eigene Indexabschnitte, in denen alle Befehle und Funktionen des Autorensystems aufgelistet sind.

Sehen Sie sich bitte auch den Programmcode der mitgelieferten Demoprogramme an. Mit der Tastenkombination Strg-F1 oder durch Anklicken mit der rechten Maustaste erhalten Sie zu einem Befehlswort sofort die zugehörige Syntaxhilfe.

Sollten Sie Fehler finden (dazu gehören auch Rechtschreib- oder grammatikalische Fehler in der Hilfe) oder Verbesserungsvorschläge haben, dann informieren Sie uns bitte. Setzen Sie sich dazu telefonisch, schriftlich oder per Fax mit der RSE oder der Media Concept in Verbindung (die Adressen finden Sie im Kapitel Einleitung).

In der  endgültigen Version werden noch einige Features realisiert sein, die in der Betaversion noch nicht eingebaut sind. Dazu gehören:

1.  3D-Struktur

Die Oberfläche des Autorensystems wird noch einmal überarbeitet und erhält ein dreidimensionales Erscheinungsbild.

2.  Formatierung von Eingaben in Eingabefeldern

Die Formatierung von numerischen Eingaben in Eingabefeldern ist in der Beta-Version noch nicht realisiert.

Bitte beachten !!!

Die Beta-Version dient nur zu Testzwecken. Eine kommerzielle Nutzung dieser Version ist nicht erlaubt. Programme, die mit dieser Version erstellt wurden, dürfen nicht weitergegeben werden. Des weiteren dürfen mit der Beta-Version keine Schulungen durchgeführt werden.

Es ist möglich, daß sich an der Befehlssyntax des Autorensystems noch Änderungen ergeben. Die Firma Reitz Software-Entwicklung übernimmt keine Garantie dafür, daß die Befehlssyntax der Alpha-Version der Syntax der Beta-Version enspricht.

Falls Sie Applikationen, die Sie mit der Betaversion entwickelt haben, bereits vermarkten wollen, setzen Sie sich bitte mit uns in Verbindung.

mit freundlichen Grüßen

Thomas Reitz


Programmierung
Programmieren mit Juggler für Windows

In den folgenden Abschnitten wird auf die Art und Weise eingegegangen, in der mit dem Autorensystem Juggler Lernprogramme erstellt werden.

Dabei wird jeder Bereich der Programmierung ausführlich besprochen und aufgezeigt, wie man mit den Möglichkeiten des Autorensystems schnell und effizient die gestellten Probleme lösen kann.

Ein Lernprogramm setzt sich stets aus Befehlen, Variablenzuweisungen, Operationen auf Variablen und Modulaufrufen zusammen. Die Bedeutung von Modulen und Variablen wird in den folgenden Abschnitten erläutert.

Eine alphabetisch sortierte Liste aller Juggler-Befehle ist im Befehls-Index dieser Hilfe zu finden.

Themen dieses Kapitels

Module

Variablen

Systemvariablen

Systemfunktionen

Bildschirmfenster

Virtuelle Fenster

Ereignisverarbeitung

Textausgabe

Hypertext

Grafik

Drucken

Animation

Multimedia

Lexikon

Datenbank

DLL-Programmierung

Auflösungsunabhängiges Programmieren


Module

Ein Lernprogramm besteht aus sogenannten Modulen (bis zu 300). In einem solchen Modul werden Befehle und Anweisungen zusammengefaßt. Ein Modul läßt sich am ehesten mit Prozeduren oder Funktionen von Programmiersprachen wie Basic, Pascal oder C vergleichen. Es kann bis zu 32.000 Zeichen aufnehmen. Da in einem Programm bis zu 300 Module angelegt werden können, kann ein Lernprogramm also maximal aus 9.600.000 (9.6 MB) Zeichen bestehen. Dieser Wert dürfte aber in der Praxis nur äußerst selten erreicht werden.

Beim Anlegen eines Lernprogramms wird von der Entwicklungsumgebung des Autorensystems automatisch ein Modul namens START angelegt. In diesem Modul müssen die Anweisungen, die ein Lernprogramm einleiten, abgelegt werden. Das Modul START kann auch nicht gelöscht oder umbenannt werden. Das ist wichtig, da die Bearbeitung eines Programms immer im Modul START beginnt.

Alle weiteren Module, die Sie für Ihr Lernprogramm benötigen, können Sie selbst anlegen (Menü 'Modul', Menüpunkt 'Anlegen'). Die Vergabe von eindeutigen Modulnamen bleibt dabei Ihnen überlassen. Ein solcher Name kann maximal acht Zeichen lang sein. Er muß aus alphanumerischen Zeichen (A - Z, 0 - 9) bestehen. Am Anfang des Namens darf keine Ziffer stehen.

Zulässige Modulnamen wären z.B INIT, MODUL1, HILFE, etc. Unzulässig wären Namen wie MOD!, MD'A, 1HILFE, usw. Module können sich gegenseitig aufrufen. Dazu muß an der Stelle im aktuellen Modul lediglich der Name des Moduls angegeben werden, in dem die Bearbeitung weitergehen soll.

Beispiel:

Ereignis  wnd  type  scc

Analyse  scc

    :1:  mod1   !  Schalter-1 wurde angeklickt. Modul MOD1 wird aufgerufen.

    :2:  mod2   !  Schalter-2 wurde angeklickt. Modul MOD2 wird aufgerufen.

    :3:  mod3   !  Schalter-3 wurde angeklickt. Modul MOD3 wird aufgerufen.

Aend

Beim Aufruf eines Moduls wird normalerweise die Bearbeitung des Lernprogramms am Anfang des gerufenen Moduls fortgesetzt.

Dem Aufruf kann aber zusätzlich noch der Name einer Sprungmarke (Label) angefügt werden, das in dem aufgerufenen Modul definiert ist. In dem Fall wird die Bearbeitung im aufgerufenen Modul ab dieser Sprungmarke fortgesetzt.

Um den Sprung zu einem Label zu bewirken, werden dem Namen des Moduls ein Punkt und dahinter der Name des Labels hinzugefügt.

Beispiel:

 Die Struktur eines typischen Lernprogramms könnte wie folgt aussehen:


Variablen

In einer sogenannten Variablen können Zahlen und Zeichenketten gespeichert werden.

Juggler kennt zwei unterschiedliche Variablentypen: numerische Variablen und Stringvariablen (alphanumerische Variablen). Der Name einer solchen Variablen kann bis zu acht Zeichen lang werden. Die Regeln für die Vergabe von Variablennamen entsprechen den Regeln für die Vergabe von Modulnamen, d.h. es sind keine Sonderzeichen im Namen (,.!? etc.) erlaubt und es darf keine Ziffer am Anfang des Variablennamens stehen.

Numerische Variablen nehmen Zahlenwerte auf (Fließkommawerte mit einer Genauigkeit von 64 Bit). Stringvariablen nehmen Zeichenketten mit einer Länge von maximal 128 Zeichen auf. Stringvariablen werden gekennzeichnet, indem dem Namen der Stringvariablen ein Dollarzeichen ('$') angehängt wird.

Die Inhalte von Variablen können einander zugewiesen oder algebraisch miteinander verknüpft werden. Des weiteren können Juggler-Befehlen Variablennamen als Parameter übergeben werden. In diesem Fall verwendet der Befehl den Inhalt der Variablen anstelle eines feststehenden Zahlenwertes oder einer feststehenden Zeichenkette.

Numerische Variablen

Im folgenden sehen Sie einige Beispiele, wie Variablen verwendet

werden:

  var1 = var2	!  Der Inhalt der Variablen var2 wird der Variablen

!  var1 zugewiesen.

  var1 = sin(45.42 * pi ^ 2/3) - sqrt(acos(b[5])) + 1.07819E2

               !  Der Variablen var1 wird das Ergebnis einer

               !  komplexen Berechnung zugewiesen.

Bei der algebraischen Verknüpfung von Variablen und Zahlenwerten gilt:  Klammer- vor Potenz- vor Punkt- vor Strichrechnung.

Des weiteren sind folgende mathematische Funktionen implementiert:

  SIN	-  Sinus

  COS	-  Cosinus

  TAN	-  Tangens

  ASIN	-  Arcussinus

  ACOS	-  Arcuscosinus

  ATAN	-  Arcustangens

  ABS	-  Absolutbetrag

  EXP	-  Exponentialfunktion

  INT	-  Integer, Ganzzahliger Anteil einer Zahl

  FRAC	-  Fraction, Nachkommateil einer Zahl

  LN	-  Zehnerlogarithmus

  LOG	-  Natürlicher Logarithmus

  SQRT	-  Quadratwurzel

  RAND	-  Zufallszahl zwischen 0 und 1

  RUND	-  Rundung auf zwei Stellen

  PI	-  Kreiszahl Pi, 3.141592

Zahlen können auch im Exponentialformat angegeben werden (z.B. 1.345E8 oder -1.456E-4).

Stringvariablen

Stringvariablen nehmen Zeichenketten mit einer Länge von maximal 128 Zeichen auf. Einer Stringvariablen können Zeichenketten zugewiesen werden. Bei der Zuweisung können diese Zeichenketten auch miteinander verknüpft werden.

  adresse$ = "Tulpenstr. 8, 5100 Aachen"

  var$ = "Hermann " + "Müller, " + adresse$

Die Variable var$ enthält nach diesen Zuweisungen die folgende Zeichenkette: "Hermann Müller, Tulpenstr. 8, 5100 Aachen".

Indizierung von Variablen

Es kann der Fall auftreten, daß man eine Reihe von Werten in Variablen mit gleichem Namen abspeichern möchte. Das könnte z.B. der Fall sein, wenn man 10 Adressen speichern möchte und nicht für jede Adresse eine eigene Variable anlegen möchte.

Dies kann man erreichen, indem man Variablen indiziert. Eine indizierte Variable bekommt in eckigen Klammern einen numerischen Wert oder den Namen einer anderen numerischen Variablen angefügt.

Dies könnte für die Abspeicherung von 10 Adressen folgendermaßen aussehen:

  adresse$[1] = "..............."

  adresse$[2] = "..............."

      .

      .

      .

  adresse$[10] = "..............."

Hier werden einer Variablen namens 'adresse$' insgesamt 10 Werte zugewiesen. Interessant wird diese Technik vor allem in Verbindung mit sogenannten Laufvariablen. Eine Laufvariable ist eine numerische Variable, die als Index für eine andere Variable dient.

Beispiel:

  adresse$[10] = ""

  Schleife index = 1 Bis 10

      Cursor 1 1  "                                                "

      Cursor 1 1  "Adresse eingeben: ";

      Eingabe = adresse$[index]

  Send

In diesem kurzen Programm werden in einer Schleife insgesamt 10 Adressen erfaát, ohne daß für jede Variable ein eigener Eingabebefehl aufgeführt werden müßte.

In diesem Beispiel ist noch ein anderer sehr wichtiger Punkt demonstriert. Es ist erforderlich, vor der Arbeit mit einer indizierten Variable festzulegen, wie groß der Index dieser Variablen maximal sein kann. Dies wird durch eine einfache Zuweisung auf die Variable mit dem größten Index erreicht. Im Beispiel ist dies die Zuweisung 'adresse$[10] = ""'. Dadurch wird dem Autorensystem mitgeteilt, wieviele Werte diese Variable maximal haben kann. Was dieser Variablen zugewiesen wird, ist dabei völlig gleichgültig. In der Regel werden dies der Wert 0 für numerische Variablen, bzw. ein Leerstring ("") für Stringvariablen sein.

Achtung: Falls die Festlegung des maximalen Index einer Variablen versäumt wird, kann dies zum Abbruch eines ablaufenden    Lernprogramms führen.

Sowohl numerische Variablen als auch Stringvariablen können indiziert werden. Der maximal mögliche Index für eine Variable beträgt 4095. D.h. eine Variable kann bis zu 4095 verschiedene Werte aufnehmen.


Systemvariablen_Programmierung
Systemvariablen

Juggler besitzt einige spezielle Variablen, die vom Autorensystem selbst bei der Ausführung eines Lernprogramms ausgewertet werden. Diese Variablen nennt man Systemvariablen.

Es gibt 9 dieser Variablen. In die Variable SDATEI$ wird z.B. der Name der Datei eingetragen, in welche der Befehl DATEN seine Parameter schreiben soll. Beim Aufruf des Befehls DATEN wertet das Autorensystem den Inhalt der Variablen SDATEI$ aus.

Beispiel:

SDATEI$ = "test.dat"

Daten "Im Frühtau zu Berge wir ziehen"

Daten "Tralala"

Nach der Ausführung dieser Programmzeilen befindet sich auf der Festplatte (oder der Diskette) eine Datei namens 'test.dat', in welcher der obenstehende Text gespeichert ist.

Soll Text in eine andere Datei geschrieben werden, muß der Variablen SDATEI$ lediglich ein anderer Wert zugewiesen werden.

Eine Beschreibung aller Systemvariablen erfolgt im Referenzteil dieser Hilfe.


Systemfunktionen_Programmierung
Systemfunktionen

Eine Systemfunktion ähnelt einer Variablen. Genauso wie eine Variable kann eine Systemfunktion einer anderen Variablen zugewiesen werden oder als Parameter für einen Befehl dienen. Der wesentliche Unterschied ist, daß man einer Systemfunktion keinen Wert zuweisen kann. Systemfunktionen ermitteln Informationen über das laufende Lernprogramm und den Computer, auf  dem das Lernprogramm läuft, zum Zeitpunkt ihrer Ausführung und stellen diese Informationen dem

Lernprogramm zur Verfügung.

Wenn Sie im Lernprogramm z.B. ermitteln wollen, welcher Mikroprozessor in dem Rechner installiert ist, auf dem das Lernprogramm läuft, können Sie dies durch den Aufruf der Systemfunktion &CPU$ erreichen. Sobald bei der Ausführung des Programms die Systemfunktion aufgerufen wird, wird eine Routine des Autorensystems aktiviert, welche den installierten Prozessor identifiziert und den

Namen des Prozessors an das Lernprogramm zurückliefert.

Beispiel:

  Wenn  &cpu$  <>  "Intel 80486"  Dann

      Cursor  1  1    "Unzureichende Leistung des Computers!"

      Stop

  Wend

Diese Programmzeilen könnten am Anfang eines Lernprogramms stehen. Es wird der installierte Mikroprozessor überprüft. Da das folgende Lernprogramm eine hohe Leistung von dem Computer fordert, auf dem es installiert wird, wird der leistungsstarke Mikroprozessor Intel 80486 vorausgesetzt. Verfügt der Computer nicht über diese Komponente, wird das Lernprogramm mit einer Meldung abgebrochen.

Es gibt des weiteren Systemfunktionen, mit denen das Fenstersystem (Windows, OS/2 etc.) , die aktuelle Cursorposition, die Bildschirmauflösung usw. abgefragt werden können.

Juggler besitzt z.Z. etwa 30 Systemfunktionen. Diese Funktionen sind ebenfalls im Referenzteil dieser Hilfe  aufgeführt und werden dort ausführlich erläutert.


Bildschirmfenster

Einer der wichtigsten Aspekte in der Programmierung von Juggler-Programmen ist die Gestaltung der Bildschirmfenster. Alle Ausgaben, ob Text, Grafik oder Animation erfolgen in Fenstern auf dem Bildschirm. Zur Programmierung von Bildschirmfenstern stehen die folgenden 20 Befehle zur Verfügung:

FENDEF	Fähigkeiten einstellen

FENGRUND	Hintergrund einstellen

FENTITEL	Titel einstellen

FENVATER	Vaterfenster einstellen

FENMODUS	Modus einstellen

FENAUF	Fenster eröffnen

FENPOS	Position verändern

FENDIM	Fläche neu dimensionieren

FENDIMINNEN	Innenfläche neu dimensionieren

FENLEER	Aufzeichnungen löschen

FENLOESCHE	Inhalt löschen

FENMAXIMAL	Fenster maximieren

FENMINIMAL	Fenster minimieren

FENNORMAL	Fenster normalisieren

FENAKTIV	Aktives Fenster einstellen

FENOBEN	Fenster nach oben bringen

FENSTATUS	Fensterparameter abfragen

FENZEICHNEN	Fensterinhalte neu zeichnen

FENZEIGER	Mauszeiger im Fenster verändern

FENZU	Fenster schließen

Jedes Fenster wird dabei durch eine sogenannte ID-Nummer identifiziert, die jedem Fensterbefehl als erster Parameter übergeben wird. Durch die Angabe der ID-Nummer weiß das Autorensystem, auf welches Fenster der Befehl angewendet werden soll.

Applikationsfenster

Dem Fenster mit der ID-Nummer 1 kommt dabei eine besondere Rolle zu. Dieses Fenster ist das sogenannte Applikationsfenster, das immer vor allen anderen Fenstern eröffnet werden muß. Die erste Aktion eines Lernprogramms wird es immer sein, das Fenster mit der ID-Nummer 1 zu eröffnen. Erst dann können Ausgaben gemacht und Fenster mit anderen ID-Nummern eröffnet werden. Wird das Applikationsfenster vom Benutzer geschlossen, dann wird das Lernprogramm automatisch beendet. Des weiteren liegen alle nachfolgend eröffneten Fenster immer vor dem Applikationsfenster.

Fenstertypen

Es gibt insgesamt vier verschiedene Fenstertypen, die durch den Befehl FENAUF eröffnet werden können. Um welchen Typ es sich bei einem Fenster handelt, wird durch den letzten Parameter von FENAUF festgelegt. Dieser Parameter kann Werte von 0 bis 3 annehmen. Die Werte haben die folgende Bedeutung:

0  -  Fenster ohne Rahmen

1  -  Fenster mit Rahmen

2  -  Standardfenster

3  -  Dialogfenster

Fenster vom Typ 0 sind einfache Flächen auf dem Bildschirm ohne Rahmen. Beim Eröffnen werden sie als Kindfenster in das aktuelle Fenster eingetragen. Fenster vom Typ 1 entsprechen den Fenstern vom Typ 0. Sie sind lediglich noch von einem einfachen Strichrahmen umgeben. Diese beiden Fenstertypen werden relativ zu ihrem Vaterfenster positioniert (aktuelles Fenster, bzw. Einstellung durch den Befehl FENVATER).

Das normale Arbeitsfenster ist das Fenster vom Typ 2. Es besitzt ein Fenstermenü in der linken oberen Ecke, sowie eine Titelleiste. Es kann verschoben, in der Größe verändert, sowie minimiert und maximiert werden. Welche dieser Möglichkeiten für das Fenster erwünscht sind, kann durch den Befehl FENDEF eingestellt werden.

Fenster vom Typ 3 nennt man Dialogfenster. Umfangreiche Textabfragen durch Eingabefelder und Schalter sollten immer in Dialogfenstern vorgenommen werden. Diese Fenster liefern keine Tastaturereignisse an das Lernprogramm zurück, da alle Tastendrücke durch das Fenster selbst zur Steuerung der Eingaben (Tab, Shift-Tab z.B. zum Hin- und Herspringen zwischen Kontrollelementen) verwendet werden. In den Möglichkeiten entspricht das Dialogfenster ansonsten dem Standardfenster.

Standardfenster und Dialogfenster werden immer relativ zum gesamten Bildschirm positioniert.

Vaterfenster

Jedes Fenster (außer dem Applikationsfenster) bekommt bei der Eröffnung ein sogenanntes Vaterfenster zugeteilt. Ein Fenster muß immer vor seinem Vaterfenster liegen. Für Fenster vom Typ 0 und 1 ist das standardmäßig das gerade aktive Fenster. Für Fenster vom Typ 2 und 3 ist es standardmäßig das Applikationsfenster (ID = 1). Diese Zuordnung läßt sich durch den Befehl FENVATER verändern.

Bitte beachten

Bei der Programmierung von Fenstern gibt es verschiedene Aspekte, die beachtet werden sollten.

Aufzeichnung von Ausgaben

Alle Ausgaben (Text, Grafik) die in ein Fenster gemacht werden, werden vom Autorensystem aufgezeichnet. Wird ein Neuzeichnen des Fensters erforderlich (verschieben, Größe verändern etc.) gibt das Autorensystem die aufgezeichneten Ausgaben erneut in dem Fenster aus. Der Vorteil dieser Methode ist, daß für die Speicherung der Fensterinhalte nur wenig Speicher benötigt wird. Der Nachteil ist, daß die Ausgabe von sehr vielen Grafikbefehlen einiges an Zeit benötigt.

Ein Beispiel: Sie geben in einem Fenster in einer Schleife 500 zufällig erzeugte Kreise aus. Bei jedem Neuzeichnen des Fensters werden diese 500 Kreise erneut ausgegeben, was zu unschönen Verzögerungen führt. Solche Situationen sollten in einem Lernprogramm unbedingt vermieden werden.

Blättern in einem Fensterabschnitt

Sie geben in einem bestimmten Bereich eines Fensters Text aus, in dem ein Benutzer blättern kann. Wenn der Benutzer neuen Text anfordert, wird der alte Text durch einen RECHTECK-Befehl gelöscht und neuer Text wird ausgegeben. Das Problem hierbei ist, daß alle Textausgaben, sowie das Zeichnen von Rechtecken zum Löschen des Textes, aufgezeichnet werden. Bei einem Neuzeichnen des Fensters werden alle bisher angezeigten Ausgaben (Text, Rechteck) erneut ausgegeben. Der Benutzer bekommt also alle seine Texte noch einmal zu sehen, die in dem betreffenden Fensterbereich schnell durchgeblättert werden. Eine derartige Situation sollte ebenfalls vermieden werden.

Die richtige Vorgehensweise wäre die folgende: Eröffnen Sie an der Stelle, an welcher der Text durchgeblättert werden soll, ein Kindfenster vom Typ 0 oder 1. In dieses Fenster wird der Text ausgegeben. Beim Blättern wird das Fenster mit dem Befehl FENLOESCHE gelöscht, wobei auch alle gemachten Aufzeichnungen gelöscht werden.

Schließen von Fenstern durch den Benutzer

Sie können Standard- und Dialogfenster so einstellen, daß sie vom Benutzer durch das Fenstermenü (Menüpunkt 'Schließen') geschlossen werden können. Beim Schließen eines Fensters durch das Systemmenü wird ein Ereignis vom Typ 11 (Fenster durch Benutzer geschlossen) zurückgegeben. Dieses Ereignis muß unbedingt ausgewertet und demensprechend reagiert werden. Es könnte sonst passieren, daß Sie ein Fenster eröffnen, auf eine Eingabe (EREIGNIS, WARTE) warten, um anschließend Ausgaben in das Fenster zu machen. Es besteht jetzt natürlich die Möglichkeit, daß der Benutzer das Fenster geschlossen hat, so daß beim Versuch einer Ausgabe in das nicht mehr existierende Fenster ein Laufzeitfehler auftritt.

Sie sollten die Fenster also entweder so einstellen, daß sie vom Benutzer nicht geschlossen werden können. Das Fenster darf nur vom Lernprogramm durch den Befehl FENZU geschlossen werden. Alternativ müssen Sie nach dem Abfragen eines Ereignisses immer abfragen, ob das Fenster geschlossen wurde, um dementsprechend zu reagieren.

Beispiel

In diesem Beispiel wird zuerst das Applikationsfenster eröffnet. Danach werden zwei 3D-Rahmen gezeichnet und ein OK-Schalter plaziert. In die 3D-Rahmen hinein werden dann zwei Kindfenster vom Typ 0 eröffnet. In diese Kindfenster werden Bitmap-Grafiken geladen. Jedes Kindfenster erhält des weiteren vertikale und horizontale Rollbalken, mit denen die Grafiken innerhalb der Fenster hin- und herbewegt werden können.

FenTitel 1 "Das ist das Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 10 20 300 350 2

Rahmen 320 20 300 350 2

Schalter 4 280 400 "OK"

FenAuf 2 10 20 300 350 0

GrfLaden 0 0 1 "earth.bmp"

xRollBalken 340 10

yRollBalken 130 10

FenAuf 3 320 20 300 350 0

GrfLaden 0 0 1 "sunset.bmp"

xRollBalken 340 10

yRollBalken 130 10

filter$ = "w1e2e11"

Warte


Ereignisverarbeitung

Ein weiterer sehr wichtiger Punkt bei der Programmierung von Juggler-Programmen ist die Verarbeitung von Ereignissen. Ein Ereignis kann z.B. ein Tastendruck oder ein Mausklick sein. Insgesamt gibt es 11 verschiedene Ereignisarten, die in der Beschreibung des Befehls EREIGNIS und der Systemfunktion &TYPE dokumentiert sind.

Die normale Vorgehensweise bei der Gestaltung eines Bildschirmfensters ist die folgende:

1.  Eröffnen des Fensters.

2.  Ausgabe von Text und Grafik in das Fenster.

3.  Plazieren der Kontrollelemente (Schalter, Listen, Symbole, Hypertext) in das Fenster.

4.  Warten auf ein Ereignis mittels der Befehle EREIGNIS oder WARTE.

5.  Auswerten des Ereignisses in einer ANALYSE-Konstruktion.

Dem Befehl EREIGNIS werden als Parameter drei numerische Variablen übergeben, in denen die wichtigtsten Daten über das Ereignis abgelegt werden. Der Befehl WARTE hat keine Parameter. Es können aber auch nach einem WARTE durch die Systemfunktionen &FENID, &TYPE, &SCANCODE alle Daten über das zuletzt aufgetretene Ereignis abgefragt werden.

Es sind insgesamt 3 Werte nötig, um ein Ereignis komplett auswerten zu können:

1.  ID-Nummer des Fensters, welches das Ereignis ausgelöst hat.

2.  Typ des Ereignisses (z.Z. sind 11 verschiedene Ereignistypen möglich).

3.  Scancode einer gedrückten Taste oder die spezifische ID-Nummer eines

      Schalters, Menü- oder Listeneintrags, der angeklickt wurde.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

hAttrib "+u"

"{+t}Dies hier ist eine Demonstration der @100[Ereignisverarbeitung]."

Schalter 101 100 200 "Schalter-1"

Schalter 102 100 230 "Schalter-2"

Schalter 103 100 260 "Schalter-3"

FenAuf 2 300 200 300 120 1  ! Fenster für die Ausgaben

.L1

dauer   = 20

timeout = 104

Ereignis fenid type scancode

FenLoesche 2

FenAktiv 2

Cursor 2 2

"Fenster-ID = ";   Tab 20  ""fenid

"Ereignistyp = ";  Tab 20  ""type

"Scancode = ";     Tab 20  ""scancode

""

Analyse type

  :=0:  "Taste gedrückt"

  :=1:  "Maustaste gedrückt"

  :=2:  "Schalter wurde bedient"

  :=4:  "Hypertextfeld wurde angeklickt"

  :=10: "Timeout wurde ausgelöst"

Aend

GeheZu L1


Textausgabe

Um Texte in ein Bildschirmfenster auszugeben, schließt man den Text einfach in Anführungszeichen ein. Vor das Anführungszeichen kann auch noch das Befehlswort TEXT gesetzt werden. Das ist aber nicht zwingend erforderlich.

FenAuf 1 0 0 &breite &hoehe 2

"Dies ist eine Textausgabe."

Text "So gehts auch."

Warte

Vor der Ausgabe eines Textes müssen noch Schriftart, Schriftgröße, relativer Zeilenabstand, sowie die Textattribute festgelegt werden. Dazu dienen die Befehl TXDEF und TXATTRIB, mit denen das Aussehen der Schrift, sowie deren Attribute festgelegt werden. Die Vorder- und Hintergrundfarbe des Textes werden durch die Befehle FARBE und GRUND definiert.

Das Autorensystem verwaltet intern die Position, ab welcher der nächste Text ausgegeben wird. Die Position kann mit den Befehlen CURSOR (zeichengenau) und GRCURSOR (pixelgenau) eingestellt werden. Mit den Befehlen TAB und GRTAB kann die Spaltenposition der nächsten Ausgabe innerhalb der aktuell eingestellten Zeile bestimmt werden.

Nach der Ausgabe eines Textes wird ein automatischer Zeilenumbruch erzeugt, d.h. die nächste Ausgabe erfolgt in der nächsten Zeile. Um das zu unterdrücken, kann der Textausgabe ein Semikolon angehängt werden. In dem Fall wird der nächste Text unmittelbar hinter dem vorigen Text ausgegeben.

Variableninhalte können ausgegeben werden, indem der Name der Variablen unmittelbar an das schließende Anführungszeichen angehängt wird.

FenAuf 1 0 0 &breite &hoehe 2

a = 234.75

b = 19.18

Cursor 5 5

"Das ist die erste Zeile."

"Das ist die zweite Zeile."

"Das ist die dritte Zeile.";

"Immer noch die dritte Zeile."

"A = "a

"B = "b

Warte

Textattribute können auch innerhalb einer Ausgabeanweisung gesetzt werden. Die Attribute werden dazu in geschweifte Klammern gesetzt.

FenAuf 1 0 0 &breite &hoehe 2

"Dieser Text wird {+u}unterstrichen{-u} dargestellt.

Die {f2}Farbe{f0} läßt sich auch verändern."

Warte

Reihenfolge der Schriften

Dem Befehl TXDEF wird als erster Parameter die ID-Nummer einer Schrift mitgegeben.

Die Reihenfolge der Schriften (0 - n)  wird im Menü Optionen, Menüpunkt Schriften definieren,                     Schalter Einstellen definiert. In diesem Programmteil wird eine Liste der Schriften festgelegt, die vom Autorensystem verwendet werden sollen. Die ID-Nummer, die TXDEF übergeben wird, bezieht sich auf die Reihenfolge dieser Liste. Ist keine derartige Liste definiert, werden die Schriften verwendet, wie  sie im jeweiligen System definiert sind. Allerdings kann diese Reihenfolge von Rechner zu Rechner differieren.

Wurde eine Liste festgelegt, dann wird diese Liste beim Verlassen des Autorensystems in einer Datei namens 'juggler.fnt' abgespeichert. Diese Datei muß mit jedem Lernprogramm ausgeliefert werden, das Textausgaben macht, da sonst die korrekte Zuordnung der Schriften nicht mehr gewährleistet ist.

Durch Umänderung dieser Liste können auf einfache Weise in einem Lernprogramm Schriften verändert werden.


Hypertext

Eine für Lernprogramme wichtige Eigenschaft ist es, innerhalb von Erklärungen bestimmte Stichworte hervorzuheben, zu denen ein Lernprogrammanwender bei Bedarf zusätzliche Informationen abrufen kann. Deshalb sollte ein Autorensystem die Möglichkeit bieten, in den Anweisungen zur Ausgabe von Text ("..........", TEXT), bestimmte Worte und Begriffe zu markieren, die später bei der Anzeige im Programm farblich hervorgehoben werden. Wenn derart hervorgehobene Stichworte mit der Maus angeklickt werden, sollten genauere Erläuterungen zu diesen Stichworten erscheinen. Diese Technik nennt man Hypertext. Hypertext stellt eine Verknüpfung von Textteilen mit anderen Textteilen her.

Auch das Autorensystem Juggler bietet dem Lernprogrammentwickler die Möglichkeit Hypertext zu definieren.

Implementiert wird diese Technik durch die folgenden Befehle:

".........."

TEXT

EREIGNIS

WARTE

HGRUND

HFARBE

HATTRIB

HZEIGER

HLOESCHE

STICHW$

Innerhalb einer Schreibenanweisung oder einer TEXT-Anweisung kann ein Textteil von maximal 40 Zeichen Länge als Hypertextfeld markiert werden. Dies geschieht durch das Zeichen Klammeraffe ('@'). Dieses Zeichen leitet die Definition eines Hypertextfeldes ein. Dem Klammeraffen folgt eine Zahl, die das Hypertextfeld definiert und die später bei Anklicken dieses Feldes durch den Befehl EREIGNIS als Scancode zurückgegeben wird. Diese Zahl muß eindeutig sein. Nach der Zahl folgt der in eckige Klammern eingeschlossene Text des Hypertextfeldes. Dieser Text wird bei der Ausgabe in der durch die Befehle HFARBE und HGRUND definierten Farbe angezeigt.

Hypertextfelder werden durch die Befehl EREIGNIS und WARTE kontrolliert. Wenn diese Befehle auf eine Eingabe warten und ein Hypertextfeld wird angeklickt, dann wird der numerische Wert, der dem Feld zugeordnet wurde, als Ereignis vom Typ 4 zurückgegeben. Gleichzeitig wird der Text des Hypertextfeldes in der Systemvariablen STICHW$ abgelegt.

Die Definitionen von Hypertextfeldern werden durch das Löschen oder Schließen des aktuellen Fensters oder durch den Befehl HLOESCHE deaktviert.

Wird der Mauszeiger über ein Hypertextfeld bewegt, dann verändert sich der Mauszeiger, um anzuzeigen, daß sich an dieser Stelle ein Hypertextfeld befindet. Mit dem Befehl HZEIGER kann eingestellt werden, welche Form der Mauszeiger annehmen soll, wenn er über das Hyptertextfeld bewegt wird.

In dem folgenden Beispiel werden bei der Ausgabe von Text zwei Hypertextfelder definiert, die durch den Befehl EREIGNIS kontrolliert werden:

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Hfarbe 1

Hattrib "w2+u"

Cursor 5 5

"{+t}Das menschliche @10[Herz] ist eines der wichtigsten mensch-

lichen Organe. Es sitzt im oberen Teil des @11[Thorax]."

.L1

filter$ = "w1e4e11"

Ereignis wnd type scc

Cursor 5 12  "{-t}                                                                {+t}"

Cursor 5 12  "Typ = "type;  "    Scc = "scc;  "    Stichwort = "stichw$

Analyse s

  :=10:  ! Irgendwas zum Herz erläutern.

  :=11:  ! Irgendwas zum Thorax erläutern.

Aend

GeheZu L1


Grafik

In den letzten Jahren wurden die Grafikmöglichkeiten von Computern stark verbessert. Spätestens seit der Einführung der VGA-Karte ist auch auf Personalcomputern die Programmierung hochauflösender Farbgrafik möglich geworden.

Moderne Lernprogramme arbeiten meistens im Grafikmodus des Computers. Der Lernerfolg ist sehr viel größer, wenn man dem Lernprogrammanwender aussagekräftige Diagramme und Bilder vorführt.

Juggler stellt umfangreiche Möglichkeiten zur Programmierung von Grafik zur Verfügung. Die Grafikbefehle des Autorensystems lassen sich dabei den folgenden Funktionsgruppen zuordnen:

-  Grafikprimitiven (Punkt, Linie, Kreis zeichnen etc.)

-  High-Level-Grafikfunktionen zum Zeichnen von Koordinatensystemen und Diagrammen.

-  Befehle zur Einbindung externer Grafiken, die mit Zeichenprogrammen erstellt wurden.

Diese unterschiedlichen Funktionsgruppen werden im folgenden nacheinander erläutert.

Grafikprimitiven

Diese Befehlsgruppe stellt elementare Grundfunktionen für die Grafikprogrammierung zur Verfügung. Dazu gehören:

STIFT

MUSTER

PUNKT

LINIE

POLYGON

NETZ

KREIS

ELLIPSE

BOGEN

RECHTECK

BOX

Mit den Befehlen STIFT und MUSTER werden das Aussehen der Umrandung und des Füllmusters einer grafischen Figur festgelegt.

Die Zeichenoperationen erfolgen immer im gerade aktiven Bildschirmfenster (um in ein anderes Fenster zu zeichnen, kann das Ausgabefenster mit dem Befehl FENAKTIV umgeschaltet werden).

High-Level-Grafikfunktionen

Diese Befehle ermöglichen es, komplette Koordinatensysteme und Diagramme (Balken-, Kuchen-, Liniendiagramm) mit wenig Aufwand auf den Bildschirm zu bringen.

Folgende Befehle stehen zur Verfügung:

KSDEF

XKSYS

YKSYS

BALKEN

KUCHEN

DIAGRAMM

Bevor ein Diagramm mit den Befehlen BALKEN, KUCHEN oder DIAGRAMM ausgegeben werden kann, muß zuvor mit den Befehlen KSDEF, XKSYS und YKSYS ein Koordinatensystem gezeichnet werden.

Befehle zur Einbindung externer Grafiken

Sehr wichtig ist es, daß die Möglichkeit besteht, in ein Lernprogramm Grafiken einbinden zu können, die zuvor mit einem Zeichenprogramm erstellt wurden. Es gibt eine enorme Vielfalt von Dateiformaten, in denen sogenannte Bitmap- oder Vektorgrafiken abgelegt werden können. Juggler für Windows unterstützt in der aktuellen Version die folgenden Formate: BMP, TIF, PCX, GIF

Die Ladegeschwindigkeiten für die unterschiedlichen Grafikformate sind sehr unterschiedlich. Generell gilt, daß ungepackte Formate (BMP, ungepacktes TIF) schneller geladen werden können, als gepackte. Bei Lernprogrammen bei denen es auf darauf ankommt, daß die Grafiken schnell geladen werden, sollte wenn möglich, das BMP-Format verwendet werden.

In der folgenden Liste werden die verschiedenen Grafikformate nach der Geschwindigkeit aufgelistet, mit der sie geladen werden können (die schnellsten zuerst, die langsamsten zuletzt).

BMP

TIF (ungepackt)

TIF (gepackt)

PCX

GIF

Grafiken vom Typ BMP können des weiteren in sogenannten Grafikbibliotheken zusammengefaßt werden. Dabei handelt es sich um eine einzige sehr große Datei, in der mehrere Dutzend oder auch mehrere Hundert von Grafiken zusammengefaßt werden können. Eine derartige Bibliothek ist leichter zu handhaben als Hunderte von Einzelgrafiken. Außerdem können Grafiken, die in einer derartigen Bibliothek abgelegt sind, nicht von Dritten verändert werden.

Zur Verabeitung von externen Grafiken stehen die folgenden Befehle zur Verfügung:

GRFLADEN

GRFINFO

GRFGROESSE

GRFPALETTE

BILDLADEN

BILDHOLEN

BILDKOPIE

BILDGROESSE

BILDFREI


Virtuelle_Fenster
Virtuelle Fenster

Das Autorensystem bietet die Möglichkeit ein sogenanntes virtuelles Fenster zu eröffnen. Dabei handelt es sich um ein 'unsichtbares' Fenster, das im Arbeitsspeicher des Computers gehalten wird. Dieses virtuelle Fenster nimmt Text- und Grafikausgaben genauso auf wie ein normales Bildschirmfenster, mit dem Unterschied, das die Ausgaben nicht zu sehen sind.

Die Inhalte eines virtuellen Fensters können mit dem Befehl VIRTKOPIE in Verbindung mit Überblendeffekten in ein Bildschirmfenster kopiert werden.

Diese Technik dient hauptsächlich dazu, grafische Objekte im Arbeitsspeicher des Computers vorzubereiten, um sie dann unter Zuhilfenahme eines Überblendeffekts in einem Fenster darzustellen.

Das Autorensystem stellt die folgenden Befehle für das Eröffnen und Bearbeiten von virtuellen Fenstern zur Verfügung:

VIRTPARAM

VIRTAUF

VIRTKOPIE

VIRTLOESCHE

VIRTZU

Beispiel

Angenommen, Sie wollen für ihr Lernprogramm eine Bildüberschrift mit einem Zoom-Effekt erzeugen. In dem Fall eröffnen Sie ein virtuelles Fenster, stellen die gewünschte Schrift ein, geben den Text aus und kopieren das Ganze dann mit dem gewünschten Effekt in das Zielfenster.

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

VirtAuf 420 120

Stift 0 1 0

Muster 1 15 15 0

Box 0 0 420 120 0 0

Grund 15  Farbe 1

Txdef 4 50 0 0

Txattrib "w1-c-u-k-o+s+t"

"Juggler für Windows

  das Autorensystem"

VirtKopie 1 100 100 10

VirtZu

Warte


Drucken

Bei der Entwicklung von Lernprogrammen tritt oft die Anforderung auf, dem Anwender eine Zusammenfassung des Lernstoffs in schriftlicher Form zur Verfügung zu stellen. Da die meisten Computersysteme mit einem Drucker ausgestattet sind, ist dies auch kein Problem.

Das Autorensystem Juggler bietet sehr leistungsfähige Befehle zur Ausgabe von Text und Grafik auf Druckern. Generell gilt, daß alles, was in einem Bildschirmfenster dargestellt werden kann, auch auf einen Drucker ausgegeben werden kann. Das gilt auch für Bitmap-Grafiken, die mit dem Befehl GRFLADEN eingelesen werden. Bitmap-Grafiken können für die Ausgabe auf einen Drucker mit dem Befehl GRFGROESSE auf die gewünschte Größe skaliert werden. Es ist sogar dringend anzuraten, Bitmaps auf eine feste Größe zu skalieren, da Bitmaps ansonsten abhängig von der Druckerauflösung (i.d.R. zwischen 180 und 600 dpi) in der Ausgabegröße stark variieren können.

Die Ausgabe von Text und Grafik auf einen Drucker funktioniert genauso wie die Ausgabe in ein Bildschirmfenster. Der Drucker muß lediglich zuvor mit dem Befehl DRKAUF eröffnet werden. Danach werden alle Ausgaben an den Drucker geschickt. Die Syntax der Befehle bleibt gleich. Es ist darauf zu achten, daß die Koordinatenangaben bei einer Ausgabe auf einen Drucker nicht als Punktkoordinaten sondern in zehntel Millimeter interpretiert werden. Der Befehl 'Kreis 1000 1000 500' z.B. zeichnet einen Kreis mit einem Radius von 5 cm an einen Punkt, der 10 cm vom oberen und 10 cm vom linken Papierrand entfernt ist.

Diese auflösungsunabhängige Interpretation der Koordinaten ist erforderlich, da das Auflösungsvermögen von Druckern sehr stark voneinander abweichen kann. Ein Drucker mit 600 dpi (dots per inch) hat eine viermal höhere Auflösung als ein Drucker der nur 300 dpi leistet.

Während der Ausgabe auf einen Drucker sind Ausgaben in Bildschirmfenster nicht möglich. Ebensowenig kann während der Druckausgabe ein Fenster geöffnet, geschlossen oder aktiviert werden. Eine Ereignisverarbeitung mit den Befehlen EREIGNIS, WARTE oder MAXIMAL ist ebenfalls nicht möglich.

Um während der Entwicklung Papier zu sparen, wurde eine Druckvorschau-Funktion implementiert. Wenn ein Drucker mit dem Befehl DRKVORSCHAU statt mit DRKAUF eröffnet wird, dann wird eine Druckseite maßstabsgerecht in einer Dialogbox nachgebildet.

Folgende Befehle stehen zur Programmierung von Druckern zur Verfügung:

DRKAUF

DRKVORSCHAU

DRKSTART

DRKZU

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DrkAuf

Txdef 4 40 0 0

Cursor 4 2

"{+t}Wir freuen uns, daß Sie sich entschieden haben, mit dem Autorensystem Juggler für Windows zu arbeiten.

Juggler ist eine {+u}moderne und bedienungsfreundliche Autorensprache{-u}, die es Ihnen erlaubt, die

Möglichkeiten Ihres Computers zur Erstellung von Lern- und Präsentationsprogrammen voll auszunutzen.

Ob Sie ein interaktives {+c}Lernprogramm{-c} erstellen oder eine umfangreiche {+c}Datenbank-Applikation{-c} mit einer

ansprechenden Oberfläche versehen wollen, Juggler ist Ihr leistungsfähiges Werkzeug dazu.Im folgenden

sind die Leistungen dieses Systems kurz aufgelistet

Das Besondere an Juggler für Windows ist, das es systemunabhängig programmiert wurde. Es kann

deshalb mit sehr geringem Aufwand auf die folgenden Systemplattformen portiert werden:

        {w2}Windows 3.x

        Windows NT

        OS/2 2.x

        Motif

        OpenLook

        Macintosh{w1}

Mit Juggler ist deshalb eine {+c+u}plattformübergreifende Programmierung{-c-u} von Lern- und

Präsentationsprogrammen möglich."

GrfGroesse 1500 0  ! Die Grafik wird auf 15 cm Breite skaliert

GrfLaden &x1[4] 1000 0 "medica.bmp"

DrkZu


Animation

In vielen Fällen ist es wünschenswert, bewegte Bilder in ein Lernprogramm einzubinden, um Informationen noch anschaulicher darzustellen. Zwar bieten fast alle modernen grafischen Betriebssysteme die Möglichkeit digitales Video einzubinden, doch in vielen Fällen ist eine technisch derart aufwendige Lösung übertrieben.

Eine häufige Anforderung an ein Lernprogramm wird es z.B. sein, ein Bildobjekt von einem Punkt eines Fensters zu einem anderen Punkt laufen zu lassen.

Eine weitere Möglichkeit ist es, zwischen mehreren Bildern im Speicher schnell umzuschalten, um den Eindruck von Bewegung zu erzeugen.

Diese beiden Animationsformen sind die verbreitetsten im Computerbereich. Die erste Form nennt man Sprite-Animation Hier wird ein Objekt von einem Punkt zum anderen verschoben. Die zweite Möglichkeit wird Stapel-Animation genannt. Bei der Stapel-Animation werden Bilder in der Art eines Daumen-Kinos durchgeblättert.

Juggler stellt für die Programmierung von Animationen dieser beiden Typen die folgenden Befehle zur Verfügung:

OBJSTAPEL

OBJBEWEGEN

OBJSTOP

Die Animationsbefehle greifen dabei auf Grafiken zu, die zuvor mit den Befehlen BILDLADEN oder BILDHOLEN in den Arbeitsspeicher geladen wurden. Es kann also jede beliebige Grafik, die in den Formaten BMP, TIF, PCX und GIF vorliegt, in eine Animation eingebunden werden. Im Falle der Sprite-Animation werden die Grafiken mit dem Hintergrund mittels des sogennannten Colour-Keying verknüpft, d.h. an allen Punkten der Grafik, die in der Farbe Schwarz gezeichnet sind, scheint die Hintergrundgrafik hindurch.

Die Animationen laufen parallel zum normalen Programmablauf ab. Sie werden entweder durch das Schließen des Fensters, in dem die Animationen ablaufen, oder durch den Befehl OBJSTOP beendet.

Es ist möglich, Animationen und digitales Video gleichzeitig ablaufen zu lassen. Das funktioniert aber nur dann vernünftig, wenn das Video durch eine Zusatzkarte im Rechner abgespielt wird. Das gleichzeitige Abspielen von Animationen und Video per Software überfordert den Prozessor des Computers.


Multimedia

Bei der Entwicklung moderner Computer- und Betriebssysteme spielt das Schlagwort Multimedia eine immer größere Rolle. Bei Multimedia handelt es sich um die Integration verschiedener Medien wie dem geschriebenen Wort, Bild, Ton und Bewegtbild.

Immer mehr Lernprogramme nutzen die multimedialen Möglichkeiten, die die Computer von heute anbieten. Durch die Integration von Echtfarbildern und Videosequenzen in ein Programm läßt sich ein sehr hoher Lernerfolg erzielen.

Allerdings ist gerade in den letzten Jahren eine geradezu unübersehbare Vielfalt an Hard- und Softwarelösungen für die Ansteuerung von Video und Ton auf den Markt gekommen. Die bekannteste Lösung ist hier sicherlich das Media-Control-Interface (MCI) der Firma Microsoft, besser bekannt unter dem Namen 'Video für Windows'.

Das Autorensystem Juggler hat eine universelle Schnittstelle für die Ansteuerung von multimedialen Computerkomponenten, die es erlaubt unterschiedliche Video/Audio-Komponenten in ein Lernprogramm zu integrieren.

Hierzu wurden die folgenden Befehle, Systemvariablen und Systemfunktionen implementiert:

Systemvariablen

VIDEO$

AUDIO$

Befehle

VIDEO

AUDIO

Systemfunktionen

&VIDSTATUS

&AUDSTATUS

&VIDERGEBNIS$

&AUDERGEBNIS$

Es wurden für die beiden wesentlichen Bereiche Video und Audio getrennte Befehle implementiert, die aber gleiche Funktionalität besitzen. Dies dient in erster Linie der Verständlichkeit der Programmierung. Soundkarten werden über den Befehl AUDIO, Video-Karten über den Befehl VIDEO gesteuert. Im folgenden wird nur auf die Video-Befehle eingegangen. Das Gesagte gilt aber ebenso für die Audio-Befehle.

Der Systemvariablen VIDEO$ wird der Name der anzusteuerndern Multimedia-Treiber übergeben (z.B. MCI). Standardmäßig enthält diese Systemvariablen den Wert 'MCI'.

Danach können über den Befehl VIDEO Steuerkommandos an diese Treiber übergeben werden. Wie diese Kommandos aufgebaut sind, hängt von den jeweiligen Treibern ab und muß deren Handbüchern entnommen werden. Wird z.B. das Media-Control-Interface angesteuert, dann handelt es sich um die bekannten MCI-Befehle.

Nach Übermittlung der Steuerkommandos an die Multimedia-Treiber kann mittels der Systemfunktion &VIDSTATUS der Rückgabe/Fehlerstatus der Treiber ermittelt werden. Wie dieser Status zu interpretieren ist, muß wiederum der Dokumentation der Treiber entnommen werden.

Gibt ein bestimmtes Steuerkommando über den normalen Status hinaus noch Rückgabewerte aus, so können diese Rückgabewerte mittels der Systemfunktion &VIDERGEBNIS ermittelt werden.

Beim momentanen Entwicklungsstand des Autorensystems wird nur das Media-Control-Interfache unterstützt. Für spätere Versionen sind erweiterte Ansteuerungen speziell für DVI-Karten geplant.


Lexikon_Programmierung
Lexikon

Das Autorensystem Juggler bietet dem Lernprogramm-Entwickler die Möglichkeit, sogenannte Lexika in ein Lernprogramm einzubinden. Ein Lexikon wird in einem Dialogfenster aufgeblendet, das in zwei Bereiche unterteilt ist. Im linken Teil des Fensters befindet sich eine Indexliste mit Schlagwörtern zu denen Erklärungen vorhanden sind. Im rechten Teil befindet sich ein Textfenster, in dem die Erklärungen dargestellt werden. Durch Anklicken des gewünschten Indexbegriffes in der Indexliste werden die Erklärungen zu diesem Begriff in dem Textfenster angezeigt.

Die Inhalte eines Lexikons müssen zuvor in einer Textdatei erfaßt werden, die beliebig groß werden kann. Diese Textdatei wird dann mittels des sogenannten Lexikon-Compilers (ein beiliegendes Programm namens 'lex.exe') in ein Lexikon umgewandelt. Es handelt sich hierbei wieder um eine Datei.

Dateiaufbau eines Lexikons

  .INDEX [breite]	!  Einleitung des Index, der Parameter BREITE ist optional.

  Indextext    |  1	!  Indexzeile-1, der numerische Wert hinter dem Hochstrich gibt

  Indextext    |  2	!  den Textblock an, der dem Indexbegriff zugeordnet ist.

        .

        .

  Indextext    |  n

  .END	!  Ende des Index

  .1	!  Textblock, der der Indexzeile mit dem Verweis 1 zugeordnet ist

      Text

      Text

      Text

  .END	!  Ende des Textblocks

  .2	!  Textblock, der der Indexzeile mit dem Verweis 2 zugeordnet ist

      Text

      Text

  .END	!  Ende des Textblocks

Zwischen den Textblöcken, sowie vor und nach dem Index kann beliebiger Kommentartext stehen.

Textattribute

Innerhalb eines Textblocks können die Attribute des Textes verändert werden. Die Syntax ist dabei die gleiche, die für das Umsetzen der Textattribute in einer Textausgabe des Autorensystems verwendet wird. Attributanweisungen werden innerhalb des Textes in geschweifte Klammern eingeschlossen. Folgende Befehlskürzel sind innerhalb der Klammern erlaubt:

     w0  -  Strichstärke leicht

     w1  -  Strichstärke normal

     w2  -  Strichstärke fett

    +c  -  kursive Darstellung einschalten

     -c  -  kursive Darstellung abschalten

    +u  -  Unterstreichung einschalten

     -u  -  Unterstreichung abschalten

    +o  -  Umrandung einschalten

     -o  -  Umrandung abschalten

    +k  -  Durchstreichung einschalten

     -k  -  Durchstreichung abschalten

    +s  -  Schattenwurf einschalten

     -s  -  Schattenwurf abschalten

     +t  -  Transparenz einschalten

      -t  -  Transparenz abschalten

      fx  -  Vordergrundfarbe x einstellen

     gx  -  Hintergrundfarbe x einstellen

Hypertext

Innerhalb eines Textblocks können des weiteren sogenannte Hypertextfelder definiert werden. Dabei handelt es sich um farblich (oder durch ein anderes Attribut) hervorgehobene Stichworte, zu denen genauere Erklärungen abgerufen werden können. Eingeleitet wird die Definition eines Hypertextfeldes durch das Zeichen Klammeraffe ('@'). Diesem Zeichen folgt ein numerischer Wert, der die Nummer des Textblockes darstellt, der aufgerufen werden soll, wenn das Hypertextfeld mit der Maus angeklickt wird. Danach folgt in eckige Klammern eingeschlossen der Text des Hypertextfeldes. Wollen Sie in einem Text das Zeichen Klammeraffe ausgeben, dann schreiben Sie einfach zweimal das Zeichen hintereinander ("........@@........").

Für die Darstellung eines Hypertextfeldes (Farbe, Attribut, Mauszeiger) werden die Einstellungen verwendet, die mit den Befehlen HGRUND , HFARBE , HATTRIB und HZEIGER vorgenommen wurden.

Tabulatoren

Durch das Zeichen Hochdach ('^') kann ein Tabulator in einen Text eingesetzt werden. Der Tabulator bewirkt, daß die Spaltenposition (in Pixeln gerechnet) auf das nächste Vielfache von 50 gesetzt wird. Wenn der Textcursor also auf Spalte 87 steht, dann wird der Cursor durch das Zeichen Hochdach auf die Spalte 100 gesetzt. Die Ausgabe des Zeichens Hochdach kann durch einen vorangestellten Klammeraffen ('@^') erreicht werden.

Beispiel

Im Lieferumfang des Autorensystems ist ein Beispiel-Lexikon enthalten. Den Quelltext des Lexikons finden Sie in der Datei 'demo.asc'. Das lauffähige Lexikon ist in der Datei 'demo.lex' abgelegt.

Um sich einen Eindruck vom Aufbau eines Lexikons zu machen, sehen Sie sich am besten einfach die Datei 'demo.asc' mit einem beliebigen Editor an.

Compilierung eines Lexikons

Nach der Erstellung des Lexikons als Textdatei mit einem beliebigen Editor muß mit dem Programm 'lex.exe' die eigentliche Lexikon-Datei erzeugt werden.

Das Programm benötigt dazu zwei Parameter: den Namen der Textdatei, in welcher der Lexikontext abgelegt ist, sowie den Namen des zu erzeugenden Lexikons.

Beispiel:  lex demo.asc demo.lex

Dieser Aufruf erzeugt aus dem Text in der Datei 'demo.asc' die Datei 'demo.lex'. Bei der Umwandlung wird eine Fehlerprüfung vorgenommen. Tritt ein Fehler auf, wird die Umwandlung der Datei abgebrochen und der Fehler wird angezeigt.

Nach erfolgreicher Umwandlung kann die Datei 'demo.lex' aus einem Lernprogramm heraus mit dem Befehl LEXIKON eingebunden werden.

Befehle zur Einbindung von Lexika

Zur Einbindung von Lexika stehen Ihnen die folgenden Befehle zur Verfügung:

LEXSCHRIFT

LEXTITEL

LEXIKON


Datenbank

In diesem Abschnitt wird erklärt, wie Sie auf Datenbanken, die Sie mit dem Datenbank-Werkzeug (dbtool.exe) angelegt und bearbeitet haben, aus einem Juggler-Lernprogramm zugreifen können.

Der Befehlsumfang des Autorensystems wurde zum Zugriff auf Datenbanken um die folgenden Befehle erweitert:

DBAUF

DBEND

DBZU

DBREORG

DBSUCHEN

DBFILTER

DBANFANG

DBVOWAERTS

DBZURUECK

DBSCHLUSS

SCSUCHEN

SCANFANG

SCVORWAERTS

SCZURUECK

SCSCHLUSS

DBLESEN

DBSCHREIBEN

DBERZEUGEN

DBLOESCHEN

DBADRESSE

DBSETZEN

DBANZAHL

&DBSTATUS

Beispiel

Mit dem folgenden Beispielprogramm werden alle Datensätze einer Adressdatenbank nach Namen alphabetisch sortiert in einer Liste angezeigt.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

"{+t}";

DbAuf 1 "d:\dbase\adressen"

    name1    name$      ! Datenbankfelder werden Juggler-

    strasse  strasse$   ! Variablen zugeordnet.

    plz      plz$

    ort      ort$

DbEnd

FenZeiger 1 2

ScAnfang 1 "name1"  ! Auf ersten Schlüsselbegriff gehen.

.L1

Wenn &dbstatus <> 0 Dann  ! Datenbankstatus abprüfen.

    DbZu 1

    FenZeiger 1 1

    yRollBalken 1000 10

    filter$ = "w1e11"

    Warte

    Ende

Wend

DbLesen 1  ! Datensatz einlesen.

Tab 2  ""name$;

Tab 40 "  "strasse$;

Tab 60 "  "plz$;

Tab 70 "  "ort$

ScVorwaerts 1 "name1"  ! Auf nächsten Schlüssel gehen.

GeheZu L1

Dem Befehl DBAUF folgen zwei Parameter. Bei dem ersten Parameter handelt es sich um eine ID-Nummer, über die in der Folge auf die Datenbank zugegriffen werden kann. Sie können bis zu 10 Datenbanken gleichzeitig eröffnen. Die ID-Nummer, welche bei der Eröffnung der Datenbank vergeben wird, identifiziert die jeweilige Datenbank. Die ID-Nummer muß in der Folge jedem Datenbankbefehl als Parameter mitgegeben werden.

Der zweite Parameter für DBAUF ist eine Stringkonstante, die den Namen der Datenbank enthält und zwar ohne Dateikennung.

Dem Befehl DBAUF folgen die Zuordnungen der Datenbankfelder zu Juggler-Variablen. Links steht der Name des Datenbankfeldes. Rechts steht die Variable, in welcher die Felddaten beim Lesen ei-

nes Datensatzes abgelegt werden sollen. Diese Zuordnungen werden durch den Befehl DBEND abgeschlossen. Es müssen nicht allen Datenbankfeldern Variablen zugeordnet werden. Falls nur ein Teil der Informationen in einem Datensatz benötigt werden, genügt es, nur den gewünschten Datenbankfeldern Variablen zuzuordnen. Die restlichen Felder werden in dem Fall ignoriert.

Feldern vom Typ C, M, L und D müssen Stringvariablen zugeordnet werden. Feldern vom Typ N müssen numerische Variablen zugeordnet werden.

Danach kann auf die Datenbank zugegriffen werden. Die Befehle zum sequentiellen Zugriff (DBANFANG, DBVORWAERTS usw.) und zum Zugriff auf Schlüssel (SCANANFANG, SCVORWAERTS usw.) positionieren nur den sogenannten Datenbankzeiger, der dann auf den aktuellen Datensatz zeigt. Erst mit dem Befehl DBLESEN wird der Datensatz eingelesen. Nach Aufruf dieses Befehls stehen die Werte des aktuellen Datensatzes in den zugeordneten Juggler-Variablen.

Das Schreiben und Erzeugen von Datensätzen funktioniert genauso. Um einen Datensatz neu zu erzeugen, weisen Sie einfach die Werte für den neuen Datensatz den zugeordneten Variablen zu und rufen danach den Befehl DBERZEUGEN auf. Dieser Befehl überträgt die Werte der Variablen in den Datensatz und legt diesen anschließend neu an. Wenn Sie einen bereits bestehenden Datensatz verändern wollen, positionieren Sie den Datenbankzeiger (mit DB... oder SC...) auf diesen Satz, lesen ihn ein, verändern die Werte der Variablen und rufen den Befehl DBSCHREIBEN auf.

Die Systemfunktion &DBSTATUS liefert den Status der jeweils letzten Datenbankoperation zurück. Der Wert 0 bedeutet, daß die Operation erfolgreich durchgeführt wurde. Ein Wert zwischen 0 und 100 bedeutet, daá die Operation nicht durchgeführt werden konnte. In dem Fall handelt es sich aber nicht um einen echten Fehler. Bei Aufruf des Befehls SCSUCHEN z.B. wird der Wert 1 zurückgegeben, wenn der Schlüsselbegriff, nach dem gesucht wurde, nicht gefunden wurde.

Rückgabewerte über 100 stellen einen schweren Datenbankfehler dar. Derartige Fehler bewirken einen Abbruch des Lernprogramms.


DLL_Programmierung
DLL-Programmierung

Die meisten modernen Programmiersprachen erlauben die Programmierung von sogenannten Dynamic-Link-Libraries (DLL). Bei diesen DLL's handelt es sich um Funktionsbibliotheken, die nicht während des Linkens einem Programm hinzugefügt werden, sondern erst zur Laufzeit eines Programms geladen werden.

Die Vorteile sind:

Mehrere Programme können sich eine DLL teilen. Es wird Arbeitsspeicher gespart.

Ein Programm kann modular aufgebaut werden und durch Austausch von Modulen (also DLL's) beliebig erweitert oder verbessert werden.

Durch die Einbindung von DLL's von Fremdherstellern kann sehr viel Entwicklungsaufwand gespart werden.

Einbindung von DLL's in das Autorensystem Juggler

Auch Juggler erlaubt die Einbindung von Dynamic-Link-Libraries. Einem Entwickler ist es also möglich, das Autorensystem nach seinen Bedürfnissen zu erweitern. Die DLL kann in einer beliebigen Hochsprache (C, C++, Pascal) erstellt werden. Die folgenden Beispiele wurden mit der Programmiersprache C erstellt.

Für den Zugriff auf DLL's stellt Juggler die folgenden Befehle und Funktionen zur Verfügung:

DLLLADEN

DLLAUFRUF

DLLFREI

&DLLSTATUS

Mit DLLLADEN wird eine DLL in den Arbeitsspeicher geladen. Mit DLLFREI wird sie wieder aus dem Speicher entfernt. Es können bis zu 10 DLL's gleichzeitig geladen werden. Die DLL's werden dabei durch eine ID-Nummer identifiziert, die jedem Befehl als erster Parameter übergeben wird.

Mit dem Befehl DLLAUFRUF wird eine Funktion innerhalb einer DLL aufgerufen. Dem Befehl werden dazu drei Parameter mitgegeben. Der erste Parameter ist die ID-Nummer, unter der die DLL zuvor geladen wurde. Bei dem zweiten Parameter handelt es sich um eine Zeichenkette, die den Namen der aufzurufenden Funktion enthält. Innerhalb dieser Zeichenkette können dem Namen der Funktion noch weitere Parameter folgen, die an die DLL-Funktion weitergegeben werden. Als letzter Parameter folgt schließlich die Angabe einer numerischen Variable oder einer Stringvariable, die Ergebniswerte der DLL-Funktion aufnehmen kann.

Aufbau einer DLL-Funktion

Die durch Juggler aufgerufenen DLL-Funktionen müssen grundsätzlich den folgenden Aufbau haben (die Funktions- und Variablennamen können natürlich beliebig sein):

1.  short FAR PASCAL _export DllStrEntryFunction(LPSTR param, LPSTR var)

2.  short FAR PASCAL _export DllNumEntryFunction(LPSTR param, double FAR *var)

Da eine DLL-Funktion als letzten Parameter wahlweise eine numerische Variable oder eine Stringvariable haben kann, gibt es zwei unterschiedliche DLL-Funktionstypen. Der erste Typ wird vom Autorensystem aufgerufen, wenn die Ergebnisvariable eine Stringvariable ist. Der zweite Typ wird aufgerufen, wenn es sich dabei um eine numerische Variablen handelt.

Der erste Übergabeparameter enthält die Zusatzinformationen, die im Befehl DLLAUFRUF hinter dem Namen der aufzurufenden Funktion folgen. Sind keine Zusatzinformationen vorhanden, dann ist die Variable leer und kann ignoriert werden.

Der zweite Übergabeparameter enthält einen Zeiger auf die Juggler-Variable, welche die Ergebniswerte erhalten soll.

Der Return-Wert der DLL-Funktion kann nach dem Befehl DLLAUFRUF vom Autorensystem mit der Systemfunktion &DLLSTATUS abgefragt werden.

Beispiel

Juggler-Programm:

FenAuf 1 0 0 &breite &hoehe 2

"Svar = "svar$

"Nvar = "nvar

""

DllLaden 1 "t1dll.dll"

DllAufruf 1 "DllStrEntryFunction /i 45.48 abc" svar$

"DllStatus = "&DllStatus[1]

DllAufruf 1 "DllNumEntryFunction 25 25 400 300" nvar

"DllStatus = "&DllStatus[1]

""

"Svar = "svar$

"Nvar = "nvar

Warte

DllFrei 1

DLL-Quellcode:

#include <string.h>

#include <windows.h>

short FAR PASCAL _export DllStrEntryFunction(LPSTR param, LPSTR var)

{

    sprintf(var, "Hallo hier ist die DLL-Funktion! Ihre Übergabeparameter: %s", param);

    return(100);  // Rückgabewert kann vom Autorensystem mit &DLLSTATUS abgefragt werden.

}

short FAR PASCAL _export DllNumEntryFunction(LPSTR param, double FAR *var)

{

    *var = 9999;

    return(200);  // Rückgabewert kann vom Autorensystem &DLLSTATUS abgefragt werden.

}

int FAR PASCAL LibMain(HANDLE hInstance, WORD wDataSeg, WORD wHeapSize, LPSTR lpszCmdLine)

{

    if (wHeapSize > 0)    UnlockData(0);

    return(1);

}

Einbindung von DLL's von Fremdherstellern

Das Autorensystem Juggler kann nur DLL-Funktionen mit einem festen Aufbau aufrufen, d.h. es können keine beliebigen DLL's eingebunden werden, sondern nur solche, die den Anforderungen des Autorensystems genügen.

Falls dennoch DLL's mit abweichendem Funktionsaufbau eingebunden werden sollen, ist dies durch folgenden kleinen Trick möglich:

Schreiben Sie eine Puffer-DLL mit Einsprungfunktionen für das Autorensystem. Diese Puffer-DLL lädt die Fremd-DLL in den Arbeitsspeicher. Den Juggler-Einsprungfunktionen übergeben Sie Steuerinformationen, aufgrund derer die Funktionen in der Fremd-DLL aufgerufen werden.

Angenommen, Sie haben eine DLL zur Ansteuerung einer bestimmten Video-Overlay-Karte, die Sie von Juggler aus einbinden wollen. Diese DLL enthält die Funktioen OpenVideo, PlayVideo und CloseVideo. Die Ansteuerung könnte dann folgendermaßen aussehen:

#include <string.h>

#include <windows.h>

HANDLE hnd = 0;

short FAR PASCAL _export LoadVideoLibrary(LPSTR param, double FAR *var)

{

    hnd = LoadLibrary(param);

    return((hnd < 32) ? -1 : 0);

 }

short FAR PASCAL _export UnloadVideoLibrary(LPSTR param, double FAR *var)

{

    if (hnd > 32)    FreeLibrary(hnd);

    hnd = 0;

    return(0);

 }

short FAR PASCAL _export ExecuteVideoCommand(LPSTR param, double FAR *var)

{

    char                cmd[21];

    FARPROC *lpfunc;

    if (hnd < 32)    return(-1);

    sscanf(param, "%s", cmd);

    if (!stricmp(cmd, "OPEN"))

    {

        char filename[21];

        sscanf(param, "%s %s", cmd, filename);

        lpfunc = GetProcAdress(hnd, "OpenVideo");

        if (lpfunc)    (*lpfunc) (filename);

    }

    else if (!stricmp(cmd, "PLAY"))

    {

         long frame1, frame2;

         sscanf(param, "%s %ld %ld", cmd, &frame1, &frame2);

         lpfunc = GetProcAdress(hnd, "PlayVideo");

         if (lpfunc)    (*lpfunc) (frame1, frame2);

    }

    else if (!stricmp(cmd, "CLOSE"))

    {

        lpfunc = GetProcAdress(hnd, "CloseVideo");

        if (lpfunc)    (*lpfunc) ();

    }

    return(0);  // Rückgabewert kann vom Autorensystem mit &DLLSTATUS abgefragt werden.

}

Der Aufruf vom Autorensystem könnte dann mit den folgenden Befehlen erfolgen:

DllLaden 1 "vidbuf.dll"

DllAufruf 1 "LoadVideoLibrary" var

DllAufruf 1 "ExecuteVideoCommand Open vid1.avs" var

DllAufruf 1 "ExecuteVideoCommand Play 500 5400" var

DllAufruf 1 "ExecuteVideoCommand Close" var

DllAufruf 1 "UnloadVideoLibrary" var

DllFrei 1


Aufloesungsunabhaengiges_Programmieren
Auflösungsunabhängiges Programmieren

Eines der Probleme, mit denen sich der Entwickler von Lernprogrammen konfrontiert sieht, ist die Vielzahl unterschiedlicher Bildschirmauflösungen, die unter grafischen Betriebssystemoberflächen wie z.B. Windows existieren.

Wie wird ein Programm, das für eine Auflösung von 640 * 480 Punkten ausgelegt wurde, auf eine Auflösung von z.B. 1024 * 768 Punkten angepaßt. Das Autorensystem Juggler bietet die folgenden Möglichkeiten:

Entwickeln für eine bestimmte Auflösung

Das ist sicher die einfachste Möglichkeit. Wenn sichergestellt ist, daß für ein bestimmtes Programm immer die geforderte Bildschirmauflösung eingestellt ist, kann das Problem ignoriert werden. Zur Sicherheit kann am Anfang des Programms mit den Systemfunktionen &BREITE und &HOEHE die Auflösung kontrolliert werden und ggfs. eine Fehlermeldung ausgegeben werden, falls die Bildschirmauflösung doch abweichen sollte.

Ablauf des Lernprogramms in einem Fenster mit fixer Größe

Dies wird sicherlich die am häufigsten verwendete Lösung sein. Das Lernprogramm läuft in einem Fenster von z.B. 640 * 480 Punkten Größe ab. Bei der Standardauflösung von 640 * 480 füllt dieses Fenster den Bildschirm aus. Bei höheren Auflösungen verdeckt das Fenster nur einen Teil des Bildschirms.

Soll das Lernprogramm grundsätzlich den Desktop verdecken, dann kann ein bildschirmfüllendes Hintergrundfenster definiert werden. Das eigentliche Arbeitsfenster wird dann mit einer festen Auflösung mittig in diesem Hintergrundfenster eingesetzt.

Das dem Autorensystem beiliegende Demo-Programm (demo.cbt) verwendet diese Technik. Lassen Sie das Programm unter einer hohen Auflösung (800 * 600 oder 1024 * 768) laufen, um zu sehen, wie das funktioniert.

Automatische Anpassung des Lernprogramms an die Bildschirmauflösung

Das Autorensystem Juggler bietet noch eine dritte Lösungsmöglichkeit an. Mit dem Befehl KOORD kann ein sogenanntes logisches Koordinatensystem definiert werden. In dem Fall wird der Bildschirm immer so behandelt, als ob die Auflösung des Bildschirms der logischen Auflösung entspricht. Angenommen, Sie haben ein logisches Koordinatensystem von 640 * 480 Punkten definiert und nehmen in Ihrem Programm mit allen Ausgabebefehlen Bezug auf dieses Koordinatensystem. Wird das Programm jetzt in einer höheren Auflösung ausgeführt, dann werden alle Ausgaben automatisch skaliert und an die höhere Auflösung angepaßt. Ein Programm, dessen Ausgaben bei einer Auflösung von 640 * 480 den Bildschirm ausfüllen, tut dies auch bei 800 * 600 oder 1024 * 768 Punkten.

Der Nachteil dieser Methode ist, daß durch Rundungsfehler bei der Skalierung Ungenauigkeiten in der Darstellung entstehen können. Bei der Skalierung von Bitmap-Grafiken kann es außerdem zu Qualitätsverlusten kommen. Des weiteren können Rasterschriften nicht frei skaliert werden, so daß es auch hier zu Ungenauigkeiten kommt.

Es sollten deshalb bei auflösungsunabhängigen Programmen möglichst nur Truetype-Schriften zum Einsatz kommen, da diese beliebig skaliert werden können. Ein derartiges Programm sollte des weiteren unter allen denkbaren Auflösungen getestet werden. An Stellen, wo es zu Abweichungen kommt, können dann auflösungsabhängige Korrekturen zum Einsatz kommen.


Befehlssatz
Befehlssatz des Autorensystems

Das Autorensystem Juggler verfügt über ca. 200 Befehle. In der unten stehenden Liste finden Sie alle  Befehle alphabetisch sortiert aufgelistet.

Um sich eine Hilfe zu einem bestimmten Befehl geben zu lassen, ist es nicht erforderlich, jedesmal diese Indexliste aufzurufen. Wenn Sie mit dem Editor des Autorensystems arbeiten, dann positionieren Sie einfach den Cursor auf dem Befehlswort, der Systemvariablen oder der Systemfunktion, zu der Sie eine Hilfe wünschen und drücken Sie die Tastenkombination Strg-F1. Alternativ können Sie das Wort auch mit der rechten Maustaste anklicken. Sie bekommen daraufhin eine detaillierte Hilfe zu dem betreffenden Begriff angezeigt. Existiert kein Hilfetext zu dem angewählten Begriff, gibt das Hilfesystem eine Fehlermeldung aus.

!  KOMMENTAR

".........."VAR/VAR$

.LABEL

AEND

ANALYSE

ANSTOP

ANUHR

AUDIO

BALKEN

BILDFREI

BILDGROESSE

BILDHOLEN

BILDLADEN

BILDKOPIE

BILDPARAM

BIS

BOGEN

BOX

CURSOR

DATEINAME

DATEN

DATUM

DBADRESSE

DBANFANG

DBANZAHL

DBAUF

DBEND

DBERZEUGEN

DBFILTER

DBLESEN

DBLOESCHEN

DBREORG

DBSCHLUSS

DBSCHREIBEN

DBSETZEN

DBSUCHEN

DBVORWAERTS

DBZU

DBZURUECK

DEBUG

DGSTOP

DGUHR

DIAGRAMM

DLLAUFRUF

DLLFREI

DLLLADEN

DRKABBRUCH

DRKAUF

DRKSTART

DRKVORSCHAU

DRKZU

EINGABE

ELLIPSE

ENDE

EREIGNIS

ERRAUS

ERREIN

ERSETZE

FARBE

FEHLER

FENAKTIV

FENAUF

FENDEF

FENDIM

FENDIMINNEN

FENGRUND

FENLEER

FENLOESCHE

FENMAUSINFO

FENMAXIMAL

FENMINIMAL

FENMODUS

FENNORMAL

FENOBEN

FENPOS

FENSTATUS

FENTITEL

FENVATER

FENZEICHNEN

FENZEIGER

FENZU

FORMAT

FRAGE

GEHEZU

GRAUS

GRCURSOR

GREIN

GRFGROESSE

GRFINFO

GRFLADEN

GRFPALETTE

GRFSCHALTER

GROSS

GRTAB

GRUND

HATTRIB

HFARBE

HGRUND

HLOESCHE

HZEIGER

INFORMATION

KLEIN

KOORD

KREIS

KSDEF

KUCHEN

LAENGE

LESE

LEXIKON

LEXSCHRIFT

LEXTITEL

LINIE

LISTAKTUELL

LISTAUF

LISTEINTRAG

LISTZU

MAUSBEWEGEN

MAUSPOS

MAUSVERBERGEN

MAUSZEIGEN

MAXIMAL

MODUS

MUSTER

NETZ

OBJBEWEGEN

OBJSTAPEL

OBJSTOP

PAUSE

PDAUF

PDEND

PDFREI

PDMEN

PDSPERREN

PDZEICHNEN

PDZU

POLYGON

PROGRAMM

PUAUF

PUEND

PUNKT

RAHMEN

RECHTECK

RESIDENT

SCANFANG

SCHALTER

SCHDIM

SCHFREI

SCHLEIFE

SCHSPERREN

SCSCHLUSS

SCSUCHEN

SCVORWAERTS

SCZURUECK

SEND

SONST

STDSCHALTER

STIFT

STOP

STUFE

SYMFELD

SYMFELDZEIGER

SYMFREI

SYMINVERT

SYMSPERREN

SYMSTOP

SYMZEIGER

SYSTEM

TAB

TEIL

TEXT

TON

TXATTRIB

TXDEF

UHRZEIT

VIDEO

VIRTAUF

VIRTKOPIE

VIRTLOESCHE

VIRTPARAM

VIRTZU

WARNUNG

WARTE

WEND

WENN

WERT

XKSYS

XROLLBALKEN

YKSYS

YROLLBALKEN

ZAEHLE

ZEICHEN

ZEIT

ZUFALL


Kommentar
!  Kommentar

Ein Ausrufungszeichen ('!') im Programmtext leitet einen Kommentar ein. Der Text zwischen dem Ausrufungszeichen und dem Zeilenende wird vom Autorensystem ignoriert.

Auf diese Weise können Kommentartexte und Erläuterungen zum Programm direkt in den Programmtext geschrieben werden.

Beispiel:

!*****************************************************************

!*     Modul                      :  START                                               *

!*                                                                                                         *

!*     Letzte Änderung  :  24.02.93                                               *

!*                                                                                                         *

!*     Autor                        :  Thomas Reitz                                   *

!*****************************************************************

FenAuf 1 0 0 &breite &hoehe 2    !  Hauptfenster eröffnen

Linie 0 0 &xmax &ymax

Linie 0 &ymax &xmax 0                   !  Linien zeichnen

Kreis 319 239 150                              !  Kreis zeichnen

Warte

Querverweis

Haupt-Index

Befehls-Index


Text-Ausgabe
Ausgabe von Text und Variablen

     "............"

     "............";

     "............"var

     "............"var1/var2/var3

Um Texte auszugeben, wird der Text einfach in Anführungszeichen gesetzt. Der eingeschlossene Text wird innerhalb des aktuellen Bildschirmfensters an der momentanen Cursorposition ausgegeben. Die Cursorposition kann mit den Befehlen CURSOR und GRCURSOR eingestellt werden. Die Position des Cursors wird nach einer Ausgabe automatisch hinter den ausgegebenen Text bzw. in die nächste Zeile gesetzt.

Die Schriftart, deren Parameter, sowie die Textattribute müssen zuvor mit den Befehlen TXDEF und TXATTRIB festgelegt werden. Standardmäßig ist die Systemschrift eingestellt. Die Werte für die Vorder- und Hintergrundfarbe des Textes werden durch die Befehle FARBE und GRUND eingestellt.

Falls Variablen in Verbindung mit dem Text ausgegeben werden sollen, so muß einfach der Name der Variablen direkt an das schließende Anführungszeichen angehängt werden. Es können auch mehrere Variablen auf einmal ausgegeben werden. In dem Fall müssen die einzelnen Variablennamen durch einen Schrägstrich getrennt werden.

Nach der Ausgabe von Text /Variablen wird ein Zeilenvorschub erzeugt, so daß die nächste Ausgabe in der nächsten Zeile beginnt. Dabei wird auch noch eine automatische Tabulierung vorgenommen, d.h. das erste Zeichen der neuen Zeile steht genau unter dem ersten Zeichen der vorigen Zeile.

Wird die Schreiben-Anweisung durch ein Semikolon ( ';') abgeschlossen, dann wird der Zeilenvorschub unterlassen und die nächste Textausgabe wird unmittelbar an die vorige Ausgabe angehängt.

Eine Textausgabe kann sich über mehrere Zeilen erstrecken.

Textattribute innerhalb der Ausgabe verändern

In einer Textausgabe können die Attribute sowie die Hinter- und  Vordergrundfarbe des Textes verändert werden. Das ist z.B. sinnvoll, wenn ein einzelnes Wort unterstrichen, kursiv oder in einer anderen Farbe dargestellt werden soll. Attributanweisungen werden innerhalb des Textes in geschweifte Klammern eingeschlossen. Folgende Befehlskürzel sind innerhalb der Klammern erlaubt:

     w0  -  Strichstärke leicht

     w1  -  Strichstärke normal

     w2  -  Strichstärke fett

    +c  -  kursive Darstellung einschalten

     -c  -  kursive Darstellung abschalten

    +u  -  Unterstreichung einschalten

     -u  -  Unterstreichung abschalten

    +o  -  Umrandung einschalten

     -o  -  Umrandung abschalten

    +k  -  Durchstreichung einschalten

     -k  -  Durchstreichung abschalten

    +s  -  Schattenwurf einschalten

     -s  -  Schattenwurf abschalten

     +t  -  Transparenz einschalten

      -t  -  Transparenz abschalten

      fx  -  Vordergrundfarbe x einstellen

     gx  -  Hintergrundfarbe x einstellen

Beispiel:    "{+t}Dieses Wort wird {+u}unterstrichen{-u} dargestellt. Die folgenden Worte werden

                       dagegen {w2f4}fett und in der Farbe rot{w1f0} dargestellt.

                       Die nächste Sequenz {+o+s+k}kombiniert mehrere Attribute{-o-s-k}."

Definition von Hypertextfeldern

Innerhalb einer Textausgabe können des weiteren sogenannte Hypertextfelder definiert werden. Dabei handelt es sich um farblich (oder durch ein anderes Attribut) hervorgehobene Stichworte, zu denen genauere Erklärungen abgerufen werden können. Eingeleitet wird die Definition eines Hypertextfeldes durch das Zeichen Klammeraffe ('@'). Diesem Zeichen folgt ein numerischer Wert, der dem Hypertextfeld zugeordnet wird und der das Feld definiert. Danach folgt in eckige Klammern eingeschlossen der Text des Hypertextfeldes. Wollen Sie in einem Text das Zeichen Klammeraffe ausgeben, dann schreiben Sie einfach zweimal das Zeichen hintereinander ("........@@........").

Die Farbe von Hypertextfeldern wird durch die Befehl HGRUND und HFARBE bestimmt. Die Textattribute eines Hypertextfeldes werden mittels des Befehls HATTRIB eingestellt.

Hypertextfelder werden durch den Befehl EREIGNIS kontrolliert. Wird ein Hypertextfeld angeklickt, dann gibt dieser Befehl den numerischen Wert, der dem Feld zugeordnet wurde, zurück. Des weiteren wird der Inhalt des Feldes in der Systemvariablen STICHW$ abgelegt.

Beispiel

!**********  Beispiel zu Textausgaben  **********

FenAuf 1 0 0 &breite &hoehe 2

a     = 5.134

b     = 28.97

var  = 167.8

name$[1]    = "Müller"

strasse$[3] = "Mühlstrasse"

Cursor 3 5

"{+t}Dies ist ein Lernprogramm" ! Mit Zeilenvorschub

"Variable A = "a                                ! Mit Zeilenvorschub

"Dies ist ein Lernprogramm";       ! Ohne Zeilenvorschub

"Variable A = "a;                               ! Ohne Zeilenvorschub

"Variablenliste = "a/b/name$[1]/strasse$[3]

""var    ! Ausgabe einer Variablen ohne Text

""          ! Zeilenvorschub

"Alle Tiere im {+c}Finsterwald{-c} duckten sich

in ihre Schlupflöcher und Höhlen.

Es war spät in der Nacht und hoch oben in den

Wipfeln der uralten knorrigen {w2+s}Fichten{w1-s}

heulte und brauste der

Sturmwind."  ! Ausgabe über mehrere Zeilen.

                         ! Es werden einige Worte durch veränderte Text-

                         ! attribute hervorgehoben.

Warte

FenLoesche 1

!**********  Beispiel zu Hypertextfeldern  **********

Cursor 5 5

Hfarbe 4      ! Farbe für Hypertext ROT

Hattrib "+u"  ! Attr. für Hypertext UNTERSTRICHEN

"Das menschliche @10[Herz] ist eines der wichtigsten

menschlichen Organe. Es sitzt im oberen Teil des

@11[Thorax]."

.L1

Ereignis wnd type scc

Cursor 5 10  "{-t}                                {+t}"

Cursor 5 10

Analyse scc

  :=10:  "STICHW$ = "stichw$  ! Stichwort HERZ

  :=11:  "STICHW$ = "stichw$  ! Stichwort THORAX

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

CURSOR

GRCURSOR

FARBE

GRUND

TEXT

TXDEF

TXATTRIB

HGRUND

HFARBE

HATTRIB

EREIGNIS


Label
Definition von Sprungmarken (Label)

Die Definition eines sogenannten Labels wird immer durch einen Punkt ('.') eingeleitet. Es handelt sich hierbei um eine Sprungmarke im Programmtext. Mit dem Befehl GEHEZU kann an diese Marke verzweigt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 4  "{+t}Klicken Sie einen Schalter mit der Maus an."

Schalter 1 50 100 "Label-1"

Schalter 2 50 130 "Label-2"

Schalter 3 50 160 "Label-3"

Schalter 4 50 190 "Label-4"

Schalter 5 50 220 "Abbruch"

.ANFANG

Ereignis wnd type scc

Cursor 5 2  "{-t}                                                    {+t}"

Cursor 5 2

Analyse scc

  :=1:  GeheZu L1

  :=2:  GeheZu L2

  :=3:  GeheZu L3

  :=4:  GeheZu L4

  :=5:  Ende

  ::    GeheZu ANFANG

Aend

.L1

"Label-1 wurde angesprungen."

GeheZu ANFANG

.L2

"Label-2 wurde angesprungen."

GeheZu ANFANG

.L3

"Label-3 wurde angesprungen."

GeheZu ANFANG

.L4

"Label-4 wurde angesprungen."

GeheZu ANFANG

Querverweis

Haupt-Index

Befehls-Index

GEHEZU


ANALYSE

ANALYSE var/var$  ........  AEND

Mit der ANALYSE-AEND-Anweisung können verschiedene Anweisungsblöcke abhängig vom Inhalt einer Variablen aufgerufen werden. Damit können z.B. Eingaben eines Lernprogramm-Anwenders komfortabel ausgewertet werden.

Eine solche Analyse wird durch den Befehl ANALYSE eingeleitet, dem der Name der Variablen folgt, die ausgwertet werden soll. Das kann entweder eine numerische oder eine alphanumerische Variable

sein. Die Auswertung von numerischen und alphanumerischen Variablen unterscheidet sich etwas (siehe unten). Die einzelnen Bedingungen werden durch Doppelpunkte eingeschlossen. Der Anweisungsblock, der ausgeführt werden soll, wenn die Bedingung zutrifft, steht dann direkt hinter dem schlieáenden Doppelpunkt.

Um einen Anweisungsblock zu definieren, der ausgeführt werden soll, wenn keine der anderen Bedingungen zutrifft, kann man als letzten Analysezweig einen Block angeben, der durch zwei aufeinanderfolgende Doppelpunkte (::) eingeleitet wird.

Abgeschlossen wird die Analyse-Konstruktion durch den Befehl AEND.

Bedingungen für numerische Analysen:

Analyse var

    :=wert:    .....   !  Abprüfung auf Gleichheit

    :<wert:    .....   !  Abprüfung auf kleiner

    :>wert:    .....   !  Abprüfung auf größer

    :<=wert:  .....   !  Abprüfung auf kleiner gleich

    :>=wert:  .....   !  Abprüfung auf größer gleich

    :<>wert:  .....   !  Abprüfung auf Ungleichheit

Aend

Bedingungen für alphanumerische Analysen:

Analyse var$

    :text:                .....   !  Abprüfung auf Gleichheit

    :!text:               .....   !  Abprüfung auf Ungleichheit

    :text1|text2:    .....   !  ODER-Verknüpfung

    :text1&text2:  .....   !  UND-Verknüpfung (sinnvoll in Verbindung mit Wildcards)

Aend

Des weiteren sind in alphanumerischen Analysebedingungen sogenannte 'Wildcards' erlaubt. Ein 'Wildcard' wird durch ein Dollarzeichen ('$') dargestellt. Damit ist eine Abprüfung auf teilweise

Gleichheit möglich.

Analyse var$

    :$text:    .....  !  Abprüfung auf Teilstring rechts

    :text$:    .....  !  Abprüfung auf Teilstring links

    :$text$:  .....  !  Abprüfung auf Teilstring mit beliebiger Position

Aend

Analysen können bis zu fünffach ineinander verschachtelt werden.

Beispiel

!***********************************************************

!*     Beispiel-1                                                                      *

!***********************************************************

FenAuf 1 0 0 &breite &hoehe 2

.ANFANG

FenLoesche

Cursor 10 5

"

@1[    Menüpunkt-1    ]               ! Es werden Hypertext-

@2[    Menüpunkt-2    ]               ! textfelder für den Aufbau

@3[    Menüpunkt-3    ]               ! eines Menüs verwendet.

@4[    Menüpunkt-4    ]

@5[    Programm beenden    ]"

.L1

Ereignis wnd type scc

Analyse scc

    :=1:    modul1

    :=2:    modul2

    :=3:    modul3

    :=4:    modul4

    :=5:    Stop

    ::         GeheZu L1

Aend

GeheZu ANFANG

Ende

!***********************************************************

!*     Beispiel-2                                                                      *

!***********************************************************

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5  "{+t}Wie heißt die Hauptstadt von Italien?  ";

Eingabe 1 "L25" = stadt$

StdSchalter 1 &x1[41] &y1[7] "OK"

Grein

Cursor 5 10

.L1

Ereignis wnd type scc

Wenn scc <> 1 Dann  GeheZu L1  Wend

Cursor 5 10  "{-t}                                                          {+t}"

Cursor 5 10

Analyse stadt$

  :ROM:                             "Sehr gut. Rom ist die Hauptstadt."

  :$ROM|ROM$:             "Sie haben es fast."

  :$ROM$:                        "Der Name der Stadt ist in Ihrer Eingabe enthalten."

  :GENUA|VENEDIG:  "Weder Genua noch Venedig."

  ::                                       "Diese Stadt kenne ich nicht."

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index


ANSTOP

Dieser Befehl schaltet eine laufende Analoguhr im aktuellen Fenster wieder ab. Ist im aktiven Fenster keine Analoguhr definiert, bewirkt dieser Befehl nichts.

Querverweis

Haupt-Index

Befehls-Index

ANUHR


ANUHR
ANUHR  x  y  rad

Stellt eine grafische Analoguhr im aktuellen Bildschirmfenster dar. Die Parameter entsprechen den Parametern des Befehls KREIS. Zum Zeichnen der Uhr werden die Einstellungen durch den Befehl STIFT verwendet. Die Einstellungen, die mit dem Befehl MUSTER vorgenommen wurden, werden ignoriert.

Parameter

x/y   -  Koordinaten des Mittelpunkts des Ziffernblatts

rad  -  Radius des Ziffernblatts

Eine laufende Analoguhr kann durch den Befehl ANSTOP wieder abgeschaltet werden.

Querverweis

Haupt-Index

Befehls-Index

DGUHR

ANSTOP


AUDIO
AUDIO  "..........."

Mit dem Befehl Audio werden Anweisungen an eine installierte Soundkarte weitergegeben. Wie diese Anweisungen beschaffen sind, hängt von der Art der verwendeten Treiber ab. Handelt es sich z.B. unter Windows um MCI-Treiber, dann können zwischen den Anführungszeichen MCI-Kommandos zur Steuerung der Soundkarte abgesetzt werden.

Mittels der Systemfunktion &AUDSTATUS kann abgefragt werden, ob der Audio-Befehl erfolgreich ausgeführt wurde, oder ob ein Fehler aufgetreten ist.

Falls der Audio-Treiber zu einem bestimmten Befehl einen Rückgabewert bereit hält, so kann dieser Wert mittels der Systemfunktion &AUDERGEBNIS$ abgefragt werden.

Querverweis

Haupt-Index

Befehls-Index

VIDEO

&AUDSTATUS

&AUDERGEBNIS$


BALKEN
BALKEN  anzahl  xy  hoehe  breite  muster  farbe1  farbe2

Dieser Befehl zeichnet ein Balkendiagramm im zuletzt gezeichneten Koordinatensystem.

Vor Einsatz dieses Befehles muß (!!!) mit den Befehlen XKSYS und YKSYS ein Koordinatensystem gezeichnet werden.

Der Befehl BALKEN nimmt mit seinen Werten Bezug auf die Wertebereiche, die in den Befehlen XKSYS und YKSYS mit den Parametern Startwert und Endwert festgelegt wurden.

Parameter

anzahl  -  Anzahl der Balken, die gezeichnet werden sollen.

xy           -  Indizierte Variable, welche die XY-Koordinaten

                  aller Balken enthält, beginnend mit Index 1.

                    xy[1]  =  -30    xy[2]  =  0    !  x1/y1

                    xy[3]  =  0        xy[4]  =  0    !  x2/y2

                  Achtung! Diese Koordinaten beziehen sich auf die

                  Wertebereiche, die mit XKSYS und YKSYS festgelegt

                  wurden und nicht auf das Bildschirmkoordinatensystem.

hoehe  -  Indizierte Variable, welche die Höhe aller Balken,

                  bezogen auf den Wertebereich des Y-Schenkels des

                  zuletzt gezeichneten Koordinatensystems, enthält.

breite   -  Indizierte Variable, welche die Breiten aller Balken,

                  bezogen auf den Wertebereich des X-Schenkels des zu-

                  letzt gezeichneten Koordinatensystems, enthält.

muster  -  Indizierte Variable, welche die Nummern der Füll-

                   muster (siehe Befehl MUSTER) enthält, mit denen

                   die Balken gefüllt werden sollen.

farbe1   -  Indizierte Variable, welche die Nummern der Farben

                   enthält, in denen die Balken gezeichnet werden sollen.

farbe2   -  Indizierte Variable, welche die Nummern der Farben

                   enthält, mit denen der Balken gefüllt werden soll.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

Stift 2 1 2

KsDef 150 370 1 1 1 1 4

XkSys 500 -55 205 10 20 "X-Achse"

YkSys 400 -25 105 10 20 "Y-Achse"

xy[1]   = 0         xy[2]  = 0     hoehe[1] = 80    breite[1] = 20

xy[3]   = 30       xy[4]  = 0     hoehe[2] = 40    breite[2] = 20

xy[5]   = 60       xy[6]  = 0     hoehe[3] = 90    breite[3] = 20

xy[7]   = 90       xy[8]  = 0     hoehe[4] = 10    breite[4] = 30

xy[9]   = 130    xy[10] = 0    hoehe[5] = 60    breite[5] = 20

xy[11] = 170    xy[12] = 0    hoehe[6] = 30    breite[6] = 20

mus[1] = 2    col1[1] = 9      col2[1] = 14

mus[2] = 3    col1[2] = 10    col2[2] = 13

mus[3] = 5    col1[3] = 11    col2[3] = 12

mus[4] = 7    col1[4] = 12    col2[4] = 11

mus[5] = 8    col1[5] = 13    col2[5] = 10

mus[6] = 9    col1[6] = 14    col2[6] = 9

Balken 6 xy hoehe breite mus col1 col

Warte

Querverweis

Haupt-Index

Befehls-Index

XKSYS

YKSYS

KUCHEN

DIAGRAMM


BILDFREI
BILDFREI  id

Der Befehl BILDFREI gibt den Speicherplatz, den eine Grafik belegt, wieder frei. Diese Grafik muß zuvor mit dem Befehl BILDLADEN von der Platte geladen, oder mit dem Befehl BILDHOLEN erzeugt worden sein. Der Parameter id gibt die ID-Nummer an, unter welcher die Grafik im Speicher gehalten wurde.

Wird als ID-Nummer 0 angegeben, dann werden alle im Speicher befindlichen Grafiken freigegeben. Beachten Sie bitte, daß Animationen, die auf diese Grafiken zugreifen, in dem Fall automatisch gestoppt werden.

Querverweis

Haupt-Index

Befehls-Index

BILDHOLEN

BILDLADEN

BILDKOPIE

BILDPARAM

BILDGROESSE


BILDGROESSE
BILDGROESSE  id  breite  hoehe

Standardmäßig werden Grafiken in der Größe ausgegeben, in welcher sie erstellt wurden. Mittels des Befehls  BILDGROESSE kann die Ausgabegröße für eine Grafik verändet werden, die mit dem Befehl BILDLADEN in den Speicher eingelesen werden soll. Die geladene Grafik wird dabei auf die als Parameter angegebene Breite und Höhe skaliert. Der Parameter id gibt die ID-Nummer an, unter welcher die Grafik geladen werden soll.

Der Befehl BILDGROESSE muß dabei immer vor dem Befehl BILDLADEN angegeben werden, da die Skalierung beim Laden der Grafik stattfindet.

Der Aufruf von 'BILDGROESSE id 0 0' bewirkt, daß Grafiken wieder in ihrer Originalgröße geladen werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

BildGroesse 1 320 240    ! Grafik wird auf ein Viertel der Bildschirmgröße skaliert.

BildLaden 1 1 "earth.bmp"

BildKopie 1 50 50 1

Warte

BildGroesse 1 0 0    ! wieder zurücksetzen

BildFrei 1

Querverweis

Haupt-Index

Befehls-Index

BILDHOLEN

BILDLADEN

BILDKOPIE

BILDPARAM

BILDFREI


BILDHOLEN
BILDHOLEN  id  x1  y1  breite hoehe

Mit diesem Befehl wird ein Ausschnitt des aktuellen Fensters als Grafik unter der angegebenen ID-Nummer abgespeichert. Die Parameter x1/y1/breite/hoehe geben dabei an, welcher Bereich des Fensters als Grafik gesichert werden soll. Die derart erzeugte Grafik kann unter Verwendung von Effekten in jedes beliebige Fenster kopiert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schleife i = 0 Bis 200

  Zufall 0 639 x

  Zufall 0 479 y

  Zufall 0 80 rad

  Zufall 0 15 col

  Stift 1 1 col

  Kreis x y rad

Send

Warte

BildHolen 1 50 50 300 200

FenAuf 2 100 100 300 200 3

BildKopie 1 0 0 1

filter$ = "w2e11"

Warte

Warte

Querverweis

Haupt-Index

Befehls-Index

BILDGROESSE

BILDLADEN

BILDKOPIE

BILDPARAM

BILDFREI


BILDLADEN
BILDLADEN  id  pal  ".........."

Der Befehl BILDLADEN lädt eine Grafik aus einer externen Datei in den Arbeitsspeicher. Diese Grafik kann dann mittels des Befehls BILDKOPIE in das aktuelle Fenster kopiert werden. Mit den Befehlen OBJSTAPEL und OBJBEWEGEN kann eine derart geladene Grafik auch in eine Animation eingebunden werden.

Mit BILDLADEN können die folgenden Grafikformate eingelesen werden:  BMP, TIF, PCX und GIF. Die Ausgabegröße einer Grafik kann mit dem Befehl BILDGROESSE verändert werden.

Parameter

id            -  ID-Nummer der Grafik

pal         -  Gibt an, ob die Palette der Grafik beim Kopieren in ein Fenster eingestellt

                   werden soll oder nicht.

                       0  -  nicht einstellen

                       1  -  einstellen

".........."  -  Dateiname der Grafik

Farbpaletten

Es ist evtl. wünschenswert, das die Farben der zu ladenden Grafik an die Palette einer anderen Grafik angepaßt werden. Angenommen, es sollen zwei Grafiken mit 256 Farben geladen werden. Die Grafiken haben unterschiedliche Paletten. Der verwendete Grafikadapter kann aber nur 256 Farben gleichzeitig darstellen. Es ist in dem Fall nicht möglich, beide Farbpaletten gleichzeitig zu realisieren. In diesem Fall müssen die Farben einer Grafik an die Farbpalette der anderen Grafik angepaßt werden. Zu diesem Zweck kann beim Laden einer Grafik angegeben werden, an welche Grafik die Farben angepaßt werden sollen. Es muß in dem Fall einfach ein zweiter Dateiname angegeben werden, der die Grafik bezeichnet, deren Palette verwendet werden soll. Der zweite Dateiname wird vom ersten durch einen Hochstrich getrennt. Das könnte folgendermaßen aussehen:

BildLaden  1  1  "ocean.bmp"                             !  Die Palette dieser Grafik wird eingestellt

BildLaden  2  1  "chess.bmp  |  ocean.bmp"  ! Die Farben der Grafik  'chess.bmp'

                                                                                      ! werden an die Palette der Grafik 'ocean.bmp'

                                                                                      ! angepaßt.

Achtung! Wenn das zugrundeliegende Fenstersystem (Windows, OS/2, Motif, etc.) in einem 16-Farbmodus läuft, dann kann die Palette der Grafik nicht eingestellt werden, da die 16 Grundfarben des Systems nicht verändert werden dürfen. In dem Fall wird die Grafik, so gut es geht, an die Farbeinstellungen des Fenstersystems angepaßt.

Geschwindigkeit

Die Ladegeschwindigkeiten für die unterschiedlichen Grafikformate sind sehr unterschiedlich. Generell gilt, daß ungepackte Formate (BMP, ungepacktes TIF) schneller geladen werden können, als gepackte. Bei Lernprogrammen bei denen es auf darauf ankommt, daß die Grafiken schnell geladen werden, sollte wenn möglich, das BMP-Format verwendet werden.

In der folgenden Liste werden die verschiedenen Grafikformate nach der Geschwindigkeit aufgelistet, mit der sie geladen werden können (die schnellsten zuerst, die langsamsten zuletzt).

BMP

TIF (ungepackt)

TIF (gepackt)

PCX

GIF

Grafikbibliotheken

Bitmap-Grafiken vom Typ BMP können auch aus einer sogenannten Grafikbibliothek geladen werden. In einer Grafikbibliohek können mehrere dutzend oder auch hunderte von Einzelgrafiken zusammengefaßt werden. Eine solche Bibliothek ist leichter zu handhaben als viele Einzelgrafiken. Außerdem können Grafiken, die sich in einer solchen Bibliothek befinden, nicht von Dritten verändert werden.

Erstellt wird eine Grafikbibliothek mit dem beiliegenden Programm 'grflib.exe'. Um aus einem Lernprogramm auf eine Bibliothek zuzugreifen, muß der Name der Bibliothek der Systemvariablen GRFLIB$ zugewiesen werden. Die Syntax des Befehls BILDLADEN verändert sich nicht. Ist der Variablen GRFLIB$ ein gültiger Dateiname zugewiesen, dann versucht das Autorensystem zuerst die Grafik aus der Bibliothek zu laden. Wird sie dort nicht gefunden, dann wird die Grafik als externe Datei auf der Festplatte gesucht.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

BildLaden 1 1 "earth.bmp"

BildKopie 1 0 0 1

filter$ = "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

BILDGROESSE

BILDHOLEN

BILDKOPIE

BILDPARAM

BILDFREI


BILDKOPIE
BILDKOPIE  id  x  y  effekt

Der Befehl BILDKOPIE kopiert eine Grafik, die zuvor mit den Befehlen BILDLADEN oder BILDHOLEN erzeugt wurde, im aktuellen Fenster an die Position, welche durch die Parameter x und y angegeben wird. Dabei kann die Grafik mittels verschiedener Überblendeffekte zur Anzeige gebracht werden.

Parameter

id 	-  ID-Nummer der Grafik

x	-  X-Koordinate im aktuellen Fenster

y	-  Y-Koordinate im aktuellen Fenster

effekt	-  Überblendeffekt

    0  -  absolutes Kopieren

    1  -  überblenden

    2  -  von oben nach unten

    3  -  von unten nach oben

    4  -  von links nach rechts

    5  -  von rechts nach links

    6  -  ausgehend von der Mitte nach oben und unten

    7  -  ausgehend von der Mitte nach links und rechts

    8  -  von oben und unten zur Mitte hin

    9  -  von links und rechts zur Mitte hin

  10  -  von innen nach aussen zoomen

  11  -  von aussen nach innen zoomen

  12  -  von oben nach unten einrollen

  13  -  von unten nach oben einrollen

  14  -  von links nach rechts einrollen

  15  -  von rechts nach links einrollen

Die Parameter für das Kopieren von Effekten können mit

dem Befehl BILDPARAM eingestellt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

BildLaden 1 1 "earth.bmp"

BildKopie 1 0 0 1

filter$ = "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

BILDGROESSE

BILDHOLEN

BILDLADEN

BILDPARAM

BILDFREI


BILDPARAM
BILDPARAM  id  groesse pause

Mit diesem Befehl werden die Blockgröße und eine Verzögerungszeit für das Kopieren einer Grafik mit dem Befehl BILDKOPIE unter Verwendung von Überblendeffekten eingestellt. Der Parameter 'id' identifiziert die Grafik.

Je nach Effekt kann die Bedeutung der folgenden zwei Parameter variieren.

Für den Effekt 1 (überblenden) gibt der Parameter 'groesse' die Kantenlänge in Pixeln für einen kopierten Block an. Für alle anderen Effekte gibt dieser Parameter an, wieviele Linien zwischen zwei Pausen kopiert werden sollen.

Der Parameter 'pause' gibt die Verzögerung zwischen zwei Kopiervorgängen an. Je größer dieser Wert ist, desto langsamer wird eine Grafik aufgeblendet.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

BildLaden 1 1 "earth.bmp"

BildKopie 1 0 0 1

Warte

FenLoesche 1

BildParam 1 5 0  ! kleinere Blöcke

BildKopie 1 0 0 1

Warte

FenLoesche 1

BildParam 1 1 0  ! immer eine Linie

BildKopie 1 0 0 10

Warte

FenLoesche 1

BildParam 1 4 0  ! immer vier Linien

BildKopie 1 0 0 10

Warte

FenLoesche 1

BildParam 1 4 10000  ! jetzt etwas langsamer

BildKopie 1 0 0 10

Warte

Querverweis

Haupt-Index

Befehls-Index

BILDGROESSE

BILDHOLEN

BILDLADEN

BILDKOPIE

BILDFREI


BOGEN
BOGEN  x  y  start  ende  radius

Dieser Befehl zeichnet einen Kreisbogen. Für das Zeichnen des Kreisbogens (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Parameter

x/y         -  Mittelpunkt des Kreisbogens

start      -  Startwinkel des Kreisbogens in Bogengrad

ende    -  Endwinkel des Kreisbogens in Bogengrad

radius  -  Radius des Kreisbogens

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Stift 0 0 0

Schleife i = 0 Bis 300

    Zufall 0 639 x

    Zufall 0 479 y

    Zufall 0 360 stwin

    Zufall 0 360 enwin

    Zufall 0 80 rad

    Zufall 0 15 col1

    Zufall 0 15 col2

    Zufall 1 10 mus

    Muster mus col1 col2 0

    Bogen x y stwin enwin rad

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER

KREIS


BOX
BOX  x  y  breite  hoehe  n1  n2

Dieser Befehl zeichnet im aktuellen Fenster ein Rechteck mit abgerundeten Ecken. Die Parameter x/y geben die linke obere Ecke des Rechtecks an. Die Parameter breite/hoehe geben die Größe des Rechtecks an. Die Parameter n1 und n2 geben den Radius für die Verrundung in horizontaler und in vertikaler Richtung an.

Für das Zeichnen des Rechtecks (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

RECHTECK

STIFT

MUSTER


CURSOR
CURSOR  spalte  zeile

Dieser Befehl legt die Position fest, an der die nächste Textausgabe im aktuellen Fenster erfolgen soll ("..........", Text). Die Parameter spalte und zeile geben die Position an, ab der die Ausgabe erfolgen soll. Diese Parameter sind zeichenorientiert, d.h. der Befehl CURSOR 10 5 z.B. positioniert die nächste Ausgabe 10 Textspalten nach rechts und 5 Textzeilen nach unten, abhängig von der Größe der eingestellten Schrift. Eine pixelgenaue Positionierung der nächsten Ausgabe kann mit Hilfe des Befehls GRCURSOR erreicht werden.

Des weiteren können mit den Befehlen CURSOR und GRCURSOR Eingabefelder (Befehl EINGABE) positioniert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 10 3  "Menüpunkt-1"

Cursor 10 5  "Menüpunkt-2"

Cursor 10 7  "Menüpunkt-3"

Cursor 10 9  "Programm beenden"

Warte

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

TAB

GRTAB

GRCURSOR

EINGABE


DATEINAME
DATEINAME  name$  pfad$

Dieser Befehl ermittelt den Zugriffspfad für eine Datei. In der als Parameter angegebenen Variablen 'name$' muß ein gültiger Dateiname stehen. Das Autorensystem ermittelt den Zugriffspfad für die Datei und legt den Dateinamen zusammen mit dem Pfad in der Variablen 'pfad$' ab. Das Autorensystem geht dabei folgendermaßen vor:

1. Steht in 'name$' bereits ein Dateiname mit Zugriffspfad (z.B. d:\grafiken\earth.bmp), dann wird der

 Dateiname einfach nach 'pfad$' kopiert.

2. Ist die Datei im aktuellen Verzeichnis zu finden? Wenn ja, dann wird der Dateiname ebenfalls ohne Änderungen kopiert.

3. Ist die Datei im Verzeichnis zu finden, aus der das Laufzeitsystem gestartet wurde? Wenn ja, dann wird der komplette Zugriffspfad nach 'pfad$' kopiert. Aus 'earth.bmp' wird dann z.B. 'c:\juggler\earth.bmp'.

Die beschriebene Vorgehensweise wird vom Autorensystem bei fast allen Dateioperationen (Grafik laden, Datenbank eröffnen, ASCII-Dateien lesen und schreiben, etc.) automatisch berücksichtigt.

Dieser Befehl ist in erster Linie für die Zusammenarbeit mit den Befehlen VIDEO und AUDIO gedacht. Diesen Befehlen werden Kommandostrings übergeben, deren Aufbau dem Autorensystem nicht bekannt ist. Falls in diesen Kommandostrings auch Dateinamen übergeben werden sollen, dann können diese zuvor mit dem Befehl DATEINAME erzeugt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 280 150 320 200 2

FenGrund 2 1 0 0

FenAuf 2 280 150 320 200 0

Zeichen &FenSysId fid$

Dateiname "aslamp.fli" pfad$

cmd$ = "open " + pfad$ + " type Animation1 alias xxx style child parent " + fid$

Video cmd$

Video "play xxx"

filter$ = "w1e2e11"

Warte

Querverweis

Haupt-Index

Befehls-Index


DATEN
DATEN  ".........."var/var$

Der Befehl DATEN speichert Text und/oder Variablen in einer beliebigen Datei ab. Die Befehlssyntax ist dieselbe wie die Syntax für die Schreibenanweisung ("......").

Falls Variablen in Verbindung mit dem Text ausgegeben werden sollen, so muß einfach der Name der Variablen direkt an das schließende Anführungszeichen angehängt werden. Es können auch mehrere

Variablen auf einmal ausgegeben werden. In dem Fall müssen die einzelnen Variablennamen durch einen Schrägstrich getrennt werden.

Nach der Ausgabe von Text/Variablen wird ein Zeilenvorschub erzeugt, so daß die nächste Ausgabe in der nächsten Zeile beginnt. Wird der DATEN-Befehl durch ein Semikolon (';') abgeschlossen, wird dieser Zeilenvorschub unterlassen und die nächste Ausgabe wird unmittelbar an die vorige Ausgabe angehängt. Eine Ausgabe kann sich dabei über mehrere Zeilen erstrecken.

Der Name der Datei, in die ausgegeben wird, ist in der Systemvariablen SDATEI$ abgelegt (Standardeinstellung - "JUGGLER.DAT").

Die Daten, die mit diesem Befehl geschrieben wurden, können mit dem Befehl LESE wieder eingelesen werden.

Beispiel

name$      = "Karl Heinz Müller"

adresse$ = "Petunienweg 24, 8000 München"

telefon$    = "089/808080"

Daten "Name    = "name$

Daten "Adresse = "adresse$

Daten "Telefon = "telefon$

sdatei$ = "abc.dat"

Daten "Dieser Text wird in die Datei 'abc.dat' geschrieben"

Querverweis

Haupt-Index

Befehls-Index

"............"

LESE

SDATEI$


DATUM
DATUM  tag  monat  jahr

Dieser Befehl ermittelt das aktuelle Systemdatum. Dem Befehl werden dazu drei numerische Variablen als Parameter mitgegeben, in denen Tag, Monat und Jahr des Datums abgelegt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Datum tag mon jahr

Cursor 5 5

"{+t}Aktuelles Datum: "tag;    "."mon;    "."jahr

Warte

Querverweis

Haupt-Index

Befehls-Index

ZEIT

UHRZEIT

DGUHR

ANUHR


DBADRESSE
DBADRESSE  id  var

Dieser Befehl gibt den aktuellen Wert des Datenbankzeigers der Datenbank zurück, die mit der ID-Nummer 'id' eröffnet wurde. Der Wert des Datenbankzeigers wird in die numerische Variable 'var'

eingetragen.

Auf diese Weise kann die Position eines bestimmten Datensatzes zwischengespeichert werden. Mit dem Befehl DBSETZEN kann der Datenbankzeiger dann auf diese Position zurückgesetzt werden.

Beispiel

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

       .

       .

       .

DbAdresse 1 dba    ! Aktuelle Datenbankadresse zwischenspeichern.

       .

       .

       .

DbSetzen 1 dba      ! Gespeicherte Datenbankadresse wiederherstellen.

DbLesen 1                ! Datensatz lesen.

       .

       .

Querverweis

Haupt-Index

Befehls-Index

DBSETZEN

DBANZAHL

&DBSTATUS


DBANFANG
DBANFANG  id

Dieser Befehl positioniert den Datenbankzeiger auf den ersten Datensatz in der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde. Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!   Alle Datensätze werden sequentiell vorwärts gelesen und nach-

!   einander angezeigt.

DbAnfang 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$   "  Name   : "name$   "  Vorname: "vname$

    Warte

    DbVorwaerts 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBSCHLUSS

DBVORWAERTS

DBZURUECK

DBVORWAERTS

&DBSTATUS


DBANZAHL
DBANZAHL  id  var

Dieser Befehl gibt die Anzahl der Datensätze in der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde, zurück. Der ermittelte Wert wird in der numerischen Variablen 'var' abgelegt.

Die als gelöscht markierten Datensätze werden dabei mitgezählt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

DbAnzahl 1 anz

"Die Datenbank enthält "anz;    " Datensätze."

DbZu 1

Warte

Querverweis

Haupt-Index

Befehls-Index

DBADRESSE

DBSETZEN

&DBSTATUS


DBAUF
DBAUF  id  "dbname"

Durch diesen Befehl wird die Eröffnung einer Datenbank eingeleitet. Diese Datenbank muß zuvor mit dem Programm 'dbtool.exe' angelegt werden.

Parameter

id    -    ID-Nummer der Datenbank. Kann Werte von 1 bis 10

             annehmen, d.h. daß bis zu 10 Datenbanken gleich-

             zeitig eröffnet werden können.

 "dbname"  -  Name der Datenbank.

Dem Befehl DBAUF folgen unmittelbar die Zuordnungen von Datenbankfeldern zu Juggler-Variablen. Diese Zuordnung gibt an, in welcher Variablen ein bestimmtes Feld des aktuellen Datensatzes

gespeichert werden soll. Abgeschlossen wird die Zuordnung durch den Befehl DBEND.

Eine derartige Zuordnung könnte wie folgt aussehen:

DbAuf 1 "adressen"

    anrede       anr$         ! Alphanumerisches Feld

    name          name$    ! Alphanumerisches Feld

    vorname    vname$  ! Alphanumerisches Feld

    strasse       str$           ! Alphanumerisches Feld

    plz                 plz           ! Numerisches Feld

    ort                 ort$          ! Alphanumerisches Feld

    alter              alter        ! Numerisches Feld

    gebdatum  geb$       ! Datumsfeld

DbEnd

Es wird eine Datenbank namens ADRESSEN eröffnet. Dieser Datenbank wird die ID-Nummer 1 zugeordnet, über die alle anderen Datenbankbefehle in der Folge auf diese Datenbank zugreifen können.

Links stehen die Feldbezeichnungen, die beim Anlegen der Datenbank im Programm 'dbtool.exe' vergeben wurden.

Rechts stehen die Juggler-Variablen, in welchen die Inhalte der Felder nach dem Lesen eines Datensatzes mit dem Befehl DBLESEN gespeichert werden.

Feldern vom Typ C (alpanumerisch), M (alphanumerisch), L (logisch) und D (Datum) müssen Stringvariablen zugeordnet werden. Feldern vom Typ N (numerisch) werden numerische Variablen zugeordnet.

Es muß nicht jedem Datenbankfeld eine Variable zugeordnet werden. Wenn nur Teile der Informationen in einem Datensatz benötigt werden, genügt es, nur den betreffenden Feldern Variablen zuzuordnen. Der Rest des Datensatzes wird in dem Fall ignoriert.

Nach jeder Datenbankoperation kann der Status der Datenbank (Operation erfolgreich oder nicht) der Systemfunktion &DBSTATUS entnommen werden.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

! Alle Datensätze werden sequentiell vorwärts gelesen und nach-

! einander angezeigt.

DbAnfang 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede   : "anr$

    "  Name     : "name$

    "  Vorname  : "vname$

    Warte

    DbVorwaerts 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1         ! Letzter Datensatz erreicht.

                 Ende

         ::      " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBEND

DBZU

&DBSTATUS


DBEND

Dieser Befehl beendet die Eröffnung einer Datenbank und die Zuordnung der Datenbankfelder zu Variablen.

Beispiel

  DbAuf 1 "adressen"

    anrede         anr$          ! Alphanumerisches Feld

    name            name$     ! Alphanumerisches Feld

    vorname      vname$  ! Alphanumerisches Feld

    strasse         str$           ! Alphanumerisches Feld

    plz                  plz            ! Numerisches Feld

    ort                  ort$           ! Alphanumerisches Feld

    alter              alter          ! Numerisches Feld

    gebdatum  geb$         ! Datumsfeld

  DbEnd

Querverweis

Haupt-Index

Befehls-Index

DBAUF

&DBSTATUS


DBERZEUGEN
DBERZEUGEN  id

Mit diesem Befehl wird ein neuer Datensatz erzeugt. Die Inhalte der Variablen, die der Datenbank mit dem Befehl DBAUF zugeordnet wurden, werden in den neuen Datensatz übertragen und nachfolgend

in die Datenbank geschrieben.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

    strasse     strasse$

    plz              plz

    ort              ort$

DbEnd

anr$            = "Sehr geehrte Damen und Herren"

name$       = "Müller GmbH & Co KG"

vorname$ = ""

strasse$    = "Sowieso-Straße 25"

plz                = 1313

ort$              = "Irgendwo"

ScSuchen 1 "name" name$    ! Suchen

Wenn &dbstatus = 0 Dann

    "Den Datensatz gibts aber schon!"

Sonst

    DbErzeugen 1

Wend

DbZu 1

Ende

Querverweis

Haupt-Index

Befehls-Index

DBLESEN

DBSCHREIBEN

DBLOESCHEN

&DBSTATUS


DBFILTER
DBFILTER  id  flag  anzahl  var$

Mit diesem Befehl ist eine sequentielle Suche nach verknüpften Suchkriterien möglich.  Im Unterschied zum Befehl DBSUCHEN, der nur ein Suchkriterium erlaubt, können hier mehrere Suchkriterien kombiniert werden.

Im Unterschied zu dem Befehl SCSUCHEN, der gezielt nur den gewünschten Satz liest, geht der Befehl DBFILTER alle Datensätze nacheinander durch und überprüft, ob der gesuchte Begriff im Datensatz enthalten ist.

Diese Methode ist zwar wesentlich langsamer als der Zugriff über den Befehl SCSUCHEN, bietet aber den Vorteil, daß unabhängig von Groß- und Kleinschreibung gesucht werden kann. Außerdem ist es möglich, nur nach Teilbegriffen zu suchen. Man kann sich z.B. alle Datensätze anzeigen lassen, in denen ein Ortsname vorkommt, in dem die Zeichenkette 'hausen' enthalten ist.

Über die Systemfunktion &DBSTATUS kann abgefragt werden, ob die Funktion erfolgreich durchgeführt wurde (0 - Begriff gefunden, 1 - Begriff nicht gefunden). Wurde der Begriff gefunden, dann steht der Datenbankzeiger auf dem betreffenden Datensatz. Der Datensatz kann dann mit dem Befehl DBLESEN eingelesen werden.

Parameter

id	-  ID-Nummer der Datenbank

flag	-  Gibt an, ob mit der Suche am Anfang der Datenbank

    begonnen werden soll, oder ob ab dem aktuellen

    Datensatz fortgefahren werden soll.

       0 - ab Anfang beginnen

       1 - ab aktuellem Datensatz

anzahl	-  Anzahl der Suchbegriffe

var$	-  Name einer indizierten Stringvariable, die beginnend

   die beginnend mit dem Index 1 die Suchkriterien ent-

   enthält.

Den Aufbau der einzelnen Strings, welche die Suchkriterien spezifizieren, entnehmen Sie bitte dem Hilfetext zu dem Befehl DBSUCHEN.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

    strasse     strasse$

    plz              plz

    ort              ort$

DbEnd

flt$[1] = "name  /u  {müller}"

flt$[2] = "strasse  {$76}"

! Wir suchen jetzt alle Müllers, die in der

! Hausnummer 76 wohnen.

DbFilter 1 0 2 flt$  ! ersten Satz suchen

Wenn &dbstatus = 0 Dann

    "Gefunden!"

    DbLesen 1  ! Satz einlesen

Sonst

    "Nicht gefunden!"

Wend

DbFilter 1 1 2 flt$  ! zweiten Satz suchen

     .

     .

Querverweis

Haupt-Index

Befehls-Index

DBSUCHEN

&DBSTATUS


DBLESEN
DBLESEN  id

Mit diesem Befehl wird der aktuelle Datensatz (auf den der Datenbankzeiger zeigt) aus der Datenbank gelesen, die unter der ID-Nummer 'id' eröffnet wurde. Die Feldinhalte des Datensatzes werden dabei in die mit DBAUF zugeordneten Variablen übertragen.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden sequentiell vorwärts gelesen und nach-

!  einander angezeigt.

DbAnfang 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$   "  Name   : "name$   "  Vorname: "vname$

    Warte

    DbVorwaerts 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBSCHREIBEN

DBERZEUGEN

DBLOESCHEN

DBSCHREIBEN

&DBSTATUS


DBLOESCHEN
DBLOESCHEN  id

Mit diesem Befehl wird der aktuelle Datensatz als gelöscht markiert. Der Datensatz befindet sich danach noch in der Datenbank, kann aber nicht mehr gelesen werden.

Um gelöschte Datensätze physikalisch aus der Datenbank zu entfernen, muß in dem Programm 'dbtool.exe' der Menüpunkt 'Reorg. einer Datenbank' aufgerufen werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

    strasse     strasse$

    plz              plz

    ort               ort$

DbEnd

name$ = "Müller GmbH & Co KG"

ScSuchen 1 "name" name$  ! Auf den Datensatz positionieren.

Wenn &dbstatus = 0 Dann

    DbLoeschen 1   ! Weg damit.

Sonst

    "Den Datensatz gibts nicht!"

Wend

DbZu 1

Ende

Querverweis

Haupt-Index

Befehls-Index

DBLESEN

DBSCHREIBEN

DBERZEUGEN

&DBSTATUS


DBREORG
DBREORG  "........"

Dieser Befehl reorganisiert eine Datenbank, d.h. als gelöscht markierte Datensätze und Schlüsselbegriffe werden physikalisch aus der Datenbank entfernt.

Die Dateien der Datenbank werden dadurch kleiner. Außerdem werden die Zugriffszeiten  auf einzelne Datensätze optimiert. Bei großen Datenbeständen von einigen tausend Datensätzen kann dieser Prozeß einige Zeit in Anspruch nehmen.

Dem Befehl wird der Name der zu bearbeitenden Datenbank als Parameter übergeben.  Ist diese Datenbank zu dem Zeitpunkt zur Bearbeitung eröffnet, wird sie vor der Reorganisation der Daten automatisch geschlossen.

ACHTUNG!!! Im Netzwerkbetrieb sollte darauf geachtet werden, daß die Datenbank zum Zeitpunkt der Reorganisation nicht von anderen Arbeitsplätzen aus bearbeitet wird, da dies zu einem inkonsistenen Zustand der Datenbank, sowie des Netzwerks führen kann.

Beispiel

DbReorg "adressen"  ! Datenbank reorganisieren

Querverweis

Haupt-Index

Befehls-Index


DBSCHLUSS
DBSCHLUSS  id

Dieser Befehl positioniert den Datenbankzeiger auf den letzten Datensatz in der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde. Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden sequentiell rückwärts gelesen und

!  nacheinander angezeigt.

DbSchluss 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$   "  Name   : "name$   "  Vorname: "vname$

    Warte

    DbZurueck 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBANFANG

DBVORWAERTS

DBZURUECK

&DBSTATUS


DBSCHREIBEN
DBSCHREIBEN  id

Mit diesem Befehl werden die Inhalte der Variablen, die einer Datenbank mit dem Befehl DBAUF zugeorndet wurden, in den aktuellen Datensatz übertragen und nachfolgend in die Datenbank geschrieben.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

    strasse     strasse$

    plz              plz

    ort              ort$

DbEnd

anr$     = "Sehr geehrte Damen und Herren"

name$    = "Müller GmbH & Co KG"

vorname$ = ""

strasse$ = "Sowieso-Straße 25"

plz      = 1313

ort$     = "Irgendwo"

ScSuchen 1 "name" name$   ! Auf den Datensatz positionieren.

Wenn &dbstatus = 0 Dann

    DbSchreiben 1

Sonst

    "Den Datensatz gibts nicht!"

Wend

DbZu 1

Ende

Querverweis

Haupt-Index

Befehls-Index

DBLESEN

DBERZEUGEN

DBLOESCHEN

&DBSTATUS


DBSETZEN
DBSETZEN  id  var

Dieser Befehl setzt den Datenbankzeiger der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde, auf einen neuen Wert. Der Wert, welcher dem Datenbankzeiger zugewiesen werden soll, muß zuvor in der numerischen Variable 'var' abgelegt werden.

Auf diese Weise kann eine Datensatzposition, die zuvor mit dem Befehl DBADRESSE gespeichert wurde, wiederhergestellt werden. Der Datensatz kann dann mit dem Befehl DBLESEN eingelesen werden.

Beispiel

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

       .

       .

DbAdresse 1 dba    ! Aktuelle Datenbankadresse zwischenspeichern.

       .

       .

DbSetzen 1 dba       ! Gespeicherte Datenbankadresse wiederherstellen.

DbLesen 1                 ! Datensatz lesen.

       .

       .

Querverweis

Haupt-Index

Befehls-Index

DBADRESSE

DBANZAHL

&DBSTATUS


DBSUCHEN
DBSUCHEN  id  flag  "........"

Dieser Befehl bewirkt eine sequentielle Suche in einer Datenbank nach einem bestimmten Begriff oder Teilbegriff.

Im Unterschied zu dem Befehl SCSUCHEN, der gezielt nur den gewünschten Satz liest, geht der Befehl DBSUCHEN alle Datensätze nacheinander durch und überprüft, ob der gesuchte Begriff im Datensatz enthalten ist.

Diese Methode ist zwar wesentlich langsamer als der Zugriff über den Befehl SCSUCHEN, bietet aber den Vorteil, daß unabhängig von Groß- und Kleinschreibung gesucht werden kann. Außerdem ist es möglich, nur nach Teilbegriffen zu suchen. Man kann sich z.B. alle Datensätze anzeigen lassen, in denen ein Ortsname vorkommt, in dem die Zeichenkette 'hausen' enthalten ist.

Über die Systemfunktion &DBSTATUS kann abgefragt werden, ob die Funktion erfolgreich durchgeführt wurde (0 - Begriff gefunden, 1 - Begriff nicht gefunden). Wurde der Begriff gefunden, dann steht der Datenbankzeiger auf dem betreffenden Datensatz. Der Datensatz kann dann mit dem Befehl DBLESEN eingelesen werden.

Folgende Parameter werden dem Befehl DBSUCHEN übergeben:

id	-  ID-Nummer der Datenbank

flag	-  Gibt an, ob mit der Suche am Anfang

   der Datenbank begonnen werden soll,

   oder ob ab dem aktuellen Datensatz

   fortgefahren werden soll.

     0 - ab Anfang beginnen

     1 - ab aktuellem Datensatz

"...."	- Eine Zeichenkette, welche die Spezi-

  fikation des Feldes und des zu

  suchenden Begriffs enthält.

Die Zeichenkette, die als dritter Parameter angegeben wird, muß folgendermaßen aufgebaut sein:

Zuerst muß der Name des Feldes angegeben werden, innerhalb dessen gesucht werden soll. Dann kann optional der Parameter '/u' angegeben werden. Das bedeutet, daß bei der Suche die Groß- und Kleinschreibung ignoriert werden soll.

Zuletzt folgt in geschweifte Klammern {...} eingeschlossen, der Suchbegriff. Innerhalb des Suchbegriffs können noch sogenannte 'Wildcards' angegeben werden, mit denen nach Teilbegriffen gesucht werden kann. Wildcards werden durch das Dollarzeichen gekennzeichnet.

Folgende Kombinationen sind möglich:

{$text}	- Suche nach Teilstring rechts

{text$}	- Suche nach Teilstring links

{$text$}	- Suche nach Teilstring an beliebiger Position.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

    strasse     strasse$

    plz              plz

    ort              ort$

DbEnd

DbSuchen 1 0 "name  /u  {müller}"

! Suche nach dem ersten Datensatz, der im Feld

! 'name' den Wert 'müller' enthält.

DbSuchen 1 0 "ort  /u  {$hausen}"

! Suche nach dem ersten Datensatz, der einen

! Ortsnamen hat, der rechts die Zeichenkette

! 'hausen' enthält. Der Begriff 'Entenhausen'

! wäre z.B. gültig und würde gefunden werden.

DbSuchen 1 0 "firma  {Soft$}"

! Suche nach allen Firmen, die mit 'Soft' an-

! fangen (z.B. Software-Entwicklung Maier).

DbSuchen 1 0 "tel  {$99$}"

! Suche nach allen Telefonnummern, welche die

! Ziffern '99' an beliebiger Stelle enthalten.

Querverweis

Haupt-Index

Befehls-Index

DBFILTER

&DBSTATUS


DBVORWAERTS
DBVORWAERTS  id

Dieser Befehl positioniert den Datenbankzeiger auf den sequentiell nächsten Datensatz in der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde. Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden sequentiell vorwärts gelesen und nach-

!  einander angezeigt.

DbAnfang 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$   "  Name   : "name$   "  Vorname: "vname$

    Warte

    DbVorwaerts 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBANFANG

DBSCHLUSS

DBZURUECK

&DBSTATUS


DBZU
DBZU  id

Der Befehl DBZU schließt eine Datenbank wieder, die zuvor mit der ID-Nummer 'id' eröffnet wurde.

Querverweis

Haupt-Index

Befehls-Index

DBAUF

DBEND

&DBSTATUS


DBZURUECK
DBZURUECK  id

Dieser Befehl positioniert den Datenbankzeiger auf den sequentiell vorigen Datensatz in der Datenbank, die mit der ID-Nummer 'id' eröffnet wurde. Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbutil.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden sequentiell rückwärts gelesen und

!  nacheinander angezeigt.

DbSchluss 1

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$   "  Name   : "name$   "  Vorname: "vname$

    Warte

    DbZurueck 1

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1         ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

DBANFANG

DBVORWAERTS

DBSCHLUSS

&DBSTATUS


DEBUG
DEBUG  par

Dieser Befehl schaltet das Laufzeitsystem des Autorensystems in den sogenannten Debug-Modus. In diesem Modus kann durch Drücken der Tastenkombination STRG-D der Programmablauf angehalten werden, wobei eine Informationsbox aufgeblendet wird.

In dieser Box wird der Name des aktiven Moduls, sowie der Befehl, der gerade abgearbeitet wird, angezeigt.

Falls eine Variablenliste (Menü 'Optionen', Menüpunkt 'Variablenliste erzeugen') zu dem Programm dazugelinkt wurde , können außerdem die Variableninhalte abgefragt und verändert werden.

Im Feld Variablenname kann man sich durch Drücken der Taste F8 außerdem eine Liste aller Variablen anzeigen lassen.

Des weiteren kann im Debug-Modus mit der Taste STRG-V ein Fenster zur Bearbeitung von Videodateien, die Anweisungen für einen Video/Audio-Treiber enthalten, eröffnet werden.

Folgende Werte kann der Parameter Par annehmen:

  0 - Debug-Modus ausschalten

  1 - Debug-Modus einschalten

Der Befehl DEBUG ist für das Testen von Lernprogrammen während der Entwicklungsphase gedacht. Nach Fertigstellung eines Programms sollte er aus dem Programm wieder entfernt werden.

Beispiel

! Hier kommt Programmtext.

Debug 1  ! Debug-Modus ist jetzt eingeschaltet.

! Noch mehr Programmtext.

Debug 0  ! Debug-Modus wird ausgeschaltet.

Querverweis

Haupt-Index

Befehls-Index


DGSTOP

Dieser Befehl schaltet eine laufende Digitaluhr im aktuellen Fenster wieder ab. Ist im aktiven Fenster keine Digitalguhr definiert, bewirkt dieser Befehl nichts.

Querverweis

Haupt-Index

Befehls-Index

DGUHR


DGUHR
DGUHR  x  y  "##:##:##"

Dieser Befehl stellt eine mitlaufende Digitaluhr im aktuellen Bildschirmfenster dar.

Parameter

x/y                -  Koordinaten der Uhr

"##:##:##"  -  Formatstring

Eine laufende Analoguhr kann durch den Befehl DGSTOP wieder abgeschaltet werden.

Querverweis

Haupt-Index

Befehls-Index

ANUHR

DGSTOP


DIAGRAMM
DIAGRAMM  anzahl  xy  flag

Dieser Befehl zeichnet ein Diagramm (eine Reihe verbundener Punkte in einem zuvor gezeichneten Koordinatensystem).

Vor Einsatz dieses Befehles muß (!!!) mit den Befehlen XKSYS und YKSYS ein Koordinatensystem gezeichnet werden.

Der Befehl DIAGRAMM nimmt mit seinen Werten Bezug auf die Wertebereiche, die in den Befehlen XKSYS und YKSYS mit den Parametern Startwert und Endwert festgelegt wurden.

Zum Zeichnen des Diagramms werden die Einstellungen verwendet, die zuvor mit dem Befehl STIFT vorgenommen wurden.

Parameter

anzahl  -  Anzahl der Koordinatenpaare.

xy           -  Indizierte Variable, die beginnend mit Index 1 alle

                   Koordinatenpaare des Diagramms enthält.

flag        -  Gibt an, ob an jedem Verbindungspunkt ein Kreuz als

                   Markierung eingezeichnet werden soll. Gleichzeitig

                   legt dieses Flag auch die Größe des Kreuzes fest.

                     0  -  kein Kreuz einzeichnen.

                     1  -  Länge  =  2 Pixel.

                     2  -  Länge  =  4 Pixel.

                                  .

                                  .

                     n  -  Länge  =  n * 2 Pixel.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

Stift 2 1 2

KsDef 150 370 1 1 1 1 4

XkSys 500 -55 205 10 20 "X-Achse"

YkSys 400 -25 105 10 20 "Y-Achse"

xy[1]   = 0         xy[2]  =  80

xy[3]   = 30       xy[4]  =  40

xy[5]   = 60       xy[6]  =  90

xy[7]   = 90       xy[8]  =  10

xy[9]   = 130    xy[10] = 60

xy[11] = 170    xy[12] = 30

Stift 1 2 0

Diagramm 6 xy 4

Warte

Querverweis

Haupt-Index

Befehls-Index

XKSYS

YKSYS

BALKEN

KUCHEN


DLLAUFRUF
DLLAUFRUF  id  ".........."  var/var$

Mit dem Befehl DLLAUFRUF kann eine Funktion in einer Dynamic-Link-Library (DLL) aufgerufen werden. Die DLL muß zuvor mit dem Befehl DLLLADEN in den Speicher geladen worden sein.

Auf den Aufbau und die Programmierung von Dynamic-Link-Librariers wird im Abschnitt DLL-Programmierung im Kapitel Programmieren mit Juggler für Windows näher eingegangen.

Parameter

id	-  ID-Nummer der DLL (1 - 10).

".........."	-  Zeichenkette, die den Funktionsnamen und optionale

   Parameter enthält.

var/var$	-  Variable für Rückgabewerte der DLL-Funktion.

   Kann wahlweise numerisch oder alphanumerisch sein.

Beispiel

FenAuf 1 0 0 &breite &hoehe 2

"Svar = "svar$

"Nvar = "nvar

""

DllLaden 1 "t1dll.dll"

DllAufruf 1 "DllStrEntryFunction /i 45.48 abc" svar$

"DllStatus = "&DllStatus[1]

DllAufruf 1 "DllNumEntryFunction 25 25 400 300" nvar

"DllStatus = "&DllStatus[1]

""

"Svar = "svar$

"Nvar = "nvar

Warte

DllFrei 1

Querverweis

Haupt-Index

Befehls-Index

DLLFREI

DLLLADEN

&DLLSTATUS


DLLFREI
DLLFREI  id

Diese Funktion entfernt eine Dynamic-Link-Library, die zuvor mit dem Befehl DLLLADEN unter der angegebenen ID-Nummer geladen wurde, wieder aus dem Arbeitsspeicher.

Beispiel

FenAuf 1 0 0 &breite &hoehe 2

"Svar = "svar$

"Nvar = "nvar

""

DllLaden 1 "t1dll.dll"

DllAufruf 1 "DllStrEntryFunction /i 45.48 abc" svar$

"DllStatus = "&DllStatus[1]

DllAufruf 1 "DllNumEntryFunction 25 25 400 300" nvar

"DllStatus = "&DllStatus[1]

""

"Svar = "svar$

"Nvar = "nvar

Warte

DllFrei 1

Querverweis

Haupt-Index

Befehls-Index

DLLAUFRUF

DLLLADEN

&DLLSTATUS


DLLLADEN
DLLLADEN  id  datei$

Dieser Befehl lädt eine Dynamic-Link-Library (DLL) in den Arbeitsspeicher. Eine derartige DLL enthält Funktionen, die mit einer Hochsprache wie C, C++ oder Pascal erstellt wurden. Diese Funktionen können nach dem Laden einer DLL mit dem Befehl DLLAUFRUF aufgerufen werden.

Auf den Aufbau und die Programmierung von Dynamic-Link-Librariers wird im Abschnitt DLL-Programmierung im Kapitel Programmieren mit Juggler für Windows näher eingegangen.

Parameter

id	-  ID-Nummer der DLL (1 - 10).

datei$	-  Dateiname der DLL.

Beispiel

FenAuf 1 0 0 &breite &hoehe 2

"Svar = "svar$

"Nvar = "nvar

""

DllLaden 1 "t1dll.dll"

DllAufruf 1 "DllStrEntryFunction /i 45.48 abc" svar$

"DllStatus = "&DllStatus[1]

DllAufruf 1 "DllNumEntryFunction 25 25 400 300" nvar

"DllStatus = "&DllStatus[1]

""

"Svar = "svar$

"Nvar = "nvar

Warte

DllFrei 1

Querverweis

Haupt-Index

Befehls-Index

DLLAUFRUF

DLLFREI

&DLLSTATUS


DRKABBRUCH

Dieser Befehl bricht eine laufende Druckausgabe vorzeitig ab. Es wird kein Seitenvorschub erzeugt. Es ist allerdings möglich, daß noch Daten im Druckpuffer enthalten sind.

Querverweis

Haupt-Index

Befehls-Index

DRKAUF

DRKSTART

DRKABBRUCH

DRKZU


DRKAUF

Nach Aufruf dieses Befehls werden alle Text- und Grafikausgaben auf einen angeschlossenen Drucker umgeleitet. Die Syntax der Ausgabebefehle bleibt gleich.

Es ist darauf zu achten, daß die Koordinatenangaben bei einer Ausgabe auf einen Drucker nicht als Punktkoordinaten sondern in zehntel Millimeter interpretiert werden. Der Befehl 'Kreis 1000 1000 500' z.B. zeichnet einen Kreis mit einem Radius von 5 cm an einen Punkt, der 10 cm vom oberen und 10 cm vom linken Papierrand entfernt ist.

Diese auflösungsunabhängige Interpretation der Koordinaten ist erforderlich, da das Auflösungsvermögen von Druckern sehr stark voneinander abweichen kann. Ein Drucker mit 600 dpi (dots per inch) hat eine viermal höhere Auflösung als ein Drucker der nur 300 dpi leistet.

Alle Ausgaben werden solange auf den Drucker umgeleitet, bis der Befehl DRKSTART oder DRKZU aufgerufen wird.

Der Befehl DRKSTART beendet die Ausgabe auf dem aktuellen Blatt Papier und erzeugt einen Papiervorschub. Danach werden alle Ausgaben auf einem neuen Blatt ausgegeben.

Der Befehl DRKZU beendet die Ausgabe auf den Drucker. Falls sich noch Text- oder Grafikausgaben im Druckpuffer befinden, werden diese bei Aufruf von DRKZU ausgegeben. Wird also nur eine Seite bedruckt, dann muß DRKSTART nicht aufgerufen werden.

Achtung! Während der Ausgabe auf einen Drucker sind Ausgaben in Bildschirmfenster nicht möglich. Ebensowenig kann während der Druckausgabe ein Fenster geöffnet, geschlossen oder aktiviert werden. Eine Ereignisverarbeitung mit den Befehlen EREIGNIS, WARTE oder MAXIMAL ist ebenfalls nicht möglich.

Eine Druckausgabe muß immer in der folgenden Reihenfolge erfolgen:

1.  Drucker öffnen (DRKAUF)

2.  Erstes Blatt bedrucken

3.  Seitenvorschub (DRKSTART)

4.  Zweites Blatt bedrucken

5.  Seitenvorschub (DRKSTART)

.

.

6.  n-tes Blatt bedrucken

7.  Drucker schließen (DRKZU)

Druckvorschau

Mittels des Befehls DRKVORSCHAU, der anstelle des Befehls DRKAUF verwendet werden kann, wird vom Autorensystem eine Druckvorschau implementiert. Die Druckausgaben werden in dem Fall nicht auf den Drucker geleitet, sondern in eine Dialogbox, in der die Ausgaben maßstabsgerecht angezeigt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DrkAuf

xm = &xmax - 100

ym = &ymax - 500

Grund 15  Farbe 0

Txdef 4 40 0 0

Txattrib "w1-c-u-k-o-s+t"

Cursor 4 2

"

Wir freuen uns, daß Sie sich entschieden haben, mit dem Autorensystem Juggler für Windows zu arbeiten.

Juggler ist eine moderne und bedienungsfreundliche Autorensprache, die es Ihnen erlaubt, die Möglich-

keiten Ihres Computers zur Erstellung von Lern- und Präsentationsprogrammen voll auszunutzen.

Ob Sie ein interaktives Lernprogramm erstellen oder eine umfangreiche Datenbank-Applikation mit einer

ansprechenden Oberfläche versehen wollen, Juggler ist Ihr leistungsfähiges Werkzeug dazu. Im folgenden

sind die Leistungen dieses Systems kurz aufgelistet:"

Rechteck 0 0 xm ym

Schleife i = 1 Bis 40

  Zufall 0 xm x1

  Zufall 500 ym y1

  Zufall 0 xm x2

  Zufall 500 ym y2

  Linie x1 y1 x2 y2

Send

DrkZu

"Xm = "xm

"Ym = "ym

Warte

Querverweis

Haupt-Index

Befehls-Index

DRKVORSCHAU

DRKSTART

DRKABBRUCH

DRKZU


DRKSTART

Dieser Befehl bewirkt den Ausdruck aller Text- und Grafikausgaben, die auf einen Drucker, der zuvor mit DRKAUF eröffnet wurde, ausgegeben wurden. Nach dem Ausdruck wird ein Seitenvorschub erzeugt, so daß alle folgenden Ausgaben auf eine Seite gedruckt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DrkAuf

xm = &xmax - 100

ym = &ymax - 500

Rechteck 0 0 xm ym

Schleife i = 1 Bis 50

  Zufall 0 xm x1

  Zufall 0 ym y1

  Zufall 0 xm x2

  Zufall 0 ym y2

  Linie x1 y1 x2 y2

Send

DrkZu

"Drucken beendet!"

Warte

Querverweis

Haupt-Index

Befehls-Index

DRKAUF

DRKVORSCHAU

DRKABBRUCH

DRKZU


DRKVORSCHAU

Nach Aufruf dieses Befehls werden alle Text- und Grafikausgaben in eine Dialogbox umgeleitet, die einen Drucker nachbildet. Auf diese Weise kann man sich während der Entwicklung eines Lernprogramms einen Eindruck vom Aussehen einer Druckseite machen, ohne dabei jedesmal ein Blatt Papier zu verschwenden. Sobald das Aussehen und die Proportionen der Druckausgabe korrekt sind, kann der Befehl DRKVORSCHAU durch den Befehl DRKAUF ersetzt werden.

Es ist darauf zu achten, daß die Koordinatenangaben bei einer Ausgabe auf einen Drucker nicht als Punktkoordinaten sondern in zehntel Millimeter interpretiert werden. Der Befehl 'Kreis 1000 1000 500' z.B. zeichnet einen Kreis mit einem Radius von 5 cm an einen Punkt, der 10 cm vom oberen und 10 cm vom linken Papierrand entfernt ist.

Diese auflösungsunabhängige Interpretation der Koordinaten ist erforderlich, da das Auflösungsvermögen von Druckern sehr stark voneinander abweichen kann. Ein Drucker mit 600 dpi (dots per inch) hat eine viermal höhere Auflösung als ein Drucker der nur 300 dpi leistet.

Alle Ausgaben werden solange in die Vorschau-Dialogbox umgeleitet, bis der Befehl DRKSTART oder DRKZU aufgerufen wird.

Der Befehl DRKSTART beendet die Ausgabe auf dem aktuellen Blatt Papier und erzeugt einen Papiervorschub. Danach werden alle Ausgaben auf einem neuen Blatt ausgegeben.

Der Befehl DRKZU beendet die Ausgabe in die Vorschau-Dialogbox. Falls sich noch Text- oder Grafikausgaben im Druckpuffer befinden, werden diese bei Aufruf von DRKZU ausgegeben. Wird also nur eine Seite bedruckt, dann muß DRKSTART nicht aufgerufen werden.

Eine Vorschau-Box kann maximal 10 Druckseiten aufnehmen.

Achtung! Während der Ausgabe auf einen Drucker sind Ausgaben in Bildschirmfenster nicht möglich. Ebensowenig kann während der Druckausgabe ein Fenster geöffnet, geschlossen oder aktiviert werden. Eine Ereignisverarbeitung mit den Befehlen EREIGNIS, WARTE oder MAXIMAL ist ebenfalls nicht möglich.

Eine Druckausgabe muß immer in der folgenden Reihenfolge erfolgen:

1.  Dialogbox öffnen (DRKVORSCHAU)

2.  Erstes Blatt bedrucken

3.  Seitenvorschub (DRKSTART)

4.  Zweites Blatt bedrucken

5.  Seitenvorschub (DRKSTART)

.

.

6.  n-tes Blatt bedrucken

7.  Drucker schließen (DRKZU)

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DrkVorschau

xm = &xmax - 100

ym = &ymax - 500

Grund 15  Farbe 0

Txdef 4 40 0 0

Txattrib "w1-c-u-k-o-s+t"

Cursor 4 2

"

Wir freuen uns, daß Sie sich entschieden haben, mit dem Autorensystem Juggler für Windows zu arbeiten.

Juggler ist eine moderne und bedienungsfreundliche Autorensprache, die es Ihnen erlaubt, die Möglich-

keiten Ihres Computers zur Erstellung von Lern- und Präsentationsprogrammen voll auszunutzen.

Ob Sie ein interaktives Lernprogramm erstellen oder eine umfangreiche Datenbank-Applikation mit einer

ansprechenden Oberfläche versehen wollen, Juggler ist Ihr leistungsfähiges Werkzeug dazu. Im folgenden

sind die Leistungen dieses Systems kurz aufgelistet:"

Rechteck 0 0 xm ym

Schleife i = 1 Bis 40

  Zufall 0 xm x1

  Zufall 500 ym y1

  Zufall 0 xm x2

  Zufall 500 ym y2

  Linie x1 y1 x2 y2

Send

DrkZu

"Xm = "xm

"Ym = "ym

Warte

Querverweis

Haupt-Index

Befehls-Index

DRKAUF

DRKSTART

DRKABBRUCH

DRKZU


DRKZU

Dieser Befehl beendet den Ausdruck von Text und Grafik auf einen Drucker, der zuvor mit DRKAUF eröffnet wurde. Befinden sich noch Ausgaben im Druckpuffer, dann werden diese auf dem aktuellen Blatt Papier ausgegeben. Danach wird ein Seitenvorschub erzeugt. Im Anschluß wird der Drucker geschlossen. Alle Ausgaben erfolgen dann wieder im aktuellen Bildschirmfenster.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DrkAuf

xm = &xmax - 100

ym = &ymax - 500

Rechteck 0 0 xm ym

Schleife i = 1 Bis 50

  Zufall 0 xm x1

  Zufall 0 ym y1

  Zufall 0 xm x2

  Zufall 0 ym y2

  Linie x1 y1 x2 y2

Send

DrkZu

"Drucken beendet!"

Warte

Querverweis

Haupt-Index

Befehls-Index

DRKAUF

DRKVORSCHAU

DRKSTART

DRKABBRUCH


EINGABE
EINGABE  id  "........"  =  var/var$

Dieser Befehl plaziert ein Eingabefeld an der aktuellen Cursorposition. Sie können bis zu 50 Eingabefelder in einem Fenster plazieren. Kontrolliert werden die Eingabefelder durch den Befehl EREIGNIS.

Der Parameter id identifziert das Eingabefeld eindeutig.

Nach der ID-Nummer folgt eine Zeichenkette, die in Anführungszeichen eingeschlossen ist. Diese Zeichenkette enthält Anweisungen für die Formatierung der Eingabe (siehe unten).

Die maximale Zeichenlänge, sowie die Breite und Höhe des Eingaberechtecks werden automatisch berechnet. Die berechneteten Werte können aber durch optionale Formatanweisunge überdeckt werden.

Folgende Formatanweisungen sind zulässig:

Lxx	-  Maximale Zeichenzahl für Eingabe (optional)

Wxx	-  Breite in Pixeln des Eingabefeldes (optional)

Hxx	-  Höhe in Pixeln des Eingabefeldes (optional)

Bxx	-  Rahmen für Eingabefeld (optional)

       -1	-  kein Rahmen

        0	-  Standardrahmen

1 - 18	-  3D-Rahmen (äquivalent zu den Rahmentypen

    des Befehls RAHMEN). Bei Verwend-

    dung eines 3D-Rahmens sollte der Fensterhinter-

    grund auf Hellgrau gestellt sein (FENGRUND 1 1 8 8).

Folgende Formatanweisungen sind zusätzlich für numerische Eingaben zulässig:

-               - Eingabe von Minuszeichen erlaubt.

####.##  -  Beschränkung der Vor- und Nachkommastellen (hier

                    wäre eine Eingabe von vier Vor- und zwei Nach-

                    kommastellen erlaubt.

Hinter der Formatanweisung steht ein Gleichzeichen, dem die Variable folgt, in welcher der eingegebene Wert gespeichert werden soll.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

TxDef 1 15 0 0

TxAttrib "w1-c-u-k-o-s+t"

Cursor 2 2  "Bitte geben Sie Ihren Namen ein: ";

Eingabe 1 "L20" = name$

Cursor 2 4  "Bitte geben Sie Ihr Alter ein:   ";

Eingabe 2 "##L5" = alter

StdSchalter 1 &x1[10] &y1[8] "OK"

Warte

Cursor 2 15  " Sie heißen "name$;  " und Sie sind "alter;  " Jahre alt."

Warte

Querverweis

Haupt-Index

Befehls-Index

WARTE

EREIGNIS


ELLIPSE
ELLIPSE  x  y  xrad  yrad

Dieser Befehl zeichnet im aktuellen Fenster eine Ellipse. Die Parameter x/y geben den Mittelpunkt der Ellipse an. Der Parameter xrad bezeichnet den Radius der Ellipse in X-Richtung. Der Parameter yrad bezeichnet den Radius der Ellipse in Y-Richtung.

Für das Zeichnen der Ellipse (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER

KREIS

BOGEN


ENDE

Dieser Befehl beendet die Bearbeitung eines Moduls und bewirkt einen Rückprung in das aufrufende Modul. Ist das aktuelle Modul das Modul START, dann wird das Lernprogramm beendet.

Das Autorensystem erzeugt bei der Compilierung eines Moduls am Schluß des Programmtextes grundsätzlich den Befehl ENDE. Wenn das Modul also komplett abgearbeitet wird, ist es nicht erforderlich, an den Schluß des Moduls den Befehl ENDE noch einmal explizit hinzuschreiben.

Soll ein Modul vorzeitig beendet werden, dann muß der Befehl an die entsprechende Position im Modul geschrieben werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 4  "{+t}Klicken Sie einen Schalter mit der Maus an."

Schalter 1 50 100 "Label-1"

Schalter 2 50 130 "Label-2"

Schalter 3 50 160 "Label-3"

Schalter 4 50 190 "Label-4"

Schalter 5 50 220 "Zurück"

.L1

Ereignis wnd type scc

Analyse scc

  :=1:  modul1

  :=2:  modul2

  :=3:  modul3

  :=4:  modul4

  :=5:  Ende

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

STOP


EREIGNIS
EREIGNIS  fenid  typ  scancode

Der Befehl EREIGNIS wartet auf eine Eingabe mittels der Tastatur oder der Maus. Der Aufbau eines Lernprogramms wird i.d.R. so sein, daß ein Fenster eröffnet wird und danach alle Grafiken, Texte und Bedienungselemente (Popup-Menüs, Schalter, Eingabefelder etc.) in dieses Fenster gezeichnet werden. Danach wird der Befehl EREIGNIS aufgerufen, der auf eine Aktion des Benutzers wartet. Sobald eine Taste angeschlagen oder eine Maustaste angeklickt wird, gibt der Befehl EREIGNIS in den als Parameter übergebenen Variablen alle relevanten Informationen über die Aktion (also das Ereignis) zurück. Mit dem Befehl ANALYSE können diese Informationen dann ausgewertet werden.

Parameter

fenid             -  ID-Nummer des Fensters, welches das Ereignis

                          ausgelöst hat. Da bei entsprechender Einstellung

                          der Fenster ein Wechsel zwischen verschiedenen

                          Fenstern möglich ist, muß immer die Information

                          zur Verfügung stehen, welches Fenster das Ereignis

                          ausgelöst hat.

typ                -  Typ des Ereignisses. Es sind folgende Ereignis-

                          formen möglich:

                            0  -  Eine Taste wurde gedrückt. Der Basiscode der

                                   Taste wird im Parameter SCANCODE abge-

                                    legt. Mit der Systemfunktion &TSTAT kann

                                    abgefragt werden, ob dabei eine Modfizierer-

                                    Taste (Shift, Strg, Alt) gedrückt wurde.

                            1  -  Eine Maustaste wurde gedrückt. Die genaue

                                    Position der Maus beim Anklicken kann mittels

                                    der Systemfunktionen &MX und &MY abgefragt

                                    werden. Mit der Systemfunktion &MT kann abge-

                                    fragt werden, welche Maustaste gedrückt wurde.

                                    Die Systemfunktion &MK liefert die Information,

                                    wie oft die Maustaste betätigt wurde.

                            2  -  Ein Schalter (erzeugt mit den Befehlen STDSCHALTER

                                    oder SCHALTER) wurde angeklickt. Die ID-Nummer

                                    des Schalters wird im Parameter SCANCODE abge-

                                    legt.

                            3  -  Ein Symbolfeld (erzeugt mit den Befehlen SYMFELD

                                    oder SYMINVERT) wurde angeklickt. Die ID-Nummer

                                    des Feldes wird im Parameter SCANCODE abge-

                                    legt.

                            4  -  Ein Hypertextfeld wurde angeklickt. Die ID-Nummer

                                    des Feldes wird im Parameter SCANCODE abge-

                                    legt. Der Text des Hypertextfeldes kann mittels der

                                    Systemvariablen STICHW$ abgefragt werden.

                            5  -  Ein Eintrag in einem Pulldown- oder Popup-Menü

                                    wurde angeklickt. Die ID-Nummer des Eintrags wird

                                    im Parameter SCANCODE abgelegt.

                            6  -  Ein Eintrag in einer Liste (erzeugt mit LISTAUF) wurde

                                    angeklickt. Die Position des Eintrags in der Liste wird

                                    im Parameter SCANCODE abgelegt. Der Text des

                                    Listeneintrags wird in der Systemvariablen STICHW$

                                    abgelegt.

                            7  -  reserviert

                            8  -  reserviert

                            9  -  reserviert

                          10  -  Ein Timeout (definiert mittels der Systemvariablen

                                    DAUER und TIMEOUT) wurde ausgelöst. Der In-

                                    halt der Variablen TIMEOUT wird im Paramater

                                    SCANCODE abgelegt.

                          11  -  Ein Fenster wurde durch einen Benutzer ge-

                                   schlossen. Die ID-Nummer des geschlossenen

                                    Fensters wird im Parameter FENID abgelegt.

scancode  -  Diese Variable enthält je nach Ereignistyp den Basiscode

                         einer Taste oder eine ID-Nummer (eines Schalters, Hyper-

                          textfeldes oder Menüeintrags).

Alle Informationen über das zuletzt aufgetretene Ereignis können auch über die folgenden Systemfunktionen abgefragt werden:

    &FENID              -  ID des Fensters, welches das Ereignis ausgelöst hat.

    &TYPE               -  Typ des Ereignisses

    &SCANCODE  -  Code oder ID des Elementes, welches das Ereignis ausgelöst hat.

    &TSTAT            -  Status der Modifizierer-Tasten (Shift, Strg, Alt).

    &MX                     -  X-Position der Maustaste bei einem Mausklick.

    &MY                     -  Y-Position der Maustaste bei einem Mausklick.

    &MT                     -  Gedrückte Maustaste.

    &MK                      -  Anzahl  der Mausklicks.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Grund 8

Hfarbe 2

Cursor 5 5

"Das menschliche @1[Herz] ist eines der

komplexesten menschlichen @2[Organe]. Es

sitzt im oberen Teil des @3[Thorax]."

Schalter 1 100 350 "OK"

Schalter 2 100 380 "Abbrechen"

.L1

Ereignis wnd type scc

Cursor 5 2

"                                                                                                     "

Cursor 5 2

Analyse type

  :=0:  "Taste "scc;  " wurde gedrückt."

  :=1:  "Position "&mx;  "/"&my;  " wurde mit der Maus angeklickt."

  :=2:  "Schalter "scc;  " wurde angklickt."

  :=3:

  :=4:  "Hypertextfeld "stichw$;  " wurde angeklickt."

  :=5:

  :=6:

  :=7:

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

WARTE

&FENID

&TYPE

&SCANCODE

&TSTAT

&MX

&MY

&MT

&MK

DAUER

TIMEOUT


ERRAUS

Der Befehl ERRAUS macht die Wirkung des Befehls ERREIN wieder rückgängig. Nach Aufruf dieses Befehls wird bei einem Systemfehler also nicht mehr das Modul FEHLER aufgerufen. Die Bearbeitung

eines Lernprogramms wird dann sofort mit einer Systemfehlermeldung abgebrochen.

Beispiel

Errein  ! Ab diesem Punkt wird bei einem Fehler das Modul

              ! FEHLER aufgerufen.

! Programmtext.

! Programmtext.

Erraus  ! Ab hier wird das Modul FEHLER bei Auftreten eines

               ! Programmfehlers nicht mehr aufgerufen.

Querverweis

Haupt-Index

Befehls-Index

ERREIN


ERREIN

Dieser Befehl bewirkt, daß das Laufzeitsystem des Autorensystems beim Auftreten eines Fehlers den Programmablauf nicht sofort abbricht, sondern zuvor noch ein Modul namens FEHLER aufruft. Dieses Modul muß vom Lernprogrammautoren erstellt werden.

In der Regel wird dies dazu dienen, ein Fenster auf dem Bildschirm zu eröffnen, in dem auf das Auftreten des Fehlers hingewiesen wird und dem Lernprogrammanwender Hinweise gegeben werden,

an wen er sich wegen des Fehlers wenden soll.

Nach Beendigung des Moduls FEHLER wird das Lernprogramm dann mit einer Systemfehlermeldung abgebrochen.

Beispiel

Modul START

Errein

var[3] = 0             ! Variable mit maximalem Index 3.

index = 5

var[index] = 17  ! Diese Konstruktion erzeugt einen Indizierungsfehler.

Modul FEHLER

FenTitel 5 "Laufzeit-Fehler"

FenDef 5 1 1 0 0 0

FenAuf 5 100 100 400 250 3

Cursor 5 2

"Im Lernprogramm ist der Fehler Nr. "&fehler; " aufgetreten!"

"Setzen Sie sich bitte mit folgender Adresse in Verbindung:

    LernSoft GmbH

    Irgendwostr. 13

    13 13 Werweißwo"

StdSchalter 1 150 180 "OK"

Warte

FenZu 5

Querverweis

Haupt-Index

Befehls-Index

ERRAUS


ERSETZE
ERSETZE  var1$  var2$  var3$

In der alphanumerischen Variablen var1$ werden alle Teilzeichenketten, die mit dem Inhalt der Variablen var2$ identisch sind, durch den Inhalt von var3$ ersetzt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var1$ = "Dies ist ein Text und es ist ein schöner Tag."

Ersetze var1$ "ist" "war"

"Ergebnis = "var1$    ! Var1$ enthält jetzt den folgenden Text:

                                         ! "Dies war ein Text und es war ein schöner

                                         !  Tag."

Warte

Querverweis

Haupt-Index

Befehls-Index

TEIL

GROSS

KLEIN


FARBE
FARBE  col

Mit diesem Befehl wird die Vordergrundfarbe für eine Textausgabe ("..........",  Text "..........") festgelegt. Der Parameter col gibt dabei den Farbwert an. Es sind Werte zwischen 0 und 15 zulässig. Folgende Farbwerte sind definiert:

                  0  -  Schwarz

                  1  -  Blau

                  2  -  Grün

                  3  -  Cyan

                  4  -  Rot

                  5  -  Magenta

                  6  -  Braun

                  7  -  Grau

                  8  -  Hellgrau

                  9  -  Hellblau

                10  -  Hellgrün

                11  -  Hellcyan

                12  -  Hellrot

                13  -  Hellmagenta

                14  -  Gelb

                15  -  Weiß

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

GRUND


FEHLER
FEHLER  typ  ".........."  var

Dieser Befehl gibt ein Fehlermeldung in einer kleinen Dialogbox aus. Dabei wird das Fehlerzeichen des Basis-Fenstersystems (z.B. ein kleines Stopschild unter Windows) im linken Teil des Fensters angezeigt. Daneben wird der Text ausgegeben, der dem Befehl als Parameter übergeben wurde. Im unteren Teil der Dialogbox werden Schalter zur Bedienung der Dialogbox plaziert. Welche Schalter dies sind (OK-Schalter, Ja/Nein-Schalter) wird über den Typ angegeben.

Parameter

typ         -  Gibt an, welche Schalterkombinationen im unteren

                   Teil der Dialogbox plaziert werden sollen.

                      0  -  OK-Schalter

                      1  -  OK-Schalter und Abbrechen-Schalter

                      2  -  Ja-Schalter und Nein-Schalter

                      3  -  Ja-Schalter, Nein-Schalter und Abbrechen-Schalter

                      4  -  Wiederholen-Schalter und Abbrechen-Schalter

".........."  -  Text, der in der Dialogbox als Fehlermeldung ausge-

                   gegeben werden soll.

var         -  In dieser Variablen wird abgelegt, welcher Schalter durch

                  den Benutzer angeklickt wurde.

                    -1  -  Abbrechen

                     0  -  Nein

                     1  -  Ja

                     2  -  OK

                     3  -  Wiederholen

                   Der Wert, der vor dem Aufruf der Dialogbox in dieser

                   Variablen steht, bestimmt außerdem, welcher Schalter

                   als Standardschalter (d.h. der Schalter, der auch durch

                   Betätigung der Eingabetaste ausgelöst wird) definiert

                   ist. Steht z.B. in dieser Variablen eine 1, dann wird der

                  Ja-Schalter als Standardschalter definiert.

Beispiel

FenTitel 1 "Schriftentest"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 0

ret = 1  ! Ja-Schalter ist Standardschalter

Fehler 2 "Oh je, ein Fehler ist aufgetreten. Sollen wir weitermachen?" ret

Analyse ret

  :=0:  "{+t}Schön, dann nicht"

  :=1:  "{+t}Und weiter gehts"

Aend

Warte

Wenn ret = 0 Dann Stop Wend

Querverweis

Haupt-Index

Befehls-Index

INFOMATION

WARNUNG

FRAGE


FENAKTIV
FENAKTIV  id

Nach Aufruf des Befehls FENAUF ist immer das gerade eröffnete Fenster aktiv, das vor allen anderen Fenstern liegt. Mit dem Befehl FENAKTIV können alle Ausgaben (Text, Grafik) in ein anderes Fenster umgeleitet werden. Es ist damit z.B. auch möglich, in ein weiter hinten stehendes Fenster zu schreiben, das teilweise oder auch ganz von anderen Fenstern verdeckt wird. Der Parameter id gibt dabei die Identifikationsnummer des Fensters an, das die Ausgaben erhalten soll.

Die Reihenfolge der Fenster wird dadurch nicht verändert. Soll das Fenster, das die Ausgaben erhalten soll, in den Vordergrund gebracht werden, muß zusätzlich der Befehl FENOBEN verwendet werden.

Querverweis

Haupt-Index

Befehls-Index


FENAUF
FENAUF  id  x  y  breite  hoehe  typ

Dieser Befehl ist einer der wichtigsten im Befehlssatz des Autorensystems. Der Befehl FENAUF ermöglicht es Ihnen, ein Fenster auf dem Bildschirm zu eröffnen, in das alle nachfolgenden Ausgaben (Text, Grafik) geschrieben werden.

Bevor irgendein Ausgabebefehl aufgerufen wird, muß zuvor mindestens ein Fenster eröffnet worden sein. Bei dem Versuch, eine Grafik oder einen Text auszugeben, ohne ein zuvor eröffnetes Fenster, wird der Ablauf des Lernprogramms vom Laufzeitsystem abgebrochen und eine Fehlermeldung ausgegeben.

Des weiteren muß als erstes Fenster immer das Fenster mit der ID-Nummer 1 (Hauptfenster) eröffnet werden. Dieses Fenster dient für alle Fenster, die im Verlauf des Lernprogramms eröffnet werden, als Vaterfenster, d.h. die nachfolgend geöffneten Fenster liegen immer vor dem Hauptfenster, sie können nicht hinter dieses Fenster gebracht werden. Des weiteren bewirkt ein Schließen des Hauptfensters das Beenden des Lernprogramms. Das Hauptfenster muß vom Typ 0, 1 oder 2 sein.

Parameter

id     -    ID-Nummer des Fensters (1 - 100). Diese

              Nummer identifiziert das Fenster eindeutig.

              Alle Fensterbefehle beginnen mit einer solchen

              ID-Nummer. Dadurch kann eindeutig festge-

              legt werden, auf welches Fenster die folgenden

              Operationen wirken sollen (z.B. Titel, Position,

              Dimensionen etc. verändern).

x      -     X-Koordinate der Fensterposition. Bei Fenstern

              vom Typ 0 und 1 bezieht sich dieser Wert auf die

              linke obere Ecke des Vaterfensters. Bei Fenstern

              vom Typ 1 und 2 bezieht sich der Wert auf die linke

              obere Ecke des Bildschirms

y      -    Y-Koordinate der Fensterposition. Bei Fenstern

              vom Typ 0 und 1 bezieht sich dieser Wert auf die

              linke obere Ecke des Vaterfensters. Bei Fenstern

              vom Typ 1 und 2 bezieht sich der Wert auf die linke

              obere Ecke des Bildschirms

breite    -    Breite des Fensters in Pixeln.

hoehe    -    Höhe des Fensters in Pixeln.

typ    -    Typ des Fensters.

                0  -  Einfaches Fenster ohne Rahmen. Wird in ein

                        zuvor eröffnetes Fenster als Kindfenster einge-

                        bettet. Die Fensterkoordinaten beziehen sich

                        auf die linke obere Ecke des Vaterfensters.

                1  -  Einfaches Fenster mit Rahmen. Wird in ein

                        zuvor eröffnetes Fenster als Kindfenster einge-

                        bettet. Die Fensterkoordinaten beziehen sich

                        auf die linke obere Ecke des Vaterfensters.

                2  -  Standardfenster. Die Fensterkoordinaten be-

                        ziehen sich auf die linke obere Ecke des Bild-

                        schirms. Dieses Fenster kann mit einem System-

                        menü, sowie Minimal- und Maximalschaltern

                        ausgestattet werden. Der Benutzer kann es mit

                        der Maus verschieben, in der Größe verändern

                        und auch schließen. Welche dieser Möglich-

                         keiten zugelassen werden soll, kann mittels des

                         Befehls FENDEF eingestellt werden.

                3  -  Dialogfenster. Die Fensterkoordinaten beziehen

                        sich auf die linke obere Ecke des Bildschirms.

                        In seiner Funktionalität ähnelt dieser Fenstertyp

                       dem Standardfenster. Dieser Fenstertyp ist aber

                        besonders für die Programmierung von Dialog-

                        fenstern geeignet.

Aufzeichnen der Ausgaben

Alle Ausgaben, die in ein Fenster gemacht werden, werden vom Autorensystem aufgezeichnet. Wird ein Fenster in der Größe verändert, verschoben oder von einer weiter hinten stehenden Position nach vorne gebracht, dann müssen Teile des Fensters oder auch das gesamte Fenster wiederhergestellt werden. Zu diesem Zweck werden die aufgezeichneten Ausgaben vom Laufzeitsystem erneut in das Fenster ausgegeben. Diese Methode der Aufzeichnung von Fensterinhalten ist sehr flexibel und benötigt nur wenig an Systemressourcen. Dennoch müssen einige Punkte dabei beachtet werden.

Wenn Sie z.B. sehr viele Grafikausgaben in ein Fenster schreiben, kann das Wiederherstellen eines Fensters etwas dauern. Sie schreiben z.B. 500 zufällig erzeugte Kreise in das Hauptfenster, legen ein anderes Fenster darüber und verschieben das neue Fenster danach. Bei der Programmierung sollte so etwas vermieden werden. Wenn Sie die Fenster statisch einstellen, d.h. die Fenster können nicht verschoben oder in der Größe verändert werden, dann ist ein Neuzeichnen i.d.R. (außer beim endgültigen Schließen eines Fensters) nicht nötig.

Eine weitere Situation, die vermieden werden sollte, ist folgende:

Sie wollen in einem bestimmten Bildschirmbereich Text durchblättern. Im unteren Teil des Fensters haben Sie Schalter für das Vor- und Zurückblättern des Textes definiert. Im oberen Teil des Fensters zeigen Sie einen Textblock an. Beim Blättern löschen Sie diesen Bereich mit einem RECHTECK-Befehl und geben danach neuen Text aus. Jede Textausgabe wird aufgezeichnet, d.h. wird ein Neuzeichnen des Fensters nötig, dann werden alle Ausgaben, die im oberen Bereich gemacht wurden, nacheinander abgespult. Wenn ein Lernprogramm-Anwender in diesem Bereich 50 mal hin- und hergeblättert hat, können Sie sich vorstellen, daß das etwas dauert.

Eine solche Situation kann vermieden werden, indem Sie die Textausgaben in ein Kindfenster leiten, das beim Weiterblättern mit dem Befehl FENLOESCHE gelöscht wird. Beim Löschen des Fensters werden auch die aufgezeichneten Ausgaben gelöscht.

Die beschriebene Problematik ergibt sich aus der generellen Funktionsweise grafisch orientierter Benutzeroberflächen und tritt in allen Programmiersprachen auf, die solche Systeme unterstützen. Durch eine entsprechend angepaßte Programmierung können die oben beschriebenen Probleme aber vermieden werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2  "{+t}Das hier ist das Hauptfenster."

FenGrund 2 1 14 14  ! Gelber Hintergrund

FenAuf 2 50 50 300 150 1

Cursor 2 2  "Das hier ist ein eingebettetes Kindfenster."

FenTitel 3 "Dialogfenster"

FenGrund 3 1 11 11  ! Hellblauer Hintergrund

FenDef 3 1 1 0 0 0

FenAuf 3 300 200 300 150 3

Cursor 2 2  "Das hier ist ein Dialog-Fenster."

Warte

Querverweis

Haupt-Index

Befehls-Index

FENTITEL

FENGRUND

FENDEF

FENZU


FENDEF
FENDEF  id  par1  par2  par3  par4  par5

Mit dem Befehl FENDEF kann eingestellt werden, über welche Möglichkeiten ein Fenster verfügt. Über die fünf Parameter dieses Befehls wird definiert, ob ein Fenster vom Benutzer geschlossen, verschoben oder in der Größe verändert werden kann. Des weiteren kann ein Fenster mit einem Minimal und/oder Maximal-Schalter ausgestattet werden.

Die Einstellungen durch diesen Befehl wirken nur auf Fenster vom Typ 2 oder 3 (Standardfenster oder Dialogfenster). FENDEF muß grundsätzlich vor dem Befehl FENAUF aufgerufen werden. Eine Änderung der Fensterparameter nach dem Eröffnen ist nicht möglich.

Wird dieser Befehl vor dem Eröffnen eines Fensters nicht aufgerufen, dann sind alle Möglichkeiten aktiv, d.h. das Fenster kann geschlossen, verschoben, verändert, minimiert und maximiert werden.

Parameter

Jeder Parameter kann einen Wert von 0 oder 1 annehmen. 0 bedeutet Nein, 1 bedeutet Ja.

id       -  ID-Nummer des Fensters.

par1  -  Fenster kann vom Benutzer geschlossen werden (Ja/Nein).

par2  -  Fenster kann vom Benutzer verschoben werden (Ja/Nein).

par3  -  Fenster kann vom Benutzer in der Größe verändert werden (Ja/Nein).

par4  -  Fenster hat einen Minimal-Schalter (Ja/Nein).

par5  -  Fenster hat einen Maximal-Schalter (Ja/Nein).

Beispiel

FenTitel 1 "Hauptfenster"

FenDef 1 1 1 0 0 0

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Dieses Fenster kann geschlossen und verschoben werden. Es kann nicht

in der Größe verändert werden. Außerdem kann es nicht minimiert oder maximiert

werden."

Warte

Querverweis

Haupt-Index

Befehls-Index


FENDIM
FENDIM  id  breite  hoehe

Mit diesem Befehl kann die Größe (Breite und Höhe) eines bereits eröffneten Fensters nachträglich verändert werden.

Parameter

id	-  ID-Nummer des Fensters

breite	-  Neue Breite des Fensters

hoehe	-  Neue Höhe des Fensters

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Drücken Sie eine beliebige Taste."

Warte

breite   = &breite    / 2

hoehe  = &hoehe  / 2

FenDim 1 breite hoehe

Warte

Querverweis

Haupt-Index

Befehls-Index

FENPOS

FENDIMINNEN


FENDIMINNEN
FENDIMINNEN  id  breite  hoehe

Mit diesem Befehl kann die Größe der Innenfläche eines Fensters nachträglich verändert werden. Das ist z.B. sinnvoll, wenn für bestimmte Ausgabeaktionen (digitales Video beispielsweise) eine garantierte Ausgabefläche zur Verfügung stehen soll.

Parameter

id	-  ID-Nummer des Fensters

breite	-  Neue Breite des Fensters

hoehe	-  Neue Höhe des Fensters

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Drücken Sie eine beliebige Taste."

Warte

FenDimInnen 1 320 240

Warte

Querverweis

Haupt-Index

Befehls-Index

FENPOS

FENDIM


FENGRUND
FENGRUND  id  muster  farbe1  farbe2

Mit dem Befehl FENGRUND kann ein Hintergrundmuster für ein Fenster definiert werden. Der Hintergrund des Fensters wird dann generell mit diesem Muster gelöscht. Der Befehl kann sowohl vor als auch nach der Eröffnung eines Fensters angegeben werden. Wird der Befehl nach der Eröffnung eines Fensters angegeben, dann kann mit dem Befehl FENZEICHNEN ein Neuzeichnen des Fensters mit dem neuen Hintergrund angestoßen werden. Ansonsten wird der neue Hintergrund spätestens beim nächsten Löschen des Fensters mit FENLOESCHE hergestellt.

Parameter

id           -  ID-Nummer des Fensters.

muster  - Muster, mit dem das Fenster gefüllt werden soll.

                  0  -  unsichtbar

                  1  -  solide

                  2  - horizontal

                  3  -  vertikal

                  4  -  gekreuzt

                  5  - diagonal gekreuzt

                  6  -  aufwärts diagonal

                  7  -  abwärts diagonal

                  8  -  Muster 25

                  9  -  Muster 50

                10  -  Muster 75

farbe1  -  Zeichenfarbe des Musters.

farbe2  -  Füllfarbe des Musters.

                  0  -  Schwarz

                  1  -  Blau

                  2  -  Grün

                  3  -  Cyan

                  4  -  Rot

                  5  -  Magenta

                  6  -  Braun

                  7  -  Grau

                  8  -  Hellgrau

                  9  -  Hellblau

                10  -  Hellgrün

                11  -  Hellcyan

                12  -  Hellrot

                13  -  Hellmagenta

                14  -  Gelb

                15  -  Weiß

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 5 4 14

FenAuf 1 0 0 &breite &hoehe 2

FenTitel 2 "Unterfenster"

FenGrund 2 1 11 11

FenAuf 2 100 100 350 200 2

Warte

Querverweis

Haupt-Index

Befehls-Index


FENLEER
FENLEER  id

Dieser Befehl löscht die Aufzeichnungen über die Ausgaben innerhalb des Fensters mit der angegebenen ID-Nummer. Die aktuellen Inhalte des Fensters bleiben dabei erhalten. Werden Teile des Fensters durch Verschieben oder Verkleinern/Vergrößern ungültig, können die ungültigen Fensterteile nicht mehr wiederhergestellt werden.

Dieser Befehl ist sinnvoll, wenn in einem Fenster Überblendungen von Grafiken stattfinden sollen. Jede Ausgabe einer Grafik wird aufgezeichnet. Angenommen Sie laden eine Grafik in ein Fenster und überblenden diese Grafik später mit einer anderen Grafik. Beide Ausgaben sind aufgezeichnet. Bei einem Neuzeichnen des Fensters bedeutet dies, daß zuerst die alte Grafik und dann die neue Grafik angezeigt werden. Wenn Sie in Form einer Dia-Show 20 Grafiken haben durchlaufen lassen, werden bei einem Neuzeichnen des Fensters alle 20 Grafiken noch einmal durchgeblättert. Darüber hinaus werden alle 20 Grafiken im Speicher gehalten, was sehr schnell dazu führen kann, daß der verfügbare Arbeitsspeicher zur Neige geht.

Hier kommt der Befehl FENLEER ins Spiel. Vor einer Überblendung löschen Sie die alten Aufzeichnungen mit diesem Befehl und blenden dann die neue Grafik ein. In dem Fall ist dann nur die aktuelle Grafik aufgezeichnet.

Ein echtes Löschen eines Bildschirmfensters kann mit dem Befehl FENLOESCHE erreicht werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

BildParam 1 5 0

BildLaden 1 1 "earth.bmp"

BildParam 2 1 0

BildLaden 2 1 "sunset.bmp"

Schleife i = 1 Bis 100

    FenLeer 1    ! alte Aufzeichnungen loeschen

    BildKopie 1 0 0 1

    Maximal 1000

    FenLeer 1    ! alte Aufzeichnungen loeschen

    BildKopie 2 0 0 10

    Maximal 1000

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

FENLOESCHE


FENLOESCHE
FENLOESCHE  id

Dieser Befehl löscht den Inhalt des Fensters mit der angegebenen ID-Nummer. Der Fensterhintergrund wird mit dem Muster überschrieben, das mit dem Befehl FENGRUND eingestellt wurde. Wurde kein Muster eingestellt, dann wird das Fenster mit der Standardfarbe gefüllt. Alle aufgezeichneten Text- und Grafikausgaben (Siehe Beschreibung des Befehls FENAUF) werden dabei ebenfalls gelöscht.

Sollen nur die Aufzeichnungen über die Ausgaben, die in das Fenster gemacht wurden, gelöscht werden, dann kann dies mit dem Befehl FENLEER erreicht werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 4 7 8

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

"{+t}Juggler PRO, das Autorensystem

für grafische Benutzeroberflächen.

(C) 1993 Reitz Software-Entwicklung."

Warte

FenLoesche 1

Warte

Querverweis

Haupt-Index

Befehls-Index

FENLEER


FENMAUSINFO
FENMAUSINFO  id  flag

Durch den Befehl FENMAUSINFO wird eine kleine Info-Box im linken oberen Teil des Fensters, das durch die angegebene ID-Nummer identifiziert wird, ausgegeben.

In dieser Info-Box wird die Position des Mauszeigers angezeigt, wenn dieser durch die Fensterfläche bewegt wird. In der ersten Zeile der Box wird die Position des Mauszeigers auf den gesamten Bildschirm angezeigt. In der zweiten Zeile wird die Position relativ zu der linken oberen Ecke des Fensters angezeigt.

Dieser Befehl dient dazu, sich während der Entwicklung eines Programms einen schnellen Überblick über Pixel-Koordinaten in einem Fenster zu verschaffen. Dadurch kann viel Herumprobieren bei der Plazierung von Fenster-Elementen eingespart werden.

Parameter

id	-  ID-Nummer des Fensters.

flag	-  Gibt an, ob Info-Box ein- oder ausgeschaltet werden soll.

        0  -  ausschalten

        1  -  einschalten

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

FenMausInfo 1 1

Warte

Querverweis

Haupt-Index

Befehls-Index


FENMAXIMAL
FENMAXIMAL  id

Dieser Befehl maximiert das Fenster mit der angegebenen ID-Nummer, d.h. die Fläche des Fensters wird über den gesamten Bildschirm ausgedehnt. Durch Anklicken des Maximalschalters oder durch Ausführung des Befehls FENNORMAL wird die alte Größe des Fensters wiederhergestellt.

Dieser Befehl wirkt nur auf Fenster vom Typ 2 oder 3 (Standard- oder Dialogfenster).

Querverweis

Haupt-Index

Befehls-Index

FENNORMAL

FENMINIMAL


FENMINIMAL
FENMINIMAL  id

Dieser Befehl minimiert das Fenster mit der angegebenen ID-Nummer, d.h. das Fenster wird als Symbol im unteren Teil des Bildschirms dargestellt. Durch Anklicken des Symbols oder durch Ausführung des Befehls FENNORMAL wird die alte Größe des Fensters wiederhergestellt.

Dieser Befehl wirkt nur auf Fenster vom Typ 2 oder 3 (Standard- oder Dialogfenster).

Querverweis

Haupt-Index

Befehls-Index

FENNORMAL

FENMAXIMAL


FENMODUS
FENMODUS  id  modus

Dieser Befehl schaltet ein Fenster, das durch die ID-Nummer id identifiziert wird, zwischen dem Normal- und dem Exklusivmodus um. Ist ein Fenster im Normalmodus, dann kann ein Anwender durch Anklicken mit der Maus zuvor eröffnete Fenster aktivieren. Um dies zu verhindern, kann man ein Fenster in den sogenannten Exlusivmodus schalten. Wird ein Fenster in diesem Modus eröffnet, werden alle weiter hinten stehenden Fenster gesperrt und können vom Programmbenutzer nicht mehr aktiviert werden.

Parameter

id            -  ID-Nummer des Fensters

modus  -  Modus des Fensters

                       0  -  Normalmodus

                       1  -  Exklusivmodus

Dieser Befehl wirkt nur auf Fenster vom Typ 2 oder 3 (Standard- oder Dialogfenster).

Beim Schließen eines Fensters wird das Fenster mit der höchsten ID-Nummer, das sich im Exklusivmodus befindet, aktiviert. Ist kein Fenster mehr im Exklusivmodus, wird das Fenster mit der höchsten ID-Nummer aktiviert.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

FenTitel 2 "Fenster-1"

FenModus 2 1

FenAuf 2 100 100 300 200 2

FenTitel 3 "Fenster-2"

FenModus 3 1

FenAuf 3 150 150 300 200 2

FenTitel 4 "Fenster-3"

FenModus 4 1

FenAuf 4 200 200 300 200 2

.L1

Warte

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index


FENNORMAL
FENNORMAL  id

Wurde ein Fenster mittels Benutzeraktion oder durch Aufruf der Befehl FENMINIMAL oder FENMAXIMAL minimiert bzw. maximiert, dann kann mittels dieses Befehls die normale Größe des Fensters wiederhergestellt werden.

Dieser Befehl wirkt nur auf Fenster vom Typ 2 oder 3 (Standard- oder Dialogfenster).

Querverweis

Haupt-Index

Befehls-Index

FENMINIMAL

FENMAXIMAL


FENOBEN
FENOBEN  id

Der Befehl FENOBEN bringt das Fenster mit der angegebenen ID-Nummer in den Vordergrund, d.h. das Fenster liegt nach Aufruf dieses Befehls vor allen anderen Fenstern.

Querverweis

Haupt-Index

Befehls-Index


FENPOS
FENPOS  id  x  y

Mit diesem Befehl kann die Position (Spalte, Zeile) eines bereits eröffneten Fensters nachträglich verändert werden.

Parameter

id  -  ID-Nummer des Fensters

x    -  neue X-Koordinate des Fensters

y   -  neue Y-Koordinate des Fensters

Beispiel

breite  = &breite  / 2

hoehe = &hoehe / 2

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 breite hoehe 2

Cursor 2 2

"{+t}Drücken Sie eine beliebige Taste."

Warte

FenPos 1 100 100

Warte

Querverweis

Haupt-Index

Befehls-Index

FENDIM


FENSTATUS
FENSTATUS  id  x  y  breite  hoehe  vater status

Mit dem Befehl FENSTATUS können die Parameter eines Fensters überprüft werden, die von einem Anwender verändert werden können. Dem Befehl werden dazu nach der ID-Nummer fünf numerische Variablen mitgegeben, in denen die Fensterparameter abgelegt werden.

Parameter

id           -  ID-Nummer des Fensters.

x             -  Numerische Variable für die Aufnahme der X-Position des Fensters.

y             -  Numerische Variable für die Aufnahme der Y-Position des Fensters.

breite    -  Numerische Variable für die Aufnahme der Breite des Fensters.

hoehe   -  Numerische Variable für die Aufnahme der Höhe des Fensters.

vater      -  ID-Nummer des Vaterfensters.

status    -  Numerische Variable für die Aufnahme des Status des Fensters.

                     0  -  Fenster ist normal dargestellt.

                     1  -  Fenster ist minimiert dargestellt.

                     2  -  Fenster ist maximiert dargestellt.

Querverweis

Haupt-Index

Befehls-Index


FENTITEL
FENTITEL  id  "............"

Mit diesem Befehl wird ein Titel für ein Fenster mit der angegebenen ID-Nummer definiert. Dieser Titel wird im Titelbalken eines Fensters (Standard- und Dialogfenster) ausgegeben.

Wird dieser Befehl nach der Eröffnung eines Fensters aufgerufen, dann wird der Titel des Fensters nachträglich geändert.

Beispiel

FenTitel 1 "Dies ist ein Fenstertitel"

FenAuf 1 0 0 &breite &hoehe 2

Warte

Querverweis

Haupt-Index

Befehls-Index

FENAUF


FENVATER
FENVATER  id1  id2

Mit diesem Befehl kann einem Fenster ein sogenanntes Vaterfenster zugeordnet werden. Ein Fenster liegt immer vor seinem Vaterfenster. Es kann nicht hinter den Vater (per Mausklick) bewegt werden. Des weiteren wird das Fenster beim Schließen des Vaterfensters ebenfalls geschlossen.

Der Parameter id1 gibt die ID-Nummer des Fensters an, dessen Vater eingestellt werden soll. Der Parameter id2 gibt die ID-Nummer des Vaterfensters an. Das Vaterfenster muß zu diesem Zeitpunkt bereits eröffnet sein.

Das Vaterfenster kann auch nach dem Eröffnen eines Fensters verändert werden. Bei Fenstern vom Typ 0 und 1 (eingebettete Einfachfenster) hat das einen interessanten Effekt zur Folge. Diese Fenster werden in dem Fall aus ihrem bisherigen Vaterfenster heraus in das neue Vaterfenster verschoben. Damit können Fensterinhalte einfach von einem Fenster in ein anderes bewegt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

TxDef 3 8 0 0

TxAttrib "w2-c-u-k-o-s+t"

Grund 15  Farbe 1

TxDef 4 30 0 0

TxAttrib "w1-c-u-k-o-s+t"

Schleife i = 0 Bis 360 Stufe 10

    GrCursor 319 239

    TxDef 4 30 i 0

    Text "    Juggler PRO DVI 3.0"

Send

FenTitel 2 "Fensterchen"

FenAuf 2 100 100 400 150 2

Cursor 30 2

"Juggler PRO DVI 3.0

(C) 1993 {+u}Reitz Software-Entwicklung{-u}"

StdSchalter 1 &x1[30] &y1[6] "OK"

FenGrund 3 1 14 14

FenAuf 3 10 10 150 100 1

Schleife i = 1 Bis 100

    Zufall 0 150 x

    Zufall 0 100 y

    Zufall 0 50 rad

    Zufall 0 15 col

    Stift 1 1 col

    Kreis x y rad

Send

.L1

Warte

FenVater 3 1

Warte

FenVater 3 2

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

FENAUF


FENZEICHNEN
FENZEICHNEN  id

Mit diesem Befehl kann ein Neuzeichnen des Fensters mit der angegebenen ID-Nummer manuell angestoßen werden. Bei Veränderungen eines Fensters (verschieben, verändern, schließen etc.) werden alle erforderlichen Operationen zum Neuzeichnen automatisch ausgeführt. Es kann aber der Fall auftreten, daß ein Neuzeichnen zu einem bestimmten Zeitpunkt manuell angestoßen werden soll. Ein Beispiel hierfür wäre, daß mittels des Befehls FENGRUND der Hintergrund für ein Fenster verändert wurde. Damit der neue Hintergrund sofort zu sehen ist, kann mit FENZEICHNEN das Neuzeichnen des Fensters bewirkt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5  "{+t}Drücken Sie eine beliebige Taste."

Warte

FenGrund 1 5 1 10

FenZeichnen 1

Warte

Querverweis

Haupt-Index

Befehls-Index


FENZEIGER
FENZEIGER  id  typ

Mit dem Befehl FENZEIGER wird das Aussehen des Mauszeigers in dem Fenster mit der angegebenen ID-Nummer festgelegt. Der Parameter typ gibt dabei an, welcher Mauszeiger verwendet werden soll. Folgende Werte für Typ sind zulässig:

    0  -  kein Mauszeiger

    1  -  Pfeil (Standardeinstellung)

    2  -  Sanduhr

    3  -  Fadenkreuz

    4  -  Linie mit aufgespaltenen Enden

    5  -  zeigende Hand

    6  -  hinweisende Hand

    7  -  Siegeszeichen

    8  -  OK-Zeichen

    9  -  Daumen hoch

   10 -  Daumen runter

   11 -  schreibende Hand

   12 -  grinsendes Gesicht

   13 -  neutrales Gesicht

   14 -  trauriges Gesicht

   15 -  Maus

   16 -  Diskette

   17 -  CD

   18 -  Tastatur

   19 -  Computer

   20 -  Telefon

   21 -  Buch

   22 -  Briefkasten

   23 -  Brief1

   24 -  Brief2

   25 -  Fahne

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schleife i = 0 Bis 25

    FenZeiger 1 i

    Maximal 2000

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

HZEIGER

SYMZEIGER


FENZU
FENZU  id

Dieser Befehl schließt das Fenster mit der angegebenen ID-Nummer wieder. Ein Schließen des Hauptfensters (Fenster mit der ID 1) bewirkt das Beenden des Lernprogramms.

Beim Schließen eines Fensters wird das Fenster mit der höchsten ID-Nummer, das sich im Exklusivmodus (Befehl FENMODUS) befindet, aktiviert. Ist kein Fenster mehr im Exklusivmodus, wird das Fenster mit der höchsten ID-Nummer aktiviert.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 2

FenTitel 2 "Unterfenster"

FenGrund 2 1 11 11

FenAuf 2 100 100 350 200 2

Cursor 5 5  "{+t}Drücken Sie eine beliebige Taste."

Warte

FenZu 2

Warte

Querverweis

Haupt-Index

Befehls-Index


FRAGE
FRAGE  typ  ".........."  var

Dieser Befehl stellt eine Frage in einer kleinen Dialogbox. Dabei wird ein Fragezeichen im linken Teil des Fensters angezeigt. Daneben wird der Text ausgegeben, der dem Befehl als Parameter übergeben wurde. Im unteren Teil der Dialogbox werden Schalter zur Bedienung der Dialogbox plaziert. Welche Schalter dies sind (OK-Schalter, Ja/Nein-Schalter) wird über den Typ angegeben.

Parameter

typ         -  Gibt an, welche Schalterkombinationen im unteren

                   Teil der Dialogbox plaziert werden sollen.

                      0  -  OK-Schalter

                      1  -  OK-Schalter und Abbrechen-Schalter

                      2  -  Ja-Schalter und Nein-Schalter

                      3  -  Ja-Schalter, Nein-Schalter und Abbrechen-Schalter

                      4  -  Wiederholen-Schalter und Abbrechen-Schalter

".........."  -  Text, der in der Dialogbox als Fehlermeldung ausge-

                   gegeben werden soll.

var         -  In dieser Variablen wird abgelegt, welcher Schalter durch

                  den Benutzer angeklickt wurde.

                    -1  -  Abbrechen

                     0  -  Nein

                     1  -  Ja

                     2  -  OK

                     3  -  Wiederholen

                   Der Wert, der vor dem Aufruf der Dialogbox in dieser

                   Variablen steht, bestimmt außerdem, welcher Schalter

                   als Standardschalter (d.h. der Schalter, der auch durch

                   Betätigung der Eingabetaste ausgelöst wird) definiert

                   ist. Steht z.B. in dieser Variablen eine 1, dann wird der

                  Ja-Schalter als Standardschalter definiert.

Beispiel

FenTitel 1 "Schriftentest"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 0

ret = 1  ! Ja-Schalter ist Standardschalter

Frage 2 "Wollen Sie an dieser Stelle das Programm beenden?" ret

Analyse ret

  :=0:  "{+t}Sie sind sehr eifrig. Machen wir weiter."

  :=1:  "{+t}Gut, dann machen wir jetzt Schluß."

Aend

Warte

Wenn ret = 1 Dann Stop Wend

Querverweis

Haupt-Index

Befehls-Index

INFOMATION

WARNUNG

FEHLER


GEHEZU
GEHEZU  label

Dieser Befehl bewirkt die Verzweigung zu einer Sprungmarke (Label) im aktuellen Modul. Die Bearbeitung des Moduls wird ab dieser Sprungmarke fortgesetzt. Die Sprungmarke muß im selben Modul stehen.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

"{+t}";

zz = 0

zl = 0

.ANFANG

       "Text ";

       zz+

       Wenn zz = 20 Dann

               zz = 0

               ""

               zl+

       Wend

Wenn zl < 28 Dann

    GeheZu ANFANG

Wend

Warte

Querverweis

Haupt-Index

Befehls-Index

Definition von Sprungmarken


GRCURSOR
GRCURSOR  x  y

Dieser Befehl legt die Position fest, an der die nächste Textausgabe im aktuellen Fenster erfolgen soll ("..........", Text). Die Parameter x/y geben pixelgenau die Position an, ab der die Ausgabe erfolgen soll.

Eine zeichenorientierte Positionierung abhängig von der Größe der Schrift kann mit dem Befehl CURSOR erreicht werden.

Des weiteren können mit den Befehlen CURSOR und GRCURSOR Eingabefelder (Befehl EINGABE) positioniert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

GrCursor 100 50    "Menüpunkt-1"

GrCursor 100 70    "Menüpunkt-2"

GrCursor 100 90    "Menüpunkt-3"

GrCursor 100 110  "Programm beenden"

Warte

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

TAB

GRTAB

CURSOR

EINGABE


GRFGROESSE
GRFGROESSE  breite  hoehe

Standardmäßig werden Grafiken in der Größe ausgegeben, in welcher sie erstellt wurden. Mittels des Befehls  GRFGROESSE kann die Ausgabegröße für eine Grafik verändet werden, die mit dem Befehl GRFLADEN in das aktuelle Bildschirmfenster geladen werden soll. Die geladene Grafik wird dabei auf die als Parameter angegebene Breite und Höhe skaliert.

Der Befehl GRFGROESSE muß dabei immer vor dem Befehl GRFLADEN angegeben werden, da die Skalierung beim Laden der Grafik stattfindet.

Die Einstellung, die mit diesem Befehl vorgenommen wurde, gilt für alle Grafiken, die in der Folge in das aktuelle Fenster eingelesen werden.

Der Aufruf von 'GRFGROESSE 0 0' bewirkt, daß Grafiken wieder in ihrer Originalgröße geladen werden.

Es besteht auch die Möglichkeit, GRFGROESSE mit der Angabe einer Dimension (Breite oder Höhe) aufzurufen, während für die andere Dimension 0 angegeben wird. In dem Fall berechnet sich das Autorensystem beim Laden einer Grafik mittels GRFLADEN den Wert für die zweite Dimension selbständig aufgrund des Höhen/Breiten-Verhältnisses der zu ladenden Grafik. Angenommen, sie möchten eine Grafik mit 512 Punkten Breite darstellen. Die Höhe soll maßstabsgerecht angepaßt werden. In dem Fall geben Sie einfach 'GRFGROESSE 512 0' an.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 100 100 320 240 2

GrfGroesse 320 240

GrfLaden 100 100 1 "earth.bmp"

Warte

FenLoesche 1

GrfGroesse 0 0

GrfLaden 0 0 1 "earth.bmp"

Warte

Querverweis

Haupt-Index

Befehls-Index

GRFINFO

GRFLADEN

GRFPALETTE


GRFINFO
GRFINFO  breite  hoehe  "........"

Dieser Befehl ermittelt die Breite und Höhe einer Grafik in Bildpunkten. Das dient dazu, um z.B. unabhängig von der Größe einer Grafik immer einen korrekt dimensionierten Rahmen um ein Bild herum zu legen.

Parameter

breite	-  Numerische Variable, in welche die Breite der angegebenen

   Grafik eingetragen wird.

hoehe	-  Numerische Variable, in welche die Höhe der angegebenen

   Grafik eingetragen wird.

"........"	-  Dateiname der Grafik.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

GrfInfo breite hoehe "chess2.bmp"

Rahmen 100 100 breite hoehe 18

GrfLaden 100 100 1 "chess2.bmp"

Warte

Querverweis

Haupt-Index

Befehls-Index

GRFGROESSE

GRFLADEN

GRFPALETTE


GRFLADEN
GRFLADEN  x  y  pal  "........"

Der Befehl GRFLADEN lädt eine Grafik aus einer externen Datei in das aktuelle Bildschirmfenster. Es können die folgenden Grafikformate eingelesen werden:  BMP, TIF, PCX und GIF. Die Ausgabegröße einer Grafik kann mit dem Befehl GRFGROESSE verändert werden.

Parameter

x	-  X-Koordinate im aktuellen Fenster, an der die Grafik

   ausgegeben werden soll.

y	-  Y-Koordinate im aktuellen Fenster, an der die Grafik

   ausgegeben werden soll.

pal         -  Gibt an, ob die Palette der Grafik im aktuellen Fenster eingestellt

                   werden soll oder nicht.

                       0  -  nicht einstellen

                       1  -  einstellen

".........."  -  Dateiname der Grafik

Farbpaletten

Es ist evtl. wünschenswert, das die Farben der zu ladenden Grafik an die Palette einer anderen Grafik angepaßt werden. Angenommen, es sollen zwei Grafiken mit 256 Farben geladen werden. Die Grafiken haben unterschiedliche Paletten. Der verwendete Grafikadapter kann aber nur 256 Farben gleichzeitig darstellen. Es ist in dem Fall nicht möglich, beide Farbpaletten gleichzeitig zu realisieren. In diesem Fall müssen die Farben einer Grafik an die Farbpalette der anderen Grafik angepaßt werden. Zu diesem Zweck kann beim Laden einer Grafik angegeben werden, an welche Grafik die Farben angepaßt werden sollen. Es muß in dem Fall einfach ein zweiter Dateiname angegeben werden, der die Grafik bezeichnet, deren Palette verwendet werden soll. Der zweite Dateiname wird vom ersten durch einen Hochstrich getrennt. Das könnte folgendermaßen aussehen:

GrfLaden  0 0 1  "ocean.bmp"                             !  Die Palette dieser Grafik wird eingestellt

GrfLaden  0 0 1  "chess.bmp  |  ocean.bmp"  ! Die Farben der Grafik  'chess.bmp'

                                                                                       ! werden an die Palette der Grafik 'ocean.bmp'

                                                                                       ! angepaßt.

Achtung! Wenn das zugrundeliegende Fenstersystem (Windows, OS/2, Motif, etc.) in einem 16-Farbmodus läuft, dann kann die Palette der Grafik nicht eingestellt werden, da die 16 Grundfarben des Systems nicht verändert werden dürfen. In dem Fall wird die Grafik, so gut es geht, an die Farbeinstellungen des Fenstersystems angepaßt.

Geschwindigkeit

Die Ladegeschwindigkeiten für die unterschiedlichen Grafikformate sind sehr unterschiedlich. Generell gilt, daß ungepackte Formate (BMP, ungepacktes TIF) schneller geladen werden können, als gepackte. Bei Lernprogrammen bei denen es auf darauf ankommt, daß die Grafiken schnell geladen werden, sollte wenn möglich, das BMP-Format verwendet werden.

In der folgenden Liste werden die verschiedenen Grafikformate nach der Geschwindigkeit aufgelistet, mit der sie geladen werden können (die schnellsten zuerst, die langsamsten zuletzt).

BMP

TIF (ungepackt)

TIF (gepackt)

PCX

GIF

Grafikbibliotheken

Bitmap-Grafiken vom Typ BMP können auch aus einer sogenannten Grafikbibliothek geladen werden. In einer Grafikbibliohek können mehrere dutzend oder auch hunderte von Einzelgrafiken zusammengefaßt werden. Eine solche Bibliothek ist leichter zu handhaben als viele Einzelgrafiken. Außerdem können Grafiken, die sich in einer solchen Bibliothek befinden, nicht von Dritten verändert werden.

Erstellt wird eine Grafikbibliothek mit dem beiliegenden Programm 'grflib.exe'. Um aus einem Lernprogramm auf eine Bibliothek zuzugreifen, muß der Name der Bibliothek der Systemvariablen GRFLIB$ zugewiesen werden. Die Syntax des Befehls GRFLADEN verändert sich nicht. Ist der Variablen GRFLIB$ ein gültiger Dateiname zugewiesen, dann versucht das Autorensystem zuerst die Grafik aus der Bibliothek zu laden. Wird sie dort nicht gefunden, dann wird die Grafik als externe Datei auf der Festplatte gesucht.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

GrfLaden 0 0 1 "earth.bmp"

Warte

Querverweis

Haupt-Index

Befehls-Index

GRFINFO

GRFGROESSE

GRFPALETTE


GRFPALETTE
GRFPALETTE  "........"

Mit diesem Befehl wird die Farbpalette einer Grafik, deren Dateiname als Parameter angegeben wird, im aktuellen Fenster eingestellt. Das macht z.B. Sinn, wenn eine Grafik die Farbpalette einer anderen Grafik verwenden soll.

Achtung! Wenn das zugrundeliegende Fenstersystem (Windows, OS/2, Motif, etc.) in einem 16-Farbmodus läuft, dann bewirkt dieser Befehl nichts, da die 16 Grundfarben des Systems nicht verändert werden dürfen.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

GrfPalette "d:\juggler\bmp\ocean.bmp"

GrfLaden 50 50 0 "chess2.bmp"

Warte

Querverweis

Haupt-Index

Befehls-Index

GRFINFO

GRFGROESSE

GRFLADEN


GRFSCHALTER
GRFSCHALTER  id  x  y  ".........."

Mit diesem Befehl wird ein dreidimensionaler Schalter im aktuellen Fenster gezeichnet. Im Unterschied zu Schaltern, die mit den Befehlen SCHALTER und STDSCHALTER erzeugt werden, wird bei diesem Schalter eine Grafik in die Schaltfläche eingebettet.

Der Parameter id gibt den Wert an, der durch den Befehl EREIGNIS als Scancode zurückgegeben wird, sobald dieser Schalter angeklickt wird. Die Parameter x/y geben die Position des Schalters im aktuellen Fenster an.

Im letzten Parameter werden die Dateinamen für die Grafiken angegeben, die in die Schaltfläche eingesetzt werden sollen. Wird nur ein Dateiname angegeben, dann wird diese Grafik für alle Schaltzustände (normal, gedrückt, gesperrt) des Schalters verwendet. Es können den verschiedenen Zuständen aber auch unterschiedliche Grafiken zugeordnet werden. Maximal sind drei verschiedene Grafiken möglich. Um mehrere Grafiken zu laden, werden die Dateinamen durch einen Hochstrich ('|') getrennt. Der erste Dateiname gibt die Grafik für den Normalzustand (nicht gedrückt) des Schalters an. Für diesen Zustand muß immer eine Grafik geladen werden. Der zweite Dateiname gibt die Grafik für den gedrückten (also angeklickten) Zustand des Schalters an. Der dritte Dateiname schließlich definiert eine Grafik für den gesperrten (SCHSPERREN) Zustand des Schalters.

Soll der Schalter eine Grafik für den normalen und gedrückten Zustand, sowie eine eigene Grafik für den gesperrten Zustand erhalten, dann müssen die beiden Dateinamen durch zwei Hochstriche ('||') getrennt werden.

Mögliche Schreibweisen wären:

GrfSchalter  1  50  50  "sym1.bmp"

GrfSchalter  1  50  50  "sym1.bmp | sym2.bmp"

GrfSchalter  1  50  50  "sym1.bmp | sym2.bmp | sym3.bmp"

GrfSchalter  1  50  50  "sym1.bmp || sym3.bmp"

Die Größe des Schalters wird automatisch an die Größe der Grafik angepaßt. Die Grafiken für einen Schalter sollten möglichst nur mit den 16 Grundfarben gezeichnet werden, da eine Palettenanpassung für Schaltergrafiken nicht vorgesehen ist.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

grflib$ = "button.lib"

GrfSchalter  6 120 180 "sym1.bmp"

GrfSchalter  7 160 180 "sym2.bmp"

GrfSchalter  8 200 180 "sym3.bmp"

GrfSchalter  9 240 180 "sym4.bmp"

GrfSchalter 10 280 180 "sym5.bmp"

GrfSchalter 11 320 180 "sym6.bmp"

GrfSchalter 12 360 180 "sym7.bmp"

GrfSchalter 13 400 180 "sym8.bmp"

GrfSchalter 14 440 180 "sym9.bmp"

GrfSchalter 15 120 240 "auto1.bmp | auto2.bmp"

GrfSchalter 16 330 240 "muell1.bmp | muell2.bmp"

filter$ = "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

STDSCHALTER

SCHALTER

SCHSPERREN

SCHFREI


GROSS
GROSS  var$

Wandelt alle Kleinbuchstaben, die in einer alphanumerischen Variablen enthalten sind, in Großbuchstaben um.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var$ = "Dies ist ein Text."

Gross var$

"Ergebnis = "var$  ! Var$ enthält jetzt "DIES IST EIN TEXT."

Warte

Querverweis

Haupt-Index

Befehls-Index

KLEIN

ERSETZE


GRTAB
GRTAB  tab

Dieser Befehl stellt die Spalte ein, an der die nächste Textausgabe im aktuellen Fenster erfolgen soll. Der Parameter 'tab' gibt die Spaltenposition pixelgenau an. Die Einstellung der Zeile bleibt dabei unverändert.

Das dient dazu, Ausgabetexte tabellarisch zu gestalten, was bei der Verwendung von Proportionalschriften ansonsten etwas schwierig wird.

Eine zeichenorientierte Tabulierung abhängig von der Größe der Schrift kann mit dem Befehl TAB erreicht werden.

Des weiteren können mit den Befehlen TAB und GRTAB Eingabefelder (Befehl EINGABE) positioniert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

GrCursor 10 50

"{+t}Franz Müller";

GrTab 200  "Taubenweg 8";

GrTab 400  "8000 München"

"Horst Kowalke";

GrTab 200  "Am Deich 28";

GrTab 400  "200 Hamburg"

"Norbert Irgendwer";

GrTab 200  "Hügelstr. 25";

GrTab 400  "3000 Hannover"

Warte

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

TAB

GRCURSOR

CURSOR

EINGABE


GRUND
GRUND  col

Mit diesem Befehl wird die Hintergrundfarbe für eine Textausgabe ("..........",  Text "..........") festgelegt. Der Parameter col gibt dabei den Farbwert an. Es sind Werte zwischen 0 und 15 zulässig. Folgende Farbwerte sind definiert:

                  0  -  Schwarz

                  1  -  Blau

                  2  -  Grün

                  3  -  Cyan

                  4  -  Rot

                  5  -  Magenta

                  6  -  Braun

                  7  -  Grau

                  8  -  Hellgrau

                  9  -  Hellblau

                10  -  Hellgrün

                11  -  Hellcyan

                12  -  Hellrot

                13  -  Hellmagenta

                14  -  Gelb

                15  -  Weiß

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

FARBE


HATTRIB
HATTRIB  ".........."

Mit diesem Befehl werden die Attribute für Hypertextfelder in einer Textausgabe eingestellt. Die Attribute werden in Form einer Stringkonstante übergeben. Folgende Inhalte für die Stringkonstante sind möglich:

     w0  -  Strichstärke leicht

     w1  -  Strichstärke normal

     w2  -  Strichstärke fett

    +c  -  kursive Darstellung einschalten

     -c  -  kursive Darstellung abschalten

    +u  -  Unterstreichung einschalten

     -u  -  Unterstreichung abschalten

    +o  -  Umrandung einschalten

     -o  -  Umrandung abschalten

    +k  -  Durchstreichung einschalten

     -k  -  Durchstreichung abschalten

    +s  -  Schattenwurf einschalten

     -s  -  Schattenwurf abschalten

     +t  -  Transparenz einschalten

      -t  -  Transparenz abschalten

      fx  -  Vordergrundfarbe x einstellen

     gx  -  Hintergrundfarbe x einstellen

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Hfarbe 1

Hattrib "+c"

Cursor 5 5

"{+t}Das menschliche @10[Herz] ist eines der

komplexesten menschlichen @11[Organe]. Es sitzt

im oberen Teil des @12[Thorax]."

Warte

Querverweis

Haupt-Index

Befehls-Index

HFARBE

HGRUND

HLOESCHE

HZEIGER


HFARBE
HFARBE  col

Mit diesem Befehl wird die Vordergrundfarbe für Hypertextfelder festgelegt. Der Parameter col gibt dabei den Farbwert an. Es sind Werte zwischen 0 und 15 zulässig. Folgende Farbwerte sind definiert:

                  0  -  Schwarz

                  1  -  Blau

                  2  -  Grün

                  3  -  Cyan

                  4  -  Rot

                  5  -  Magenta

                  6  -  Braun

                  7  -  Grau

                  8  -  Hellgrau

                  9  -  Hellblau

                10  -  Hellgrün

                11  -  Hellcyan

                12  -  Hellrot

                13  -  Hellmagenta

                14  -  Gelb

                15  -  Weiß

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Hfarbe 1

Hattrib "+c"

Cursor 5 5

"{+t}Das menschliche @10[Herz] ist eines der

komplexesten menschlichen @11[Organe]. Es sitzt

im oberen Teil des @12[Thorax]."

Warte

Querverweis

Haupt-Index

Befehls-Index

HATTRIB

HGRUND

HLOESCHE

HZEIGER


HGRUND
HGRUND  col

Mit diesem Befehl wird die Hintergrundfarbe für Hypertextfelder festgelegt. Der Parameter col gibt dabei den Farbwert an. Es sind Werte zwischen 0 und 15 zulässig. Folgende Farbwerte sind definiert:

                  0  -  Schwarz

                  1  -  Blau

                  2  -  Grün

                  3  -  Cyan

                  4  -  Rot

                  5  -  Magenta

                  6  -  Braun

                  7  -  Grau

                  8  -  Hellgrau

                  9  -  Hellblau

                10  -  Hellgrün

                11  -  Hellcyan

                12  -  Hellrot

                13  -  Hellmagenta

                14  -  Gelb

                15  -  Weiß

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Hgrund 14  Hfarbe 1

Hattrib "-t"

Cursor 5 5

"{+t}Das menschliche @10[Herz] ist eines der

komplexesten menschlichen @11[Organe]. Es sitzt

im oberen Teil des @12[Thorax]."

Warte

Querverweis

Haupt-Index

Befehls-Index

HATTRIB

HFARBE

HLOESCHE

HZEIGER


HLOESCHE

Der Befehl HLOESCHE löscht die Definitionen aller Hypertextfelder im aktuellen Fenster. Die Hypertextfelder sind danach noch auf dem Bildschirm zu sehen, können aber nicht mehr angeklickt werden.

Querverweis

Haupt-Index

Befehls-Index

HATTRIB

HFARBE

HGRUND

HZEIGER


HZEIGER
HZEIGER  typ

Mit diesem Befehl wird eingestellt, welches Aussehen der Mauszeiger annehmen soll, wenn er über ein Hypertextfeld bewegt wird. Der Parameter typ gibt an, welcher Mauszeiger verwendet werden soll. Foglende Werte sind für typ zulässig:

    0  -  kein Mauszeiger

    1  -  Pfeil (Standardeinstellung)

    2  -  Sanduhr

    3  -  Fadenkreuz

    4  -  Linie mit aufgespaltenen Enden

    5  -  zeigende Hand

    6  -  hinweisende Hand

    7  -  Siegeszeichen

    8  -  OK-Zeichen

    9  -  Daumen hoch

   10 -  Daumen runter

   11 -  schreibende Hand

   12 -  grinsendes Gesicht

   13 -  neutrales Gesicht

   14 -  trauriges Gesicht

   15 -  Maus

   16 -  Diskette

   17 -  CD

   18 -  Tastatur

   19 -  Computer

   20 -  Telefon

   21 -  Buch

   22 -  Briefkasten

   23 -  Brief1

   24 -  Brief2

   25 -  Fahne

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Hgrund 14  Hfarbe 1

Hattrib "-t"

Hzeiger 2

Cursor 5 5

"{+t}Das menschliche @10[Herz] ist eines der

komplexesten menschlichen @11[Organe]. Es sitzt

im oberen Teil des @12[Thorax]."

Warte

Querverweis

Haupt-Index

Befehls-Index

HATTRIB

HFARBE

HGRUND

HLOESCHE


INFORMATION
INFORMATION  ".........."

Dieser Befehl gibt eine Meldung in einer kleinen Dialogbox aus. Dabei wird das Infozeichen des Basis-Fenstersystems (z.B. ein kleines i unter Windows) im linken Teil des Fensters angezeigt. Daneben wird der Text ausgegeben, der dem Befehl als Parameter übergeben wurde.

Beispiel

FenTitel 1 "Schriftentest"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 0

Information "Sie haben alle Aufgaben richtig gelöst."

Querverweis

Haupt-Index

Befehls-Index

FEHLER

WARNUNG

FRAGE


KLEIN
KLEIN  var$

Wandelt alle Großbuchstaben, die in einer alphanumerischen Variablen enthalten sind, in Kleinbuchstaben um.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var$ = "Dies ist ein Text."

Klein var$

"Ergebnis = "var$  ! Var$ enthält jetzt "dies ist ein text."

Warte

Querverweis

Haupt-Index

Befehls-Index

GROSS

ERSETZE


KOORD
KOORD  par

Mit dem Befehl KOORD kann ein logisches Koordinatensystem für den gesamten Bildschirm festgelegt werden. Das dient dazu, Lernprogramme, die für eine bestimmte Bildschirmauflösung (z.B. 640 * 480) entwickelt wurden, auch unter anderen Auflösungen (etwa 1024 * 768) betreiben zu können. Alle Text- und Grafikausgaben werden in dem Fall an die höhere Auflösung angepaßt. Ein Lernprogramm, das den ganzen Bildschirm ausfüllt, tut dies also auch bei höheren Auflösungen.

Mit dem Parameter 'par' wird die gewünschte logische Auflösung angegeben. Folgende Werte sind zulässig:

0  -  logisches Koordinatensystem abschalten

1  -  logische Auflösung  =  640 * 480

2  -  logische Auflösung  =  800 * 600

3  -  logische Auflösung  =  1024 * 768

4  -  logische Auflösung  =  1280 * 960

5  -  logische Auflösung  =  1280 * 1024

Folgende Punkte müssen beachtet werden:

Der Befehl KOORD muß vor der Eröffnung des Applikationsfensters (ID = 1) gesetzt werden. Nach der Eröffnung des Applikationsfensters kann der Befehl nicht mehr angegeben werden.

Das Laufzeitsystem versucht, alle Ausgaben bei abweichenden Bildschirmauflösungen so gut wie möglich anzupassen. Dennoch können durch Rundungsfehler kleinere Abweichungen entstehen. Außerdem können Rasterschriften nicht frei skaliert werden. Auch dadurch entstehen Abweichungen. In Programmen, die unabhängig von der Bildschirmauflösung arbeiten, sollten, wenn möglich, Truetype-Schriften zum Einsatz kommen.

Ein Programm, das auflösungsunabhängig arbeiten soll, sollte unter verschiedenen Auflösungen getestet werden. An Stellen, wo Abweichungen auftreten, können durch Analyse der Bildschirmauflösung Anpassungen vorgenommen werden. Beachten Sie dabei bitte, daß die Systemfunktionen &BREITE und &HOEHE nach Ausführung des Befehls KOORD die logische Auflösung des Bildschirms zurückgeben. Um die physikalische Auflösung zu ermitteln, müssen diese Funktionen vor dem Aufruf des Befehls KOORD abgefragt werden. Die Ergebnisse können für späteren Gebrauch in Variablen abgelegt werden.

Beachten Sie bitte auch den Abschnitt Auflösungsunabhängiges Programmieren im Kapitel Programmieren mit Juggler.

Beispiel

xres = &breite	!  Physikalische Auflösung für späteren

yres = &hoehe	!  Gebrauch sichern

Koord 1	!  Logische Auflösung = 640 * 480

FenAuf 0 0 &breite &hoehe 2

.

.

.

Querverweis

Haupt-Index

Befehls-Index


KREIS
KREIS  x  y  rad

Dieser Befehl zeichnet im aktuellen Fenster einen Kreis. Die Parameter x/y geben den Mittelpunkt des Kreises an. Der Parameter rad bezeichnet den Radius des Kreises.

Für das Zeichnen des Kreises (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER

ELLIPSE

BOGEN


KSDEF
KSDEF  x  y  flag1  flag2  flag3  flag4  farbe

Der Befehl KSDEF legt die Parameter für die Darstellung eines Koordinatensystems fest. Gezeichnet wird ein Koordinatensystem dann durch die Befehle XKSYS (X-Schenkel) und YKSYS (Y-Schenkel).

Parameter

x     - X-Koordinate des Nullpunkts des Koordinatensystems.

y     - Y-Koordinate des Nullpunkts des Koordinatensystems.

flag1  -  Gibt an, ob die Koordinatenschenkel gezeichnet werden

               sollen.

                 0  -  Koordinatenschenkel zeichnen

                 1  -  Koordinatenschenkel nicht zeichnen

flag2  -  Gibt an, ob die Koordinatenschenkel beschriftet werden

               sollen.

                Für die Beschriftung werden die Einstellungen durch

                die Befehl TXDEF, TXATTRIB, GRUND und FARBE

                verwendet.

                  0  -  beschriften

                  1  -  nicht beschriften

flag3  -  Gibt an, ob ein Gitternetz gezeichnet werden soll. Ist

                dieses Flag gesetzt, werden die beschrifteten Unter-

                teilungen auf den Koordinatenschenkeln durch Linien

                verbunden. Für das Gitternetz gelten die Einstellungen,

                die mit dem Befehl STIFT vorgenommen wurden.

                  0  -  Gitternetz zeichnen

                  1  -  Kein Gitternetz zeichnen

flag4  -  Gibt an, ob am Ende der Koordinatenschenkel Pfeile ein-

               gezeichnet werden sollen.

                   0  -  Pfeile einzeichnen

                   1  -  Keine Pfeile einzeichnen

farbe  -  Farbe, in der das Koordinatensystem gezeichnet werden soll.

Werden alle Flags auf 0 gesetzt, dann wird ein 'unsichtbares' Koordinatensystem erzeugt, d.h. das Koordinatensystem ist nicht sichtbar.

Die Befehle BALKEN und DIAGRAMM beziehen sich in ihren Werten immer auf die Wertebereiche, die durch ein zuvor gezeichnetes Koordinatensystem definiert wurden.

Falls also z.B. ein Balkendiagramm ohne Koordinatensystem gezeichnet werden soll, so wird das erreicht, indem zuvor ein 'unsichtbares' Koordinatensystem (zur Definition der Wertebereiche)

gezeichnet wird.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

Stift 2 1 2

KsDef 320 240 1 1 1 1 4

XkSys 500 -100 100 10 20 "X-Achse"

YkSys 400 -100 100 10 20 "Y-Achse"

Warte

Querverweis

Haupt-Index

Befehls-Index

XKSYS

YKSYS


KUCHEN
KUCHEN  x  y  radius  anzahl  divisor  wert  muster  farbe1  farbe2

Dieser Befehl zeichnet ein Kuchendiagramm. Im Gegensatz zu einem Balkendiagramm (Befehl BALKEN) besitzt ein Kuchendiagramm keine Beziehung zu einem zuvor gezeichneten Koordinatensystem.

Parameter

x              -  X-Koordinate des Mittelpunkts des Kuchendiagramms.

y              -  Y-Koordinate des Mittelpunkts des Kuchendiagramms.

radius    -  Radius des Kuchendiagramms.

anzahl   -  Anzahl der Kuchensegmente.

divisor   -  Divisor zur Bestimmung des relativen Abstands

                   der Kuchensegmente zueinander. Der Abstand

                    zwischen den Kuchensegmenten errechnet sich

                    aus dem Radius dividiert durch diesen Wert, d.h.

                    je kleiner dieser Wert ist, desto größer ist der Ab-

                    stand zwischen den Kuchensegmenten.

wert        -  Indizierte Variable, welche die Werte enthält, die im

                   Kuchendiagramm dargestellt werden sollen. Der erste

                   Index ist 1.

muster  -  Indizierte Variable, welche die Nummern der Muster

                   (siehe Befehl MUSTER) enthält, mit denen die Kuchen-

                   segmente gefüllt werden sollen. Der erste Index ist 1.

farbe1   -  Indizierte Variable, welche die die Nummern der Farben

                   enthält, in denen die Kuchensegmente gezeichnet werden

                   sollen. Der erste Index ist 1.

farbe2   -  Indizierte Variable, welche die die Nummern der Füllfarben

                   enthält, in denen die Kuchensegmente gezeichnet werden

                   sollen. Der erste Index ist 1.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Stift 2 1 14

KsDef 50 430 1 1 0 1 1

XkSys 550 0 202 10 20 ""

YkSys 400 0 102 10 20 ""

werte[1] = 10  mus[1] = 2

werte[2] = 40  mus[2] = 3

werte[3] = 15  mus[3] = 4

werte[4] = 60  mus[4] = 5

werte[5] = 20  mus[5] = 6

Kuchen 319 249 150 5 20 werte mus col1 col2

Warte

Querverweis

Haupt-Index

Befehls-Index

BALKEN

DIAGRAMM


LAENGE
LAENGE  var1$  var2

Zählt die Zeichen, die in einer alphanumerischen Variablen var1$ enthalten sind und weist das Ergebnis einer numerischen Variablen var2 zu.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var1$ = "Das ist ein Text."

Laenge var1$ var2

"Länge von var1$ = "var2

Warte

Querverweis

Haupt-Index

Befehls-Index

ZAEHLE


LESE
LESE  var/var$

Liest einen numerischen Wert oder eine alphanumerische Zeichenkette in eine Variable ein.

Wird als Parameter eine numerische Variable angegeben, dann wird ab der aktuellen Position in der Datei der nächste numerische Wert in die Variable Var eingelesen.

Wird als Parameter eine alphanumerische Variable angegeben, dann werden ab der aktuellen Position in der Datei alle Zeichen bis zum Zeilenende in die Variable Var$ übertragen.

Der Name der Datei, von der gelesen wird, ist in der Systemvariablen LDATEI$ abgelegt (Standardeinstellung - "JUGGLER.DAT").

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

a = 5.7893

b = 213.89

Daten ""a/b

Daten "Karl Heinz Müller"

Daten "Petunienweg 24, 8000 München"

Daten "089/808080"

Lese a

Lese b

Lese name$

Lese adresse$

Lese telefon$

Cursor 5 5  "{+t}";

"A       = "a

"B       = "b

"Name    = "name$

"Adresse = "adresse$

"Telefon = "telefon$

Warte

Querverweis

Haupt-Index

Befehls-Index

DATEN

LDATEI$


LEXIKON
LEXIKON  x  y  breite  hoehe  "........"

Dieser Befehl eröffnet ein Lexikonfenster auf dem Bildschirm. In dieses Fenster werden die Inhalte einer Lexikon-Datei eingelesen. Eine derartige Datei besteht aus einer Indexliste und Texten, die den einzelnen Index-Einträgen zugeordnet sind. Klickt man einen Indexeintrag mit der Maus an, dann wird der zugehörige Erläuterungstext in einem Fenster rechts neben der Liste angezeigt.

Die Index-Datei muß zuvor mit dem Lexikon-Compiler (lex.exe) erstellt werden. Im Hilfetext zu diesem Programm finden Sie auch die Beschreibung der Syntax einer Lexikon-Datei.

Als Schriftart für die Indexliste und den Erläuterungstext wird die im aktuellen Fenster eingestellte Schrift verwendet. Mit dem Befehl LEXSCHRIFT kann darüberhinaus für den Erläuterungstext eine alternative Schrift eingestellt werden.

Parameter

x	-  X-Koordinate, an der das Lexikon eröffnet werden soll.

y	-  Y-Koordinate, an der das Lexikon eröffnet werden soll.

breite	-  Breite des Lexikonfensters

hoehe	-  Höhe des Lexikonfensters

"........"	-  Dateiname der Lexikon-Datei

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Hier zeige ich Ihnen mal das Lexikon."

Grund 15  Farbe 0

Txdef 3 8 0 0

Txattrib "w2-c-u-k-o-s+t"

LexTitel "Lexikon"

Lexikon 80 100 500 250 "demo.lex"

Querverweis

Haupt-Index

Befehls-Index

LEXSCHRIFT

LEXTITEL


LEXSCHRIFT

Standardmäßig wird für die Indexliste und den Erläuterungstext eines Lexikonfensters die aktuell eingestellte Schriftart verwendet. Es kann aber die Notwendigkeit entstehen, daß für die Indexliste und den Text unterschiedliche Schriften verwendet werden sollen. Das kann mit diesem Befehl erreicht werden. Bei Aufruf von LEXSCHRIFT wird die aktuell eingestellte Schrift vom Autorensystem für den späteren Gebrauch gesichert. Danach kann eine andere Schrift eingestellt werden.

Wird dann der Befehl LEXIKON aufgerufen, dann wird für die Indexliste die aktuelle Schrift verwendet. Für den Erläuterungstext wird die Schrift verwendet, die eingestellt war, als der Befehl LEXSCHRIFT ausgeführt wurde.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Hier zeige ich Ihnen mal das Lexikon."

LexSchrift    ! Fuer das Textfenster die Standardschrift

Grund 15  Farbe 0

Txdef 3 8 0 0

Txattrib "w1-c-u-k-o-s+t"    ! Fuer die Indexliste eine kleine Schrift

LexTitel "Lexikon"

Lexikon 80 100 500 250 "demo.lex"

Querverweis

Haupt-Index

Befehls-Index

LEXIKON

LEXTITEL


LEXTITEL
LEXTITEL  "........"

Mit diesem Befehl wird der Titel für ein Lexikonfenster festgelegt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 2 2

"{+t}Hier zeige ich Ihnen mal das Lexikon."

LexTitel "Lexikon"

Lexikon 80 100 500 250 "demo.lex"

Querverweis

Haupt-Index

Befehls-Index

LEXIKON

LEXSCHRIFT


LINIE
LINIE  x1  y1  x2  y2

Dieser Befehl zeichnet im aktuellen Fenster einen Linie. Die Parameter x1/y1 geben den Startpunkt für die Linie an. Die Parameter x2/y2 geben den Endpunkt an.

Für das Zeichnen der Linie (Linienart, Liniendicke,  Farbe). werden die Einstellungen verwendet, die mit dem Befehl STIFT definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER


LISTAKTUELL
LISTAKTUELL  id  pos  var$

Dieser Befehl gibt den in einer Liste aktuell selektierten Eintrag zurück. In der als Parameter übergebenen numerischen Variablen pos wird die Position des Eintrags in der Liste zurückgeliefert. In der alphanumerischen Variablen var$ wird der Text des Eintrags übergeben.

Wurde kein Eintrag selektiert, dann wird in pos der Wert -1 eingetragen. Var$ bleibt dann leer.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Grund 8  Farbe 0

Txdef 3 8 0 0

Txattrib "w2-c-u-k-o-s+t"

Schalter 1 240 250 "OK"

Rahmen  200  100  &x2[20]  &y2[10]  7

ListAuf  1  200  100  &x2[20]  &y2[10]  0

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

.L1

Ereignis wnd type scc

ListAktuell  1  pos  str$

Cursor 2 2  "{-t}                                                                        "

Wenn pos = -1 Dann

    Cursor 2 2  "Kein Eintrag selektiert"

Sonst

    Analyse type

        :=2:  Cursor 2 2  "Pos = "pos;  "  Str$ = "str$

        :=6:  Cursor 2 2  "Stichw$ = "stichw$

    Aend

Wend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

LISTAUF

LISTEINTRAG

LISTZU


LISTAUF
LISTAUF  id  x  y  breite  hoehe  sort

Der Befehl LISTAUF eröffnet im aktuellen Fenster eine Liste. Mittels des Befehls LISTEINTRAG können in diese Liste Einträge eingefügt werden. Wenn ein Lernprogramm auf eine Eingabe wartet, kann mittels Doppelklick mit der Maus ein Eintrag ausgesucht werden. Der Befehl EREIGNIS gibt dann eine entsprechende Meldung (Ereignistyp = 6) zurück. Der Text des aktuellen Eintrags wird dann in der Systemvariablen STICHW$ abgelegt. Des weiteren kann jederzeit mit dem Befehl LISTAKTUELL der selektierte Eintrag in einer Liste abgefragt werden.

Ein sinnvoller Einsatz dieses Befehls ist z.B. in Verbindung mit der Datenbank denkbar. Ein Programmanwender gibt z.B. einen Teilschlüssel ein, zu dem mehrere Datensätze existieren. In einer Liste können dem Anwender dann alle Schlüsselbegriffe angezeigt werden, die existieren. Durch Anklicken des gewünschten Begriffs entscheidet der Anwender, welchen Datensatz er sehen möchte. Der zu suchende Schlüsselbegriff wird daraufhin in der Variablen STICHW$SV_STICHW abgelegt und kann vom Programm dort abgefragt werden.

Mit dem Befehl LISTZU wird eine Liste wieder aus dem aktuellen Fenster entfernt.

Parameter

id	-   ID-Nummer der Liste  (1 - 50)

x 	-   X-Koordinate der Liste im aktuellen Fenster

y	-   Y-Koordinate der Liste im aktuellen Fenster

Breite	-   Breite der Liste

Hoehe	-   Höhe der Liste

sort	-   Flag, das angibt, ob die Einträge der Liste sortiert

    werden sollen oder nicht (diese Funktion steht nicht

    auf allen Basisfenstersystemen zur Verfügung).

                       0  -  nicht sortieren

                       1  - sortieren

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Grund 8  Farbe 0

Txdef 3 8 0 0

Txattrib "w2-c-u-k-o-s+t"

Schalter 1 240 250 "OK"

Rahmen  200  100  &x2[20]  &y2[10]  7

ListAuf  1  200  100  &x2[20]  &y2[10]  0

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

.L1

Ereignis wnd type scc

ListAktuell  1  pos  str$

Cursor 2 2  "{-t}                                                                        "

Wenn pos = -1 Dann

    Cursor 2 2  "Kein Eintrag selektiert"

Sonst

    Analyse type

        :=2:  Cursor 2 2  "Pos = "pos;  "  Str$ = "str$

        :=6:  Cursor 2 2  "Stichw$ = "stichw$

    Aend

Wend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

LISTAKTUELL

LISTEINTRAG

LISTZU


LISTEINTRAG
LISTEINTRAG  id  "..........."

Der Befehl LISTEINTRAG fügt einen Text in eine Liste ein, die zuvor mit dem Befehl LISTAUF im aktuellen Fenster eröffnet wurde.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Grund 8  Farbe 0

Txdef 3 8 0 0

Txattrib "w2-c-u-k-o-s+t"

Schalter 1 240 250 "OK"

Rahmen  200  100  &x2[20]  &y2[10]  7

ListAuf  1  200  100  &x2[20]  &y2[10]  0

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

ListEintrag  1  "AAAAAAAAAA"

ListEintrag  1  "BBBBBBBBBB"

ListEintrag  1  "CCCCCCCCCC"

ListEintrag  1  "DDDDDDDDDD"

ListEintrag  1  "EEEEEEEEEE"

.L1

Ereignis wnd type scc

ListAktuell  1  pos  str$

Cursor 2 2  "{-t}                                                                        "

Wenn pos = -1 Dann

    Cursor 2 2  "Kein Eintrag selektiert"

Sonst

    Analyse type

        :=2:  Cursor 2 2  "Pos = "pos;  "  Str$ = "str$

        :=6:  Cursor 2 2  "Stichw$ = "stichw$

    Aend

Wend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

LISTAKTUELL

LISTAUF

LISTZU


LISTZU
LISTZU  id

Dieser Befehl schließt eine Liste wieder, die zuvor mit dem Befehl LISTAUF angelegt wurde.

Querverweis

Haupt-Index

Befehls-Index

LISTAKTUELL

LISTAUF

LISTEINTRAG


MAXIMAL
MAXIMAL  par

Hält das Lernprogramm für eine vorgegebene Zeit an. Der Parameter Par enthält die Länge der Pause in Millisekunden. Wird vor Ablauf dieser Zeit eine Taste gedrückt, dann läuft das Programm sofort

weiter.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

"{+t}Sie bekommen genug Zeit, um diese Erläuterungen in Ruhe

zu lesen."

Maximal 1500

"Falls Ihnen die Pausen zwischen den einzelnen Texten zu

lang erscheinen, dann drücken Sie einfach eine beliebige

Taste."

Maximal 1500

"Der nächste Textteil erscheint dann sofort."

Warte

Querverweis

Haupt-Index

Befehls-Index

PAUSE


MAUSBEWEGEN
MAUSBEWEGEN  x1  y1  x2  y2  pause  schrittweite

Mit diesem Befehl kann der Mauszeiger von einem Punkt des Bildschirms zu einem anderen bewegt werden. Soll der Mauszeiger von seiner aktuellen Position irgendwohin bewegt werden, dann können die aktuellen Koordinaten des Zeigers mit den Systemfunktionen &MXPOS und &MYPOS abgefragt werden.

Parameter

x1/y1	-  Startkoordinaten

x2/y2	-  Endkoordinaten

pause	-  Pause in Millisekunden zwischen zwei Bewegungen

schrittweite	-  Schrittweite in Pixeln, um die bewegt wird

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schleife i = 1 Bis 20

    Zufall 0 &breite x

    Zufall 0 &hoehe  y

    MausBewegen &mxpos &mypos x y 50 8

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

MAUSPOS

MAUSVERBERGEN

MAUSZEIGEN

&MXPOS

&MYPOS


MAUSPOS
MAUSPOS  x  y

Dieser Befehl positioniert den Mauszeiger an die angegebene Position auf dem Bildschirm.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schleife i = 1 Bis 20

    Zufall 0 &breite x

    Zufall 0 &hoehe  y

    MausPos x y

    Maximal 500

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

MAUSBEWEGEN

MAUSVERBERGEN

MAUSZEIGEN

&MXPOS

&MYPOS


MAUSVERBERGEN

Dieser Befehl schaltet den Mauszeiger ab. Der Mauszeiger ist danach nicht mehr zu sehen. Mit dem Befehl MAUSZEIGEN wird der Mauszeiger wieder sichtbar gemacht.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

MausVerbergen

"Weg isser"

Maximal 5000

MausZeigen

"Hier isser wieder"

Warte

Querverweis

Haupt-Index

Befehls-Index

MAUSBEWEGEN

MAUSPOS

MAUSZEIGEN

&MXPOS

&MYPOS


MAUSZEIGEN

Dieser Befehl schaltet einen Mauszeiger, der zuvor mit dem Befehl MAUSVERBERGEN unsichtbar geschaltet wurde, wieder ein.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

MausVerbergen

"Weg isser"

Maximal 5000

MausZeigen

"Hier isser wieder"

Warte

Querverweis

Haupt-Index

Befehls-Index

MAUSBEWEGEN

MAUSPOS

MAUSVERBERGEN

&MXPOS

&MYPOS


MODUS
MODUS  par

Der Befehl MODUS legt fest, mittels welcher logischen Operation grafische Elemente mit dem Hintergrund verknüpft werden sollen. Für den Parameter par stehen dabei folgende Werte zur Verfügung:

    0  -  Überschreiben  (Standardeinstellung)

    1  -  Invertieren

    2  -  Verknüpfung mit logisch UND  (AND)

    3  -  Verknüpfung mit logisch ODER  (OR)

    4  -  Verknüpfung mit logisch EXKLUSIV-ODER  (XOR)

    5  -  Vernküpfung mit logisch NICHT-EXKLUSIV-ODER  (NXOR)

Querverweis

Haupt-Index

Befehls-Index


MUSTER
MUSTER  muster  farbe1  farbe2  transparent

Dieser Befehl legt das Füllmuster für grafische Objekte (RECHTECK, KREIS, etc.) fest. Beim Zeichnen eines Kreises z.B. wird der Kreis mit dem Muster gefüllt, das mit diesem Befehl definiert wurde.

In Verbindung mit dem Befehl STIFT können alle Parameter für das Aussehen eines grafischen Objektes definiert werden.

Soll ein nicht gefülltes Objekt gezeichnet werden, dann muß das Muster 0 (unsichtbar) eingestellt werden, z.B. MUSTER 0 0 0 0.

Parameter

muster            -  Nummer des Musters

                                 0  -  unsichtbar

                                 1  -  solide

                                 2  -  horizontal

                                 3  -  vertikal

                                 4  -  gekreuzt

                                 5  -  diagonal gekreuzt

                                 6  -  aufwärts diagonal

                                 7  -  abwärts diagonal

                                 8  -  Muster 25

                                 9  -  Muster 50

                               10  -  Muster 75

farbe1             -  Zeichenfarbe

farbe2             -  Füllfarbe für die Zwischenräume

                                 0  -  Schwarz

                                 1  -  Blau

                                 2  -  Grün

                                 3  -  Cyan

                                 4  -  Rot

                                 5  -  Magenta

                                 6  -  Braun

                                 7  -  Grau

                                 8  -  Hellgrau

                                 9  -  Hellblau

                               10  -  Hellgrün

                               11  -  Hellcyan

                               12  -  Hellrot

                               13  -  Hellmagenta

                               14  -  Gelb

                               15  -  Weiß

transparent   -  Gibt an, ob die Zwischenräume mit der angegebenen

                             Farbe gefüllt werden sollen, oder ob der Hintergrund

                             durchscheinen soll.

                             0  -  Mit Füllfarbe füllen

                             1  -  Hintergrund soll durchscheinen

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Muster 0 0 0 0  ! Kein Füllmuster

Schleife i = 0 Bis 200

  Zufall 0 &xmax x

  Zufall 0 &ymax y

  Zufall 0 100 rad

  Zufall 0 15 col

  Stift 1 1 col

  Kreis x y rad

Send

Warte

FenLoesche 1

Schleife i = 0 Bis 200

  Zufall 0 &xmax x

  Zufall 0 &ymax y

  Zufall 0 100 rad

  Zufall 0 10 ms

  Zufall 0 15 col1

  Zufall 0 15 col2

  Zufall 0 15 col3

  Muster ms col1 col2 0

  Stift 1 1 col3

  Kreis x y rad

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

STIFT


PAUSE
PAUSE  par

Der Befehl PAUSE hält das Lernprogramm für eine vorgegebene Zeit an. Der Parameter Par enthält die Länge der Pause in Millisekunden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

"{+t}Dieser ";          Pause 500

"Text ";                     Pause 500

"wird ";                      Pause 500

"sehr ";                     Pause 500

"langsam ";            Pause 500

"dargestellt ";

Warte

Querverweis

Haupt-Index

Befehls-Index

MAXIMAL


NETZ
NETZ  x  y  x_anz  y_anz  x_abs  y_abs

Dieser Befehl zeichnet ein Gitternetz aus Linien. Für das Netz gelten die Einstellungen, die mit dem Befehl STIFT vorgenommen wurden.

Parameter

x           -  X-Koordinate der linken oberen Ecke des Netzes.

y           -  Y-Koordinate der linken oberen Ecke des Netzes.

x_anz  -  Anzahl der senkrechten Striche, die auf der X-Achse stehen.

y_anz  -  Anzahl der waagerechten Striche, die auf der Y-Achse stehen.

x_abs  - Abstand in Pixeln zwischen zwei senkrechten Strichen.

y_abs  - Abstand in Pixeln zwischen zwei waagerechten Strichen.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 2

Stift 1 1 2

Netz 0 0 80 50 10 10

Warte

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER


OBJBEWEGEN
OBJBEWEGEN  id  "........"  koord$  pause  schrittweite  wiederholen

Mit dem Befehl OBJBEWEGEN wird ein sogenanntes Objekt (oder auch Sprite genannt) durch das aktuelle Fenster bewegt. Das Objekt kann dabei auch aus mehreren Grafiken bestehen. Um z.B. eine Katze über den Bildschirm laufen zu lassen, zeichnet man die Katze in allen Bewegungsphasen, lädt die Grafiken in den Speicher und animiert sie mittels des Befehls OBJBEWEGEN.

Die Grafiken, welche für die Animation verwendet werden, müssen zuvor mit dem Befehl BILDLADEN in den Speicher eingelesen werden.

Die Animation läuft dabei automatisch im Hintergrund ab, während die Bearbeitung des Lernprogramms fortgesetzt wird.

Parameter

id	-  ID-Nummer der Animation. Es können bis zu 10 Animationen

-  gleichzeitig ablaufen.

"........"	-  In dieser Zeichenkette werden die ID-Nummern der Grafiken

   angegeben, die in die Animation eingebunden werden sollen.

   Dabei sind folgende Formate möglich.

   "1  -  6"	-  Animation der Grafiken, die unter den ID-Nummern

-  1 bis 6 geladen wurden.

   "1, 3, 6"	-  Animation der Grafiken, die unter den ID-Nummern

   1, 3 und 6 geladen wurden.

koord$	-  Name einer indizierten Variablen, die beginnend mit dem Index 1

   die Koordinaten für die Animation enthält. Es sind auch mehrere

   Koordinatenpaare zulässig. Der letzte Eintrag der Variablen muß

   einen Leerstring enthalten, um das Ende der Koordinatenfolgen

   anzuzeigen.

   koord$[1] = "x1 y1 x2 y2"

   koord$[2] = "x1 y1 x2 y2"

   koord$[3] = ""

pause	-  Pause in Millisekunden für die Anzeige einer Grafik.

schrittweite	-  Schrittweite in Pixeln, um welche die nächste Grafik versetzt werden soll.

wiederholen	-  Gibt an, ob die Animation nur einmal durchlaufen soll, oder ob sie

   permanent wiederholt werden soll.

0  -  nur einmal durchlaufen

1  -  permanent wiederholen

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 15 15

FenAuf 1 0 0 &breite &hoehe 2

grflib$ = "cat.lib"  ! Die Grafiken werden aus dieser Bibliothek geladen

FenZeiger 1 2

BildLaden 1 0 "r_cat1.bmp"

BildLaden 2 0 "r_cat2.bmp"

BildLaden 3 0 "r_cat3.bmp"

BildLaden 4 0 "r_cat4.bmp"

BildLaden 5 0 "r_cat5.bmp"

BildLaden 6 0 "r_cat6.bmp"

BildLaden 7 0 "r_cat7.bmp"

BildLaden 8 0 "r_cat8.bmp"

BildLaden 9 0 "r_cat9.bmp"

FenZeiger 1 1

k1$[1] = "0 0 500 0"

k1$[2] = "500 0 500 420"

k1$[3] = "500 420 0 420"

k1$[4] = "0 420 0 0"

k1$[5] = ""

ObjBewegen  1  "1-9"  k1$  100  8  1

filter$  =  "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

OBJSTAPEL

OBJSTOP


OBJSTAPEL
OBJSTAPEL  id  "........"  x  y  pause  wiederholen

Dieser Befehl startet eine sogenannte Stapelanimation. Dabei werden Grafiken, die zuvor in den Speicher geladen wurden, im aktuellen Fenster 'durchgeblättert', wodurch der Eindruck von Bewegung entsteht.

Die Grafiken, welche für die Animation verwendet werden, müssen zuvor mit dem Befehl BILDLADEN in den Speicher eingelesen werden.

Die Animation läuft dabei automatisch im Hintergrund ab, während die Bearbeitung des Lernprogramms fortgesetzt wird.

Parameter

id	-  ID-Nummer der Animation. Es können bis zu 10 Animationen

-  gleichzeitig ablaufen.

"........"	-  In dieser Zeichenkette werden die ID-Nummern der Grafiken

   angegeben, die in die Animation eingebunden werden sollen.

   Dabei sind folgende Formate möglich.

   "1  -  6"	-  Animation der Grafiken, die unter den ID-Nummern

-  1 bis 6 geladen wurden.

   "1, 3, 6"	-  Animation der Grafiken, die unter den ID-Nummern

   1, 3 und 6 geladen wurden.

x	-  X-Koordinate, an der die Animation ablaufen soll.

y	-  Y-Koordinate, an der die Animation ablaufen soll.

pause	-  Pause in Millisekunden für die Anzeige einer Grafik.

wiederholen	-  Gibt an, ob die Animation nur einmal durchlaufen soll, oder ob sie

   permanent wiederholt werden soll.

0  -  nur einmal durchlaufen

1  -  permanent wiederholen

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 15 15

FenAuf 1 0 0 &breite &hoehe 2

grflib$ = "cat.lib"  ! Die Grafiken werden aus dieser Bibliothek geladen

FenZeiger 1 2

BildLaden 1 0 "r_cat1.bmp"

BildLaden 2 0 "r_cat2.bmp"

BildLaden 3 0 "r_cat3.bmp"

BildLaden 4 0 "r_cat4.bmp"

BildLaden 5 0 "r_cat5.bmp"

BildLaden 6 0 "r_cat6.bmp"

BildLaden 7 0 "r_cat7.bmp"

BildLaden 8 0 "r_cat8.bmp"

BildLaden 9 0 "r_cat9.bmp"

FenZeiger 1 1

ObjStapel  1  "1-9"  100  100  100  1

filter$  =  "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

OBJBEWEGEN

OBJSTOP


OBJSTOP
OBJSTOP  id

Dieser Befehl beendet eine laufende Animation, die zuvor mit dem Befehl OBJSTAPEL oder OBJBEWEGEN mit der ID-Nummer 'id' gestartet wurde.

Wird als ID-Nummer 0 angegeben, dann werden alle laufenden Animationen gestoppt.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 15 15

FenAuf 1 0 0 &breite &hoehe 2

grflib$ = "cat.lib"  ! Die Grafiken werden aus dieser Bibliothek geladen

FenZeiger 1 2

BildLaden 1 0 "r_cat1.bmp"

BildLaden 2 0 "r_cat2.bmp"

BildLaden 3 0 "r_cat3.bmp"

BildLaden 4 0 "r_cat4.bmp"

BildLaden 5 0 "r_cat5.bmp"

BildLaden 6 0 "r_cat6.bmp"

BildLaden 7 0 "r_cat7.bmp"

BildLaden 8 0 "r_cat8.bmp"

BildLaden 9 0 "r_cat9.bmp"

FenZeiger 1 1

ObjStapel  1  "1-9"  100  100  100  1

Warte

ObjStop 1

Warte

Querverweis

Haupt-Index

Befehls-Index

OBSTAPEL

OBJBEWEGEN


PDAUF
PDAUF .... PDMEN .... PDEND

Mit dem Befehl PDAUF wird die Definition einer Menüleiste mit allen zugehörigen Popup-Menüs eingeleitet. Dem Befehl PDAUF muß unmittelbar der Befehl PDMEN folgen, der die Definition des ersten Pulldowns einleitet. Hinter dem Befehl PDMEN steht der Begriff, der in der Menüleiste auftauchen soll, danach folgen zeilenweise die einzelnen Menüpunkte des Popup-Menüs.

Das nächste Popup wird durch einen weiteren PDMEN-Befehl eingeleitet. Abgeschlossen wird die Definition durch den Befehl PDEND.

Hinter jedem Text wird eine ID-Nummer angegeben, die später von dem Befehl EREIGNIS zurückgegeben wird, wenn der betreffende Menüpunkt angeklickt wird.

PdAuf

PdMen  "Hauptbegriff-1"    1

  "Menüpunkt-1"    4

  "Menüpunkt-2"    5

  "Menüpunkt-3"    6

PdMen  "Hauptbegriff-2"    2

  "Menüpunkt-1"    7

  "Menüpunkt-2"    8

PdMen  "Hauptbegriff-3"    3

  "Menüpunkt-1"    9

  "Menüpunkt-2"   10

  "Menüpunkt-3"   11

  "Menüpunkt-4"   12

PdEnd

Wird ein Menüzeilentext durch das Zeichen Klammeraffe (@) eingeleitet, dann wird an dieser Stelle des Menüs ein sogenannter Separator (Trennzeile) eingefügt. Der Text nach dem Klammeraffen wird dabei ignoriert. Auf diese Weise können Unterteilungen in das Menü eingebracht werden, um es dadurch übersichtlicher zu gestalten.

Des weiteren kann innerhalb eines Menüzeilentextes ein bestimmtes Zeichen als Hotkey markiert werden. Ist ein Menü aufgeklappt und wird dieses Zeichen auf der Tastatur betätigt, dann springt der

Auswahlbalken automatisch auf die Menüzeile, in dem dieses Zeichen markiert wurde. Die Markierung erfolgt durch das Zeichen Embassant (&) oder Welle (~).

  PdAuf

  PdMen   "&Erster Text in Menüzeile"     id

    "T&ext zu Menüpunkt-1"                           id

    "Te&xt zu Menüpunkt-2"                           id

    "@"                                                                   0

    "Tex&t zu Menüpunkt-3"                           id

  PdMen  "~Zweiter Text in Menüzeile"   id

    "T~ext zu Menüpunkt-1"                           id

    "Te~xt zu Menüpunkt-2"                           id

    "@"                                                                   0

    "Tex~t zu Menüpunkt-3"                           id

  PdEnd

Das Zeichen Embassant oder Welle ist dann bei der Anzeige des Menüs nicht mehr zu sehen.

Das derart markierte Zeichen wird durch eine Unterstreichung hervorgehoben.

Es kann immer nur eine Menüleiste aktiv sein. Das Applikationsfenster (ID = 1) muß als Standardfenster (Typ = 2) eröffnet worden sein, um eine Menüleiste einfügen zu können. Die Menüleiste wird dann automatisch unter der Titelzeile des Applikationsfensters eingefügt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

PdAuf

PdMen "Datei"                 1

  "Neu"                                 3

  "Öffnen"                            4

  "Speichern"                     5

  "Speichern unter"           6

  "@"                                     0

  "Drucken"                         7

  "Drucker-Installation"    8

  "@"                                     0

  "Beenden"                       9

PdMen "Bearbeiten"      2

  "Ausschneiden"           10

  "Kopieren"                      11

  "Einfügen"                      12

  "Löschen"                      13

PdMen "Modul"               3

  "Öffnen"                          14

  "Speichern"                   15

  "Schließen"                   16

  "@"                                    0

  "Anlegen"                      17

  "Löschen"                      18

  "Umbenennen"            19

  "Kopieren"                     20

  "@"                                     0

  "Einlagern"                     21

PdEnd

Warte

Querverweis

Haupt-Index

Befehls-Index

PDZU

PDSPERREN

PDFREI


PDFREI
PDFREI  mnr  pnr

Freigeben eines Menüpunktes, der zuvor mit dem Befehl PDSPERREN gesperrt wurde. Nach Aufruf dieses Befehls kann der durch 'mnr' und 'pnr' definierte Menüpunkt wieder angewählt werden.

Querverweis

Haupt-Index

Befehls-Index

PDAUF

PDSPERREN


PDSPERREN
PDSPERREN  mnr  pnr

Der Befehl PDSPERREN sperrt einen Menüpunkt innerhalb einer Menüleiste oder eines zugehörigen Pulldown-Menüs.

Dies ist sinnvoll, wenn bestimmte Programmfunktionen zeitweise gesperrt werden sollen.

Parameter

mnr	-  Nummer des Pulldown-Menüs, in dem ein Auswahlpunkt ge-

   sperrt werden soll.

pnr	-  Nummer des Auswahlpunktes innerhalb des Pulldown-Menüs,

   das gesperrt werden soll. Wird hier 0 angegeben, wird

   das durch 'mnr' spezifizierte Menü gesperrt, d.h. dieses

   Menü kann danach nicht mehr aufgerufen werden.

Querverweis

Haupt-Index

Befehls-Index

PDAUF

PDFREI


PDZU

Der Befehl PDZU schließt eine Menüleiste wieder. Die Menüleiste und ein evtl. noch geöffnetes

Pulldown-Menü werden wieder vom Bildschirm entfernt.

Querverweis

Haupt-Index

Befehls-Index

PDAUF


POLYGON
POLYGON  anzahl  xy

Dieser Befehl zeichnet eine Reihe von zusammenhängenden Linien (Polygon). Der Parameter anz gibt die Anzahl der Punkte an, die miteinander verbunden werden sollen. Der Parameter xy ist der Name einer indizierten Variablen, die beginnend mit dem Index 1 alle Koordinaten im Schema x1/y1/x2/y2.... enthält. Der maximale Index dieser Variablen muß mindestens der Anzahl der Koordinaten multipliziert mit 2 entsprechen.

Der letzte Punkt des Polygons wird automatisch mit dem ersten Punkt des Polygons verbunden, um eine geschlossene Figur zu erhalten.

Für das Zeichnen des Polygons (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Stift 1 1 0

Muster 8 0 10 0

xy[1] = 319  xy[2] = 50

xy[3] = 100  xy[4] = 350

xy[5] = 539  xy[6] = 350

xy[7] = 319  xy[8] = 50

Polygon 4 xy

Warte

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER


PROGRAMM
PROGRAMM  prog  mod

Nach Aufruf dieses Befehls wird das aktuelle Lernprogramm geschlossen. Das Programm, dessen Name dem Befehl als erster Parameter (Prog) mitgegeben wird, wird daraufhin zur Bearbeitung eröffnet. Die Bearbeitung wird mit dem Modul begonnen, dessen Name dem Befehl als zweiter Parameter (Mod) mitgegeben wird.

Der Inhalt aller Variablen bleibt erhalten. Ebenso bleibt der Bildschirminhalt erhalten. Fenster, die vom Ursprungsprogramm eröffnet wurden, können vom nachgeladenen Programm weiterhin verwendet werden.

Achtung: Lernprogramme, die sich gegenseitig aufrufen, müssen zuvor mit dem sogenannten Mehrprogrammlinker (wlink.exe) bearbeitet werden. Das ist erforderlich, um die Variablenbereiche der verschiedenen Programme aneinander anzupassen. Ansonsten könnte ein nachgeladenes Programm nicht mehr auf die Variablen zugreifen, die das Ursprungsprogramm initialisiert hat.

Die Technik des Nachladens von Programmen sollte bei größeren Projekten immer verwendet werden. So können mehrere Lernprogrammautoren bequem am gleichen Projekt arbeiten.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

init  ! Modul init wird aufgerufen, nimmt Initialsierungen vor.

Schalter 1 100 100 "Lektion-1"

Schalter 2 100 150 "Lektion-2"

Schalter 3 100 200 "Lektion-3"

Schalter 4 100 250 "Beenden"

.L1

filter$ = "w1e2e11"

Ereignis wnd type scc

Analyse scc

    :=1:  Programm lek1 start  ! Programm LEK1.CBT wird gestartet.

    :=2:  Programm lek2 start  ! Programm LEK2.CBT wird gestartet.

    :=3:  Programm lek3 start  ! Programm LEK3.CBT wird gestartet.

    :=4:  Ende

    ::      GeheZu L1

  Aend

Querverweis

Haupt-Index

Befehls-Index


PUNKT
PUNKT  x  y

Dieser Befehl zeichnet im aktuellen Fenster einen Punkt an die Koordinaten, die durch die Parameter x/y angegeben werden.

Für das Zeichnen des Punktes (Dicke, Farbe). werden die Einstellungen verwendet, die mit dem Befehl STIFT definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

STIFT

MUSTER


RECHTECK
RECHTECK  x  y  breite  hoehe

Dieser Befehl zeichnet im aktuellen Fenster ein Rechteck. Die Parameter x/y geben die linke obere Ecke des Rechtecks an. Die Parameter breite/hoehe geben die Dimensionen des Rechtecks an. Ein Rechteck mit abgerundeten Kanten kann mit dem Befehl BOX gezeichnet werden.

Für das Zeichnen des Rechtecks (Linienart, Liniendicke, Füllmuster, Farbe etc). werden die Einstellungen verwendet, die mit den Befehlen STIFT und MUSTER definiert wurden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Querverweis

Haupt-Index

Befehls-Index

BOX

STIFT

MUSTER


RAHMEN
RAHMEN  x  y  breite  hoehe  typ

Der Befehl RAHMEN zeichnet im aktuellen Fenster einen dreidimensional wirkenden Rahmen. Dies dient dazu, Informationen auf dem Bildschirm übersichtlicher zu gliedern. Gruppen von Text und/oder Grafik, die optisch voneinander getrennt werden sollen, können mit Rahmen versehen werden.

Der Rahmen wird dabei um die Fläche, die durch die Parameter x/y/breite/hoehe angegeben wird, herum gezeichnet, d.h. das Zeichnen des Rahmens beginnt bei x-1 und y-1. Dadurch kann z.B. sehr einfach ein eingebettetes Fenster mit einem solchen Rahmen versehen werden, da für die Befehle RAHMEN und FENAUF die gleichen Parameter gelten.

Die Werte für die Licht- und Schattenseite eines Rahmens werden den globalen Einstellungen des zugrunde liegenden Betriebssystems entnommen. Ein Rahmen kommt i.d.R. nur auf einem hellgrauen Hintergrund richtig zur Geltung.

Parameter

x/y         -  Linke obere Ecke der Fläche, die vom Rahmen umgeben werden soll.

breite   -  Breite der Fläche, die vom Rahmen umgeben werden soll.

hoehe  -  Höhe der Fläche, die vom Rahmen umgeben werden soll.

typ         -  Typ des Rahmens. Es stehen insgesamt 19 verschiedene Rahmenarten zur Verfügung.

                     0  -  einfacher Strichrahmen

                     1  -  abgesenkte Fläche  -  1 Pixel tief

                     2  -  abgesenkte Fläche  -  2 Pixel tief

                     3  -  abgesenkte Fläche  -  3 Pixel tief

                     4  -  angehobene Fläche  -  1 Pixel hoch

                     5  -  angehobene Fläche  -  2 Pixel hoch

                     6  -  angehobene Fläche  -  3 Pixel hoch

                     7  -  abgesenkte Fuge  -  1 Pixel tief

                     8  -  abgesenkte Fuge  -  2 Pixel tief

                     9  -  abgesenkte Fuge  -  3 Pixel tief

                   10  -  angehobene Fuge  -  1 Pixel hoch

                   11  -  angehobene Fuge  -  2 Pixel hoch

                   12  -  angehobene Fuge  -  3 Pixel hoch

                   13  -  abgesenkte Rasterung  -  2 Einheiten

                   14  -  abgesenkte Rasterung  -  3 Einheiten

                   15  -  abgesenkte Rasterung  -  4 Einheiten

                   16  -  angehobene Rasterung  -  2 Einheiten

                   17  -  angehobene Rasterung  -  3 Einheiten

                   18  -  angehobene Rasterung  -  4 Einheiten

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

TxDef 1 15 0 0

TxAttrib "w1-c-u-k-o-s+t"

Rahmen 20  20 120 60 0

Rahmen 170 20 120 60 1

Rahmen 320 20 120 60 2

Rahmen 470 20 120 60 3

Rahmen 20  100 120 60 4

Rahmen 170 100 120 60 5

Rahmen 320 100 120 60 6

Rahmen 470 100 120 60 7

Rahmen 20  180 120 60 8

Rahmen 170 180 120 60 9

Rahmen 320 180 120 60 10

Rahmen 470 180 120 60 11

Rahmen 20  260 120 60 12

Rahmen 170 260 120 60 13

Rahmen 320 260 120 60 14

Rahmen 470 260 120 60 15

Rahmen 20  340 120 60 16

Rahmen 170 340 120 60 17

Rahmen 320 340 120 60 18

GrCursor 30  42   "Rahmen Typ-0"

GrCursor 180 42   "Rahmen Typ-1"

GrCursor 330 42   "Rahmen Typ-2"

GrCursor 480 42   "Rahmen Typ-3"

GrCursor 30  120  "Rahmen Typ-4"

GrCursor 180 120  "Rahmen Typ-5"

GrCursor 330 120  "Rahmen Typ-6"

GrCursor 480 120  "Rahmen Typ-7"

GrCursor 30  200  "Rahmen Typ-8"

GrCursor 180 200  "Rahmen Typ-9"

GrCursor 330 200  "Rahmen Typ-10"

GrCursor 480 200  "Rahmen Typ-11"

GrCursor 30  280  "Rahmen Typ-12"

GrCursor 180 280  "Rahmen Typ-13"

GrCursor 330 280  "Rahmen Typ-14"

GrCursor 480 280  "Rahmen Typ-15"

GrCursor 30  360  "Rahmen Typ-16"

GrCursor 180 360  "Rahmen Typ-17"

GrCursor 330 360  "Rahmen Typ-18"

Warte

Querverweis

Haupt-Index

Befehls-Index


STDSCHALTER
STDSCHALTER  id  x  y  "........"

Mit diesem Befehl kann man einen dreidimensionalen Schalter im aktuellen Fenster zeichnen. Dieser Schalter wird durch den Befehl EREIGNIS kontrolliert. Der Parameter id gibt den Wert an, der durch den Befehl EREIGNIS als Scancode zurückgegeben werden soll. Die Parameter x/y geben die Position des Schalters im aktuellen Fenster an. Als letzter Parameter folgt der Text, der in den Schalter hineingeschrieben werden soll.

Der Befehl STDSCHALTER erzeugt dabei im Unterschied zum Befehl SCHALTER einen sogenannten Standardschalter, d.h. den Schalter, der auch durch Drücken der Eingabetaste ausgelöst werden kann. In einem Fenster darf immer nur ein Standardschalter angelegt werden. Alle anderen Schalter müssen mit dem Befehl SCHALTER erzeugt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

StdSchalter 1 500 100 "OK"

Schalter 2 500 130 "Abbrechen"

Cursor 5 1  "{+t}";

.L1

Ereignis wnd type scc

Analyse scc

  :=1:  "OK-Button wurde angeklickt."

  :=2:  "Abbrechen-Button wurde angeklickt."

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

SCHALTER

GRFSCHALTER

SCHDIM

SCHSPERREN

SCHFREI


SCHALTER
SCHALTER  id  x  y  "........"

Mit diesem Befehl kann man einen dreidimensionalen Schalter im aktuellen Fenster zeichnen. Dieser Schalter wird durch den Befehl EREIGNIS kontrolliert. Der Parameter id gibt den Wert an, der durch den Befehl EREIGNIS als Scancode zurückgegeben werden soll. Die Parameter x/y geben die Position des Schalters im aktuellen Fenster an. Als letzter Parameter folgt der Text, der in den Schalter hineingeschrieben werden soll.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schalter 1 500 100 "OK"

Schalter 2 500 130 "Abbrechen"

Cursor 5 1  "{+t}";

.L1

Ereignis wnd type scc

Analyse scc

  :=1:  "OK-Button wurde angeklickt."

  :=2:  "Abbrechen-Button wurde angeklickt."

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

STDSCHALTER

GRFSCHALTER

SCHDIM

SCHSPERREN

SCHFREI


SCHDIM
SCHDIM  breite  hoehe

Dieser Befehl legt die Breite und Höhe für einen Schalter fest. Die Einstellungen gelten für das aktuelle Fenster.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

SchDim 200 50

Schalter 1 100 100 "OK"

Warte

Querverweis

Haupt-Index

Befehls-Index

STDSCHALTER

SCHALTER

SCHSPERREN

SCHFREI


SCHSPERREN
SCHSPERREN  id

Dieser Befehl sperrt einen Schalter, der zuvor im aktuellen Fenster angelegt wurde. Der Schalter wird dabei durch seine ID-Nummer identifiziert.

Der derart gesperrte Schalter ist an einer helleren Schrift zu erkennen. Er kann nicht mehr angeklickt werden. Durch den Befehl SCHFREI kann der Schalter wieder freigegeben werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schalter 1 500 100 "OK"

Schalter 2 500 130 "Abbrechen"

Warte

SchSperren 2  ! Abbrechen-Button wird gesperrt

Warte

SchFrei 2  ! Wird wieder freigegeben

Warte

Querverweis

Haupt-Index

Befehls-Index

STDSCHALTER

SCHALTER

SCHDIM

SCHFREI


SCHFREI
SCHFREI  id

Dieser Befehl gibt einen Schalter, der zuvor durch den Befehl SCHSPERREN gesperrt wurde, wieder frei. Der Schalter wird dabei durch seine ID-Nummer identifiziert.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Schalter 1 500 100 "OK"

Schalter 2 500 130 "Abbrechen"

Warte

SchSperren 2  ! Abbrechen-Button wird gesperrt

Warte

SchFrei 2  ! Wird wieder freigegeben

Warte

Querverweis

Haupt-Index

Befehls-Index

STDSCHALTER

SCHALTER

SCHDIM

SCHSPERREN


SCHLEIFE .... BIS .... STUFE .... SEND
SCHLEIFE  var = x1  Bis  x2  Stufe  x3  ........  SEND

Der Befehl SCHLEIFE dient dazu, einen Block von Anweisungen wiederholt auszuführen. Die Anzahl der Wiederholungen hängt dabei vom Inhalt einer Zählervariablen (var) ab.

Diese Zählervariable wird unmittelbar nach dem Befehl SCHLEIFE mit einem Startwert (x1) belegt. Hinter dem Befehlswort BIS wird dann der Endwert (x2) festgelegt.

Hinter dem Befehlswort STUFE wird der Wert (x3) angegeben, um den die Zählvervariable bei jedem Durchlauf erhöht (bzw. erniedrigt) werden soll. Der Befehl STUFE ist optional. Er muß nicht angegeben werden. Wird STUFE nicht angegeben, wird automatisch mit einem Erhöhungswert von 1 gearbeitet. Der Erhöhungswert muß immer numerisch sein. Der Einsatz einer Variablen ist hier nicht zulässig.

Das Ende der Schleife wird durch das Befehlswort SEND gekennzeichnet. Bei Erreichen dieses Befehls wird die Zählervariable um den durch STUFE definierten Wert erhöht (oder erniedrigt, falls der Wert negativ ist).

Hat die Zählervariable ihren Endwert (definiert durch den Befehl BIS) erreicht, dann wird die Bearbeitung des Lernprogramms hinter dem Befehl SEND fortgesetzt. Ansonsten wird die Bearbeitung hinter dem einleitenden SCHLEIFE-Befehl fortgesetzt.

Der Befehl SCHLEIFE kann bis zu zehnfach ineinander verschachtelt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 10 2

"{+t}"

! Vorwärts zählen, in Abständen von 2

Schleife i = 0 Bis 20 Stufe 2

  "I = "i

Send

Warte

FenLoesche 1

Cursor 10 2

! Rückwärts zählen, in Abständen von 2

Schleife i = 20 Bis 0 Stufe -2

  "I = "i

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

Wenn  Dann  Sonst  Wend

GREIN

GRAUS


SCANFANG
SCANFANG  id  "fname"

Der Befehl SCANFANG positioniert den Datenbankzeiger auf den Datensatz, der dem ersten (d.h. dem kleinsten) Schlüsselbegriff des Schlüsselfeldes 'fname' zugeordnet ist.

Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Mit diesem Befehl ist es möglich, Daten nach unterschiedlichen Kriterien sortiert auszuwerten, da die Schlüsselbegriffe immer aufsteigend sortiert gespeichert sind.

Parameter

id              -  ID-Nummer der Datenbank

"fname"  -  Name des Schlüsselfeldes. Dieses Feld muß beim An-

                     legen der Datenbank mit dem Programm 'dbtool.exe'

                     als Schlüsselfeld gekennzeichnet worden sein.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden nach dem Namen alphabetisch aufstei-

!  gend sortiert angezeigt.

ScAnfang 1 "name"

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$

    "  Name   : "name$

    "  Vorname: "vname$

    Warte

    ScVorwaerts 1 "name"

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

SCVORWAERTS

SCZURUECK

SCSCHLUSS

&DBSTATUS


SCSCHLUSS
SCSCHLUSS  id  "fname"

Der Befehl SCSCHLUSS positioniert den Datenbankzeiger auf den Datensatz, der dem letzten (d.h. dem größten) Schlüsselbegriff des Schlüsselfeldes 'fname' zugeordnet ist.

Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Mit diesem Befehl ist es möglich, Daten nach unterschiedlichen Kriterien sortiert auszuwerten, da die Schlüsselbegriffe immer aufsteigend sortiert gespeichert sind.

Parameter

id              -  ID-Nummer der Datenbank

"fname"  -  Name des Schlüsselfeldes. Dieses Feld muß beim An-

                     legen der Datenbank mit dem Programm 'dbtool.exe'

                     als Schlüsselfeld gekennzeichnet worden sein.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden nach dem Namen alphabetisch absteigend

!  sortiert angezeigt.

ScSchluss 1 "name"

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$

    "  Name   : "name$

    "  Vorname: "vname$

    Warte

    ScZurueck 1 "name"

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                  DbZu 1

                  Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

SCVORWAERTS

SCZURUECK

SCANFANG

&DBSTATUS


SCSUCHEN
SCSUCHEN  id  "fname"  schluessel

Mit diesem Befehl kann innerhalb einer Datenbank nach einem Schlüsselbegriff gesucht werden.

Parameter

id                   -  ID-Nummer der Datenbank

"fname"       -  Name des Schlüsselfeldes. Dieses Feld muß beim An-

                          legen der Datenbank mit dem Programm 'dbtool.exe'

                          als Schlüsselfeld gekennzeichnet worden sein.

schluessel  -  Der Schlüsselbegriff nach dem gesucht werden soll.

                          Kann wahlweise alphanumerisch oder numerisch sein

                          (je nachdem, ob das zugehörige Datenbankfeld alpha-

                          numerisch oder numerisch ist).

Der Befehl positioniert den Datenbankzeiger auf den ersten Datensatz, der in dem gesuchten Schlüsselfeld einen Wert stehen hat, der in der Länge des Suchbegriffs mit dem Suchbegriff übereinstimmt.

Beispiel: Sie geben als Suchbegriff für das Schlüsselfeld 'NAME' ein M an. In dem Fall positioniert der Befehl SCSUCHEN den Datenbankzeiger auf den ersten Datensatz, in dem der Inhalt des Feldes

'NAME' mit einem M anfängt.

Um zu überprüfen, ob die Suchoperation erfolgreich war, muß die Systemfunktion &DBSTATUS überprüft werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!**************************************************************

!*     Suche nach dem Herrn Müller.                                   *

!**************************************************************

ScSuchen 1 "name" "Müller"

Wenn &dbstatus = 0 Dann  ! gefunden

    DbLesen 1

    ""

    "  Anrede  : "anr$    ! Daten ausgeben

    "  Name    : "name$

    "  Vorname : "vname$

Sonst  ! nicht gefunden

    "  Kein Müller in der Datenbank!"

Wend

Warte

!**************************************************************

!*     Suche nach dem ersten Datensatz, dessen          *

!*      Namensfeld mit   einem 'M' anfängt.                        *

!**************************************************************

ScSuchen 1 "name" "M"

Wenn &dbstatus = 0 Dann  ! gefunden

    DbLesen 1

    ""

    "  Anrede  : "anr$    ! Daten ausgeben

    "  Name    : "name$

    "  Vorname : "vname$

Sonst  ! nicht gefunden

    "  Kein Name, der mit M anfängt!"

Wend

Warte

DbZu 1

Ende

Querverweis

Haupt-Index

Befehls-Index

SCANFANG

SCVORWAERTS

SCZURUECK

SCSCHLUSS

&DBSTATUS


SCVORWAERTS
SCVORWAERTS  id  "fname"

Der Befehl SCVORWAERTS positioniert den Datenbankzeiger auf den Datensatz, der dem nächsten Schlüsselbegriff des Schlüsselfeldes 'fname' zugeordnet ist.

Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Mit diesem Befehl ist es möglich, Daten nach unterschiedlichen Kriterien sortiert auszuwerten, da die Schlüsselbegriffe immer aufsteigend sortiert gespeichert sind.

Parameter

id               -  ID-Nummer der Datenbank

 "fname"  -  Name des Schlüsselfeldes. Dieses Feld muß beim An-

                      legen der Datenbank mit dem Programm 'dbtool.exe'

                      als Schlüsselfeld gekennzeichnet worden sein.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbtool.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden nach dem Namen alphabetisch aufstei-

!  gend sortiert angezeigt.

ScAnfang 1 "name"

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$

    "  Name   : "name$

    "  Vorname: "vname$

    Warte

    ScVorwaerts 1 "name"

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

SCANFANG

SCZURUECK

SCSCHLUSS

&DBSTATUS


SCZURUECK
SCZURUECK  id  "fname"

Der Befehl SCZURUECK positioniert den Datenbankzeiger auf den Datensatz, der dem vorigen Schlüsselbegriff des Schlüsselfeldes 'fname' zugeordnet ist.

Mit dem Befehl DBLESEN kann dieser Datensatz dann gelesen werden.

Mit diesem Befehl ist es möglich, Daten nach unterschiedlichen Kriterien sortiert auszuwerten, da die Schlüsselbegriffe immer aufsteigend sortiert gespeichert sind.

Parameter

id               -  ID-Nummer der Datenbank

 "fname"  -  Name des Schlüsselfeldes. Dieses Feld muß beim An-

                      legen der Datenbank mit dem Programm 'dbtool.exe'

                      als Schlüsselfeld gekennzeichnet worden sein.

Beispiel

!  Dieses Beispiel geht davon aus, das eine Datenbank namens

!  ADRESSEN mit dem Datenbank-Werkzeug (dbutil.exe) erzeugt

!  und mit Daten versehen wurde.

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

DbAuf 1 "adressen"

    anrede     anr$

    name        name$

    vorname  vname$

DbEnd

!  Alle Datensätze werden nach dem Namen alphabetisch absteigend

!  sortiert angezeigt.

ScSchluss 1 "name"

.L1

    FenLoesche 1

    DbLesen 1

    ""

    "  Anrede : "anr$

    "  Name   : "name$

    "  Vorname: "vname$

    Warte

    ScZurueck 1 "name"

    Analyse &dbstatus

        :=0:  GeheZu L1  ! Alles klar.

        :=1:  DbZu 1     ! Letzter Datensatz erreicht.

                 Ende

        ::       " Datenbankfehler "&dbstatus  ! Fehler

                 DbZu 1

                 Ende

    Aend

Querverweis

Haupt-Index

Befehls-Index

SCANFANG

SCVORWAERTS

SCSUCHEN

&DBSTATUS


STIFT
STIFT  typ  dicke  farbe

Der Befehl STIFT legt das Erscheinungsbild von Linien (Befehle LINIE, POLYGON, NETZ) und Umrandungen von grafischen Objekten (RECHTECK, KREIS, etc.) fest.

In Verbindung mit dem Befehl MUSTER können alle Parameter für das Aussehen eines grafischen Objektes definiert werden.

Parameter

typ       -  Linientyp

                   0  -  unsichtbar

                   1  - durchgezogen

                   2  -  punktiert

                   3  -  gestrichelt

                   4  -  gestrichelt/punktiert

dicke  -  Liniendicke in Pixeln

farbe   -  Farbe der Linie

                   0  -  Schwarz

                   1  -  Blau

                   2  -  Grün

                   3  -  Cyan

                   4  -  Rot

                   5  -  Magenta

                   6  -  Braun

                   7  -  Grau

                   8  -  Hellgrau

                   9  -  Hellblau

                 10  -  Hellgrün

                 11  -  Hellcyan

                 12  -  Hellrot

                 13  -  Hellmagenta

                 14  -  Gelb

                 15  -  Weiß

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Muster definieren über eine Vorschaufunktion, in der alle Parameter für die Befehle STIFT und MUSTER interaktiv eingestellt werden können.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Muster 0 0 0 0  ! Kein Füllmuster

Schleife i = 0 Bis 200

  Zufall 0 &xmax x

  Zufall 0 &ymax y

  Zufall 0 100 rad

  Zufall 0 15 col

  Stift 1 1 col

  Kreis x y rad

Send

Warte

FenLoesche 1

Schleife i = 0 Bis 200

  Zufall 0 &xmax x

  Zufall 0 &ymax y

  Zufall 0 100 rad

  Zufall 0 10 ms

  Zufall 0 15 col1

  Zufall 0 15 col2

  Zufall 0 15 col3

  Muster ms col1 col2 0

  Stift 1 1 col3

  Kreis x y rad

Send

Warte

Querverweis

Haupt-Index

Befehls-Index

MUSTER


STOP

Dieser Befehl bewirkt einen sofortigen Abbruch des laufenden Lernprogramms. Nach Aufruf des Befehls STOP wird das Lernprogramm beendet und das Laufzeitsystem aus dem Speicher entfernt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 4  "{+t}Klicken Sie einen Schalter mit der Maus an."

Schalter 1 50 100 "Label-1"

Schalter 2 50 130 "Label-2"

Schalter 3 50 160 "Label-3"

Schalter 4 50 190 "Label-4"

Schalter 5 50 220 "Abbruch"

.L1

Ereignis wnd type scc

Analyse scc

  :=1:  modul1

  :=2:  modul2

  :=3:  modul3

  :=4:  modul4

  :=5:  Stop

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

ENDE


SYMFELD
SYMFELD  id  x  y  breite  hoehe

Mit dem Befehl SYMFELD kann ein einfaches Schaltfeld definiert werden. Beim Anklicken eines

solchen Feldes wird von dem Befehl EREIGNIS die ID-Nummer des Feldes als Scancode zurückgegeben. Dem Feld kann mittels des Befehls SYMZEIGER ein eigener Mauszeiger zugeordnet werden.

Parameter

id          -  ID-Nummer des Feldes

x            -  X-Position der linken oberen Ecke

y            -  Y-Position der linken oberen Ecke

breite   -  Breite des Feldes

hoehe  -  Höhe des Feldes

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Rechteck 50 50 149 149

SymFeld 1 50 50 100 100

Rechteck 200 50 299 149

SymFeld 2 200 50 100 100

.L1

Ereignis wnd type scc

Cursor 1 1  "                                               "

Cursor 1 1  "Type = "type;  "  Scc = "scc

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

SYMINVERT

SYMSPERREN

SYMFREI

SYMSTOP

SYMZEIGER

SYMFELDZEIGER


SYMFELDZEIGER
SYMFELDZEIGER  id  typ

Mit diesem Befehl wird eingestellt, welches Aussehen der Mauszeiger innerhalb des Symbolfeldes, das durch die ID-Nummer id identifiziert wird, annehmen soll, wenn er über dieses Feld bewegt wird. Die Einstellung gilt nur für dieses Feld. Das Symbol muß zuvor mit dem Befehl SYMFELD oder SYMINVERT angelegt worden sein.

Der Parameter typ gibt an, welcher Mauszeiger verwendet werden soll. Foglende Werte sind für typ zulässig:

    0  -  kein Mauszeiger

    1  -  Pfeil (Standardeinstellung)

    2  -  Sanduhr

    3  -  Fadenkreuz

    4  -  Linie mit aufgespaltenen Enden

    5  -  zeigende Hand

    6  -  hinweisende Hand

    7  -  Siegeszeichen

    8  -  OK-Zeichen

    9  -  Daumen hoch

   10 -  Daumen runter

   11 -  schreibende Hand

   12 -  grinsendes Gesicht

   13 -  neutrales Gesicht

   14 -  trauriges Gesicht

   15 -  Maus

   16 -  Diskette

   17 -  CD

   18 -  Tastatur

   19 -  Computer

   20 -  Telefon

   21 -  Buch

   22 -  Briefkasten

   23 -  Brief1

   24 -  Brief2

   25 -  Fahne

Mit dem Befehl SYMZEIGER kann ein globaler Mauszeiger für alle Symbolfelder festgelegt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Rechteck 50 50 149 149

SymInvert 1 50 50 100 100 200

SymFeldZeiger 1 2

Rechteck 200 50 299 149

SymInvert 2 200 50 100 100 200

SymFeldZeiger 2 3

.L1

Ereignis wnd type scc

Cursor 1 1  "                                               "

Cursor 1 1  "Type = "type;  "  Scc = "scc

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMINVERT

SYMSPERREN

SYMFREI

SYMSTOP

SYMZEIGER

SYMFELDZEIGER


SYMFREI
SYMFREI  id

Dieser Befehl gibt ein Schaltfeld (erzeugt mit SYMFELD oder SYMINVERT), das mit dem Befehl SYMSPERREN deaktviert wurde, wieder frei. Das Feld kann danach wieder angeklickt werden.

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMINVERT

SYMSPERREN

SYMSTOP

SYMZEIGER

SYMFELDZEIGER


SYMINVERT
SYMINVERT  id  x  y  breite  hoehe  pause

Mit dem Befehl SYMINVERT kann ein Schaltfeld definiert werden, das beim Anklicken automatisch invertiert wird. Beim Anklicken eines solchen Feldes wird von dem Befehl EREIGNIS die ID-Nummer des Feldes als Scancode zurückgegeben. Dem Feld kann mittels des Befehls SYMZEIGER ein eigener Mauszeiger zugeordnet werden.

Parameter

id          -  ID-Nummer des Feldes

x            -  X-Position der linken oberen Ecke

y            -  Y-Position der linken oberen Ecke

breite   -  Breite des Feldes

hoehe  -  Höhe des Feldes

pause  -  Dauer der Invertierung beim Anklicken in Millisekunden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Rechteck 50 50 149 149

SymInvert 1 50 50 100 100 200

Rechteck 200 50 299 149

SymInvert 2 200 50 100 100 200

.L1

Ereignis wnd type scc

Cursor 1 1  "                                               "

Cursor 1 1  "Type = "type;  "  Scc = "scc

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMSPERREN

SYMFREI

SYMSTOP

SYMZEIGER

SYMFELDZEIGER


SYMSPERREN
SYMSPERREN  id

Dieser Befehl sperrt ein Schaltfeld, das mit den Befehlen SYMFELD oder SYMINVERT erzeugt wurde. Das Feld kann danach nicht mehr angeklickt werden. Die Sperrung kann mittels des Befehls SYMFREI wieder aufgehoben werden.

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMINVERT

SYMFREI

SYMSTOP

SYMZEIGER

SYMFELDZEIGER


SYMSTOP
SYMSTOP  id

Der Befehl SYMSTOP schaltet ein Symbolfeld wieder ab, das zuvor mit den Befehlen SYMFELD oder SYMINVERT erzeugt wurde.

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMINVERT

SYMSPERREN

SYMFREI

SYMZEIGER

SYMFELDZEIGER


SYMZEIGER
SYMZEIGER  typ

Mit diesem Befehl wird eingestellt, welches Aussehen der Mauszeiger annehmen soll, wenn er über ein Symbolfeld bewegt wird. Der Parameter typ gibt an, welcher Mauszeiger verwendet werden soll. Foglende Werte sind für typ zulässig:

    0  -  kein Mauszeiger

    1  -  Pfeil (Standardeinstellung)

    2  -  Sanduhr

    3  -  Fadenkreuz

    4  -  Linie mit aufgespaltenen Enden

    5  -  zeigende Hand

    6  -  hinweisende Hand

    7  -  Siegeszeichen

    8  -  OK-Zeichen

    9  -  Daumen hoch

   10 -  Daumen runter

   11 -  schreibende Hand

   12 -  grinsendes Gesicht

   13 -  neutrales Gesicht

   14 -  trauriges Gesicht

   15 -  Maus

   16 -  Diskette

   17 -  CD

   18 -  Tastatur

   19 -  Computer

   20 -  Telefon

   21 -  Buch

   22 -  Briefkasten

   23 -  Brief1

   24 -  Brief2

   25 -  Fahne

Mit dem Befehl SYMFELDZEIGER kann für ein bestimmtes Feld ein individueller Mauszeiger festgelegt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

SymZeiger 2

Rechteck 50 50 149 149

SymInvert 1 50 50 100 100 200

Rechteck 200 50 299 149

SymInvert 2 200 50 100 100 200

.L1

Ereignis wnd type scc

Cursor 1 1  "                                               "

Cursor 1 1  "Type = "type;  "  Scc = "scc

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

SYMFELD

SYMINVERT

SYMSPERREN

SYMFREI

SYMSTOP

SYMFELDZEIGER


SYSTEM
SYSTEM  "............"

Dieser Befehl startet ein externes Programm. In der Zeichenkette oder Stringvariablen, die dem Befehl SYSTEM als Parameter mitgegeben werden, muß der Programmname mit allen erforderlichen Aufrufparametern angegeben werden. Die Kontrolle wird dabei an das aufgerufene Programm übergeben. Nach der Beendigung des gerufenen Programms oder der Rückgabe der Programmkontrolle an das Laufzeitsystem, wird das Lernprogramm fortgesetzt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

"{+t}Das hier ist das Autorensystem Juggler."

System "pbrush"  !  Paintbrush wird aufgerufen.

Warte

Querverweis

Haupt-Index

Befehls-Index


TAB
TAB  tab

Dieser Befehl stellt die Spalte ein, an der die nächste Textausgabe im aktuellen Fenster erfolgen soll. Der Parameter 'tab' gibt die Spaltenposition abhängig von der Größe der aktuellen Schrift ein. Für die Berechnung der Spaltenposition wird die durchschnittliche Breite eines Zeichens dieser Schrift herangezogen. Die Einstellung der Zeile bleibt dabei unverändert.

Das dient dazu, Ausgabetexte tabellarisch zu gestalten, was bei der Verwendung von Proportionalschriften ansonsten etwas schwierig wird.

Eine pixelorientierte Tabulierung abhängig von der Größe der Schrift kann mit dem Befehl GRTAB erreicht werden.

Des weiteren können mit den Befehlen TAB und GRTAB Eingabefelder (Befehl EINGABE) positioniert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 5

"{+t}Franz Müller";

Tab 30   "Taubenweg 8";

Tab 60   "8000 München"

"Horst Kowalke";

Tab 30   "Am Deich 28";

Tab 60   "200 Hamburg"

"Norbert Irgendwer";

Tab 30   "Hügelstr. 25";

Tab 60   "3000 Hannover"

Warte

Querverweis

Haupt-Index

Befehls-Index

"............"VAR/VAR$

TEXT

GRTAB

CURSOR

GRCURSOR

EINGABE


TEIL
TEIL  qvar$  par1  par2  zvar$

Diese Anweisung übergibt einen Teil einer alphanumerischen Variablen (qvar$) an eine andere alphanumerische Variable (zvar$).

Parameter

qvar$   -  Quellvariable

 par1    -  Position, ab der übergeben wird

 par2    -  Anzahl der zu übergebenden Zeichen

 zvar$  -  Zielvariable

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

qvar$ = "Dies ist ein Text."

Teil qvar$ 6 7 zvar$

"Ergebnis = "zvar$    !  Zvar$ enthält die Zeichenkette "ist ein"

Warte

Querverweis

Haupt-Index

Befehls-Index

ERSETZE


TEXT
TEXT  "............"

Mit dem Befehl TEXT kann ein Text an   der aktuellen Cursorposition ausgegeben werden. Die Cursorposition kann mit den Befehlen CURSOR und GRCURSOR eingestellt werden. Die Position des Cursors wird nach einer Ausgabe automatisch hinter den ausgegebenen Text bzw. in die nächste Zeile gesetzt.

Die Schriftart, deren Parameter, sowie die Textattribute müssen zuvor mit den Befehlen TXDEF und TXATTRIB festgelegt werden. Standardmäßig ist die Systemschrift eingestellt. Die Werte für die Vorder- und Hintergrundfarbe des Textes werden durch die Befehle FARBE und GRUND eingestellt.

Falls Variablen in Verbindung mit dem Text ausgegeben werden sollen, so muß einfach der Name der Variablen direkt an das schließende Anführungszeichen angehängt werden. Es können auch mehrere Variablen auf einmal ausgegeben werden. In dem Fall müssen die einzelnen Variablennamen durch einen Schrägstrich getrennt werden.

Nach der Ausgabe von Text /Variablen wird ein Zeilenvorschub erzeugt, so daß die nächste Ausgabe in der nächsten Zeile beginnt. Dabei wird auch noch eine automatische Tabulierung vorgenommen, d.h. das erste Zeichen der neuen Zeile steht genau unter dem ersten Zeichen der vorigen Zeile.

Wird die TEXT-Anweisung durch ein Semikolon ( ';') abgeschlossen, dann wird der Zeilenvorschub unterlassen und die nächste Textausgabe wird unmittelbar an die vorige Ausgabe angehängt.

Eine Textausgabe kann sich über mehrere Zeilen erstrecken.

Textattribute innerhalb der Ausgabe verändern

In einer Textausgabe können die Attribute sowie die Hinter- und  Vordergrundfarbe des Textes verändert werden. Das ist z.B. sinnvoll, wenn ein einzelnes Wort unterstrichen, kursiv oder in einer anderen Farbe dargestellt werden soll. Attributanweisungen werden innerhalb des Textes in geschweifte Klammern eingeschlossen. Folgende Befehlskürzel sind innerhalb der Klammern erlaubt:

     w0  -  Strichstärke leicht

     w1  -  Strichstärke normal

     w2  -  Strichstärke fett

    +c  -  kursive Darstellung einschalten

     -c  -  kursive Darstellung abschalten

    +u  -  Unterstreichung einschalten

     -u  -  Unterstreichung abschalten

    +o  -  Umrandung einschalten

     -o  -  Umrandung abschalten

    +k  -  Durchstreichung einschalten

     -k  -  Durchstreichung abschalten

    +s  -  Schattenwurf einschalten

     -s  -  Schattenwurf abschalten

     +t  -  Transparenz einschalten

      -t  -  Transparenz abschalten

      fx  -  Vordergrundfarbe x einstellen

     gx  -  Hintergrundfarbe x einstellen

Beispiel:    Text "{+t}Dieses Wort wird {+u}unterstrichen{-u} dargestellt.

                      Die folgenden Worte werden dagegen {w2f4}fett und in der

                      Farbe rot{w1f0} dargestellt. Die nächste Sequenz

                      {+o+s+k}kombiniert mehrere Attribute{-o-s-k}."

Definition von Hypertextfeldern

Innerhalb einer Textausgabe können des weiteren sogenannte Hypertextfelder definiert werden. Dabei handelt es sich um farblich (oder durch ein anderes Attribut) hervorgehobene Stichworte, zu denen genauere Erklärungen abgerufen werden können. Eingeleitet wird die Definition eines Hypertextfeldes durch das Zeichen Klammeraffe ('@'). Diesem Zeichen folgt ein numerischer Wert, der dem Hypertextfeld zugeordnet wird und der das Feld definiert. Danach folgt in eckige Klammern eingeschlossen der Text des Hypertextfeldes. Wollen Sie in einem Text das Zeichen Klammeraffe ausgeben, dann schreiben Sie einfach zweimal das Zeichen hintereinander ("........@@........").

Die Farbe von Hypertextfeldern wird durch die Befehl HGRUND und HFARBE bestimmt. Die Textattribute eines Hypertextfeldes werden mittels des Befehls HATTRIB eingestellt.

Hypertextfelder werden durch den Befehl EREIGNIS kontrolliert. Wird ein Hypertextfeld angeklickt, dann gibt dieser Befehl den numerischen Wert, der dem Feld zugeordnet wurde, zurück. Des weiteren wird der Inhalt des Feldes in der Systemvariablen STICHW$ abgelegt.

Beispiel

!**********  Beispiel zu Textausgaben  **********

FenAuf 1 0 0 &breite &hoehe 2

a     = 5.134

b     = 28.97

var  = 167.8

name$[1]    = "Müller"

strasse$[3] = "Mühlstrasse"

Cursor 3 5

Text "{+t}Dies ist ein Lernprogramm" ! Mit Zeilenvorschub

Text "Variable A = "a                                ! Mit Zeilenvorschub

Text "Dies ist ein Lernprogramm";       ! Ohne Zeilenvorschub

Text "Variable A = "a;                               ! Ohne Zeilenvorschub

Text "Variablenliste = "a/b/name$[1]/strasse$[3]

Text ""var    ! Ausgabe einer Variablen ohne Text

Text ""          ! Zeilenvorschub

Text "Alle Tiere im {+c}Finsterwald{-c} duckten sich

in ihre Schlupflöcher und Höhlen.

Es war spät in der Nacht und hoch oben in den

Wipfeln der uralten knorrigen {w2+s}Fichten{w1-s}

heulte und brauste der

Sturmwind."  ! Ausgabe über mehrere Zeilen.

                         ! Es werden einige Worte durch veränderte Text-

                         ! attribute hervorgehoben.

Warte

FenLoesche 1

!**********  Beispiel zu Hypertextfeldern  **********

Cursor 5 5

Hfarbe 4      ! Farbe für Hypertext ROT

Hattrib "+u"  ! Attr. für Hypertext UNTERSTRICHEN

Text "Das menschliche @10[Herz] ist eines der wichtigsten

menschlichen Organe. Es sitzt im oberen Teil des

@11[Thorax]."

.L1

Ereignis wnd type scc

Cursor 5 10  "{-t}                                {+t}"

Cursor 5 10

Analyse scc

  :=10:  "STICHW$ = "stichw$  ! Stichwort HERZ

  :=11:  "STICHW$ = "stichw$  ! Stichwort THORAX

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

CURSOR

GRCURSOR

FARBE

GRUND

"............"VAR/VAR$

TXDEF

TXATTRIB

HGRUND

HFARBE

HATTRIB

EREIGNIS


TON

Dieser Befehl gibt einen Piepston aus. Damit kann z.B. auf fehlerhafte Eingaben eines Lernprogrammanwenders reagiert werden.

Voraussetzung ist, daß ein passender Audio-Treiber (für Soundkarte oder Speaker) installiert ist.

Querverweis

Haupt-Index

Befehls-Index


TXATTRIB
TXATTRIB  "............"

Mit dem Befehl TXATTRIB werden die Textattribute für die freie Schrift eingestellt. Die Attribute werden in Form einer Stringkonstante übergeben. Folgende Inhalte für die Stringkonstante sind möglich:

     w0  -  Strichstärke leicht

     w1  -  Strichstärke normal

     w2  -  Strichstärke fett

    +c  -  kursive Darstellung einschalten

     -c  -  kursive Darstellung abschalten

    +u  -  Unterstreichung einschalten

     -u  -  Unterstreichung abschalten

    +o  -  Umrandung einschalten

     -o  -  Umrandung abschalten

    +k  -  Durchstreichung einschalten

     -k  -  Durchstreichung abschalten

    +s  -  Schattenwurf einschalten

     -s  -  Schattenwurf abschalten

     +t  -  Transparenz einschalten

      -t  -  Transparenz abschalten

      fx  -  Vordergrundfarbe x einstellen

     gx  -  Hintergrundfarbe x einstellen

Alle Attribute können auch innerhalb einer Schreibenanweisung neu definiert werden. Attributanweisungen innerhalb einer Textausgabe müssen in geschweifte Klammern {....} eingeschlossen werden.

Beispiel:  Text "Die Programmierung von {+u}unterstrichenen Worten{-u} ist ein Kinderspiel."

Diese Anweisung erzeugt im Text eine Unterstreichung. Es können innerhalb der Klammern natürlich beliebig viele Attributanweisungen kombiniert werden.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Schriften definieren über eine Vorschaufunktion, in der alle Parameter für die Definition einer Schrift interaktiv eingestellt werden können. Mit dieser Funktion lassen sich am komfortabelsten Schriften erstellen. Die Befehle, die benötigt werden, um die derart definierte Schrift zu erzeugen, können dann direkt in den Programmtext übernommen werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 1

TxDef 1 15 0 0

TxAttrib "w1-c+u-k-o-s+t"

Cursor 5 5

Text "In diesem Beispiel sehen Sie, wie man die Attribute

für eine Textausgabe definieren kann. Die Einstellungen

gelten für die Standardschrift.

Der Text wird unterstrichen und transparent dargestellt.

Die Farbe ist Blau."

Warte

Querverweis

Haupt-Index

Befehls-Index

"..............."VAR/VAR$

TEXT

TXDEF

GRUND

FARBE


TXDEF
TXDEF  schrift  groesse  rotation  abstand

Mit dem Befehl TXDEF werden alle Parameter für die freie Schrift eingestellt. Alle Textausgaben, die über den Befehl TEXT ausgegeben werden, verwenden diese Einstellungen.

Parameter

schrift       -  Nummer der Schrift. Die Reihenfolge der Schriften (0 - n)

                      wird im Menü Optionen, Menüpunkt Schriften definieren,

                      Schalter Einstellen definiert. In diesem Programmteil

                      wird eine Liste der Schriften festgelegt, die vom Autoren-

                      system verwendet werden sollen. Dieser Parameter be-

                      zieht sich auf die Reihenfolge dieser Liste. Ist keine der-

                      artige Liste definiert, werden die Schriften verwendet, wie

                      sie im jeweiligen System definiert sind. Allerdings kann

                      diese Reihenfolge von Rechner zu Rechner differieren.

                       Wurde eine Liste festgelegt, dann wird diese Liste beim

                       Verlassen des Autorensystems in einer Datei namens

                       'juggler.fnt' abgespeichert. Diese Datei muß mit jedem

                       Lernprogramm ausgeliefert werden, das Textausgaben

                       macht, da sonst die korrekte Zuordnung der Schriften nicht

                       mehr gewährleistet ist.

groesse  -  Größe der Schrift

rotation    -  Rotation der Schrift

abstand  -  Divisor für den relativen Zeilenabstand. Der relative Zeilen-

                      abstand errechnet sich aus der Höhe einer Textausgabe

                      dividiert durch diesen Wert. Ist hier 0 definiert, dann werden

                      die Texte ohne Abstand aneinandergesetzt.

Vorschaufunktion

Das Autorensystem verfügt im Menü Optionen, Menüpunkt Schriften definieren über eine Vorschaufunktion, in der alle Parameter für die Definition einer Schrift interaktiv eingestellt werden können. Mit dieser Funktion lassen sich am komfortabelsten Schriften erstellen. Die Befehle, die benötigt werden, um die derart definierte Schrift zu erzeugen, können dann direkt in den Programmtext übernommen werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 1

TxDef 1 15 0 0

TxAttrib "w1-c+u-k-o-s+t"

Cursor 5 5

Text "In diesem Beispiel sehen Sie, wie man die Attribute

für eine Textausgabe definieren kann. Die Einstellungen

gelten für die Standardschrift.

Der Text wird unterstrichen und transparent dargestellt.

Die Farbe ist Blau."

Warte

Querverweis

Haupt-Index

Befehls-Index

"..............."VAR/VAR$

TEXT

TXATTRIB

GRUND

FARBE


UHRZEIT
UHRZEIT  stunde  minute  sekunde

Dieser Befehl ermittelt die aktuelle Systemzeit. Dem Befehl werden dazu drei numerische Variablen als Parameter mitgegeben, in denen Stunde, Minute und Sekunde der Uhrzeit abgelegt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Uhrzeit stunde minute sekunde

Cursor 5 5

"{+t}Aktuelles Uhrzeit: "stunde;    ":"minute;    ":"sekunde

Warte

Querverweis

Haupt-Index

Befehls-Index

ZEIT

DATUM

DGUHR

ANUHR


VIDEO
VIDEO  "..........."

Mit dem Befehl Video werden Anweisungen an eine installierte Video-Overlay-Karte oder an einen Treiber zum Abspielen von digitalem Video (AVI, DVI, Quicktime etc.) weitergegeben. Wie diese Anweisungen beschaffen sind, hängt von der Art der verwendeten Treiber ab. Handelt es sich z.B. unter Windows um MCI-Treiber, dann können zwischen den Anführungszeichen MCI-Kommandos zur Steuerung der Videokarte abgesetzt werden.

Mittels der Systemfunktion &VIDSTATUS kann abgefragt werden, ob der Video-Befehl erfolgreich ausgeführt wurde, oder ob ein Fehler aufgetreten ist.

Falls der Video-Treiber zu einem bestimmten Befehl einen Rückgabewert bereit hält, so kann dieser Wert mittels der Systemfunktion &VIDERGEBNIS$ abgefragt werden.

Querverweis

Haupt-Index

Befehls-Index

AUDIO

&VIDSTATUS

&VIDERGEBNIS$


VIRTAUF
VIRTAUF  breite  hoehe

Der Befehl VIRTAUF eröffnet ein sogenanntes 'virtuelles Fenster'. Es handelt sich hierbei um einen Bereich im Arbeitsspeicher des Computers, der in der Folge alle Ausgaben erhält. Die Ausgaben sind nicht auf dem Bildschirm zu sehen.

Das dient dazu, Fensterinhalte im Speicher vorzubereiten und diese Inhalte dann mittels des Befehls VIRTKOPIE in ein Fenster zu kopieren. Dabei können auch Überblendeffekte eingesetzt werden.

Der Umgang mit einem virtuellen Fenster sollte immer in der folgenden Reihenfolge geschehen:

1.  Virtuelles Fenster eröffnen (VIRTAUF).

2.  Ausgaben in virtuelles Fenster machen.

3.  Virtuelles Fenster in Zielfenster kopieren (VIRTKOPIE).

4.  Virtuelles Fenster wieder schließen (VIRTZU).

Es ist wichtig, daß das virtuelle Fenster nach der Ausgabe in das Zielfenster wieder geschlossen wird. Während ein virtuelles Fenster aktiv ist, können keine anderen Fenster geöffnet, geschlossen oder aktiviert werden. Des weiteren kann nicht auf eine Eingabe oder ein Ereignis mit den Befehlen WARTE oder EREIGNIS gewartet werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 15 15

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

VirtParam 5 0

VirtAuf &breite &hoehe

Stift 2 1 2

KsDef 200 240 1 1 1 1 4

XkSys 500 -100 200 10 20 "X-Achse"

YkSys 400 -100 100 10 20 "Y-Achse"

xy[1]  = 1	xy[2]  = 0	hoehe[1] = 80	breite[1] = 20

xy[3]  = 30	xy[4]  = 0	hoehe[2] = 40	breite[2] = 20

xy[5]  = 60	xy[6]  = 0	hoehe[3] = 90	breite[3] = 20

xy[7]  = 90	xy[8]  = 0	hoehe[4] = 10	breite[4] = 30

xy[9]  = 130	xy[10] = 0	hoehe[5] = 60	breite[5] = 20

xy[11] = 170	xy[12] = 0	hoehe[6] = 30	breite[6] = 20

mus[1] = 2	col1[1] = 9	col2[1] = 14

mus[2] = 3	col1[2] = 10	col2[2] = 13

mus[3] = 5	col1[3] = 11	col2[3] = 12

mus[4] = 7	col1[4] = 12	col2[4] = 11

mus[5] = 8	col1[5] = 13	col2[5] = 10

mus[6] = 9	col1[6] = 14	col2[6] = 9

Balken 6 xy hoehe breite mus col1 col2

xy[2]  = hoehe[1]

xy[4]  = hoehe[2]

xy[6]  = hoehe[3]

xy[8]  = hoehe[4]

xy[10] = hoehe[5]

xy[12] = hoehe[6]

Stift 1 1 0

Diagramm 6 xy 2

VirtKopie 1 0 0 1

VirtZu

Warte

Querverweis

Haupt-Index

Befehls-Index

VIRTKOPIE

VIRTLOESCHE

VIRTPARAM

VIRTZU


VIRTKOPIE
VIRTKOPIE  fid  x  y  effekt

Dieser Befehl kopiert den Inhalt eines virtuellen (unsichtbaren) Fensters in ein Fenster auf dem Bildschirm. Dabei kann das Kopieren auch mit Überblendeffekten erfolgen.

Parameter

fid	-  ID-Nummer des Zielfensters, in das die Inhalte des

   virtuellen Fensters kopiert werden sollen.

x	-  X-Koordinate im Zielfenster, an die kopiert werden soll.

y	-  Y-Koordinate im Zielfenster, an die kopiert werden soll.

effekt	-  Überblendeffekt

    0  -  absolutes Kopieren

    1  -  überblenden

    2  -  von oben nach unten

    3  -  von unten nach oben

    4  -  von links nach rechts

    5  -  von rechts nach links

    6  -  ausgehend von der Mitte nach oben und unten

    7  -  ausgehend von der Mitte nach links und rechts

    8  -  von oben und unten zur Mitte hin

    9  -  von links und rechts zur Mitte hin

  10  -  von innen nach aussen zoomen

  11  -  von aussen nach innen zoomen

  12  -  von oben nach unten einrollen

  13  -  von unten nach oben einrollen

  14  -  von links nach rechts einrollen

  15  -  von rechts nach links einrollen

Die Parameter für das Kopieren von Effekten können mit

dem Befehl VIRTPARAM eingestellt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

VirtParam 1 0

VirtAuf &breite &hoehe

GrfLaden 0 0 1 "earth.bmp"

VirtKopie 1 0 0 10

VirtZu

Warte

Querverweis

Haupt-Index

Befehls-Index

VIRTAUF

VIRTLOESCHE

VIRTPARAM

VIRTZU


VIRTLOESCHE

Der Befehl VIRTLOESCHE löscht den Inhalt eines virtuellen (unsichtbaren) Fensters. Nach dem Löschen können neue Ausgaben in das virtuelle Fenster gemacht werden, die dann mit dem Befehl BILDKOPIE in ein beliebiges Bildschirmfenster kopiert werden können.

Querverweis

Haupt-Index

Befehls-Index

VIRTAUF

VIRTKOPIE

VIRTPARAM

VIRTZU


VIRTPARAM
VIRTPARAM  groesse  pause

Mit diesem Befehl werden die Blockgröße und eine Verzögerungszeit für das Kopieren einer Grafik mit dem Befehl VIRTKOPIE unter Verwendung von Überblendeffekten eingestellt.

Je nach Effekt kann die Bedeutung dieser Parameter variieren.

Für den Effekt 1 (überblenden) gibt der Parameter 'groesse' die Kantenlänge in Pixeln für einen kopierten Block an. Für alle anderen Effekte gibt dieser Parameter an, wieviele Linien zwischen zwei Pausen kopiert werden sollen.

Der Parameter 'pause' gibt die Verzögerung zwischen zwei Kopiervorgängen an. Je größer dieser Wert ist, desto langsamer wird eine Grafik aufgeblendet.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

VirtAuf &breite &hoehe

Stift 1 1 5

Muster 4 5 14 0

Box 10 10 615 435 40 40

VirtKopie 1 0 0 1

VirtZu

Warte

FenLoesche 1

VirtParam 5 0  ! kleinere Blöcke

VirtAuf &breite &hoehe

Stift 1 1 5

Muster 4 5 14 0

Box 10 10 615 435 40 40

VirtKopie 1 0 0 1

VirtZu

Warte

FenLoesche 1

VirtParam 1 0  ! immer eine Linie

VirtAuf &breite &hoehe

Stift 1 1 5

Muster 4 5 14 0

Box 10 10 615 435 40 40

VirtKopie 1 0 0 10

VirtZu

Warte

FenLoesche 1

VirtParam 4 0  ! immer vier Linien

VirtAuf &breite &hoehe

Stift 1 1 5

Muster 4 5 14 0

Box 10 10 615 435 40 40

VirtKopie 1 0 0 10

VirtZu

Warte

FenLoesche 1

VirtParam 4 10000  ! jetzt etwas langsamer

VirtAuf &breite &hoehe

Stift 1 1 5

Muster 4 5 14 0

Box 10 10 615 435 40 40

VirtKopie 1 0 0 10

VirtZu

Warte

Querverweis

Haupt-Index

Befehls-Index

VIRTAUF

VIRTKOPIE

VIRTLOESCHE

VIRTZU


VIRTZU

Dieser Befehl schließt ein virtuelles (unsichtbares) Fenster wieder und gibt den durch dieses Fenster belegten Arbeitsspeicher wieder frei.

Es ist wichtig, daß nach dem Kopieren von Grafikinhalten, die in einem virtuellen Fenster vorbereitet wurden, das virtuelle Fenster sofort wieder geschlossen wird, da die Befehle WARTE und EREIGNIS gesperrt sind, solange ein virtuelles Fenster eröffnet ist.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

VirtParam 1 0

VirtAuf &breite &hoehe

GrfLaden 0 0 1 "earth.bmp"

VirtKopie 1 0 0 10

VirtZu

Warte

Querverweis

Haupt-Index

Befehls-Index

VIRTAUF

VIRTKOPIE

VIRTLOESCHE

VIRTPARAM


WARNUNG
WARNUNG  typ  ".........."  var

Dieser Befehl gibt eine Warnung in einer kleinen Dialogbox aus. Dabei wird das Warnzeichen des Basis-Fenstersystems (z.B. ein Ausrufungszeichen unter Windows) im linken Teil des Fensters angezeigt. Daneben wird der Text ausgegeben, der dem Befehl als Parameter übergeben wurde. Im unteren Teil der Dialogbox werden Schalter zur Bedienung der Dialogbox plaziert. Welche Schalter dies sind (OK-Schalter, Ja/Nein-Schalter) wird über den Typ angegeben.

Parameter

typ         -  Gibt an, welche Schalterkombinationen im unteren

                   Teil der Dialogbox plaziert werden sollen.

                      0  -  OK-Schalter

                      1  -  OK-Schalter und Abbrechen-Schalter

                      2  -  Ja-Schalter und Nein-Schalter

                      3  -  Ja-Schalter, Nein-Schalter und Abbrechen-Schalter

                      4  -  Wiederholen-Schalter und Abbrechen-Schalter

".........."  -  Text, der in der Dialogbox als Fehlermeldung ausge-

                   gegeben werden soll.

var         -  In dieser Variablen wird abgelegt, welcher Schalter durch

                  den Benutzer angeklickt wurde.

                    -1  -  Abbrechen

                     0  -  Nein

                     1  -  Ja

                     2  -  OK

                     3  -  Wiederholen

                   Der Wert, der vor dem Aufruf der Dialogbox in dieser

                   Variablen steht, bestimmt außerdem, welcher Schalter

                   als Standardschalter (d.h. der Schalter, der auch durch

                   Betätigung der Eingabetaste ausgelöst wird) definiert

                   ist. Steht z.B. in dieser Variablen eine 1, dann wird der

                  Ja-Schalter als Standardschalter definiert.

Beispiel

FenTitel 1 "Schriftentest"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 0

ret = 1  ! Ja-Schalter ist Standardschalter

Warnung 2 "Sie haben nur wenige Aufgaben gelöst. Wollen Sie wiederholen?" ret

Analyse ret

  :=0:  "{+t}Schön, dann nicht"

  :=1:  "{+t}Dann halt nochmal"

Aend

Warte

Wenn ret = 0 Dann  Stop  Wend

Querverweis

Haupt-Index

Befehls-Index

INFOMATION

FEHLER

FRAGE


WARTE

Der Befehl WARTE wartet auf eine Eingabe mittels der Tastatur oder der Maus. Der Aufbau eines Lernprogramms wird i.d.R. so sein, daß ein Fenster eröffnet wird und danach alle Grafiken, Texte und Bedienungselemente (Popup-Menüs, Schalter, Eingabefelder etc.) in dieses Fenster gezeichnet werden. Danach wird der Befehl WARTE aufgerufen, der auf eine Aktion des Benutzers wartet. Sobald eine Taste angeschlagen oder eine Maustaste angeklickt wird, wird der Befehl verlassen. Über die Systemfunktionen &FENID, &TYPE und &SCANCODE können dann die Parameter des Ereignisses abgefragt werden. Mit dem Befehl ANALYSE können diese Informationen dann ausgewertet werden.

Alle Informationen über das zuletzt aufgetretene Ereignis können auch über die folgenden Systemfunktionen abgefragt werden:

    &FENID              -  ID des Fensters, welches das Ereignis ausgelöst hat.

    &TYPE               -  Typ des Ereignisses

    &SCANCODE  -  Code oder ID des Elementes, welches das Ereignis ausgelöst hat.

    &TSTAT            -  Status der Modifizierer-Tasten (Shift, Strg, Alt).

    &MX                     -  X-Position der Maustaste bei einem Mausklick.

    &MY                     -  Y-Position der Maustaste bei einem Mausklick.

    &MT                     -  Gedrückte Maustaste.

    &MK                      -  Anzahl  der Mausklicks.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Grund 8

Hfarbe 2

Cursor 5 5

"Das menschliche @1[Herz] ist eines der

komplexesten menschlichen @2[Organe]. Es

sitzt im oberen Teil des @3[Thorax]."

Schalter 1 100 350 "OK"

Schalter 2 100 380 "Abbrechen"

.L1

Warte

Cursor 5 2

"                                                                                                     "

Cursor 5 2

Analyse &type

  :=0:  "Taste "&scancode;  " wurde gedrückt."

  :=1:  "Position "&mx;  "/"&my;  " wurde mit der Maus angeklickt."

  :=2:  "Schalter "&scancode;  " wurde angklickt."

  :=3:

  :=4:  "Hypertextfeld "stichw$;  " wurde angeklickt."

  :=5:

  :=6:

  :=7:

Aend

GeheZu L1

Querverweis

Haupt-Index

Befehls-Index

EREIGNIS

&FENID

&TYPE

&SCANCODE

&TSTAT

&MX

&MY

&MT

&MK

DAUER

TIMEOUT


WENN  .... DANN  ....  SONST  ....  WEND

Dieser Befehl erlaubt es, Anweisungen in Abhängigkeit von einer Bedingung (oder auch mehrerer Bedingungen) auszuführen. Die Bedingungen stehen dabei zwischen den Befehlen WENN und DANN. Danach folgen die Anweisungen, die ausgeführt werden sollen, wenn diese Bedingungen zutreffen. Der Block der Anweisungen, die in Abhängigkeit von der Bedingung ausgeführt werden sollen, wird durch das Befehlswort WEND abgeschlossen.

Es besteht darüber hinaus die Möglichkeit, einen alternativen Anweisungsblock zu definieren, der ausgeführt werden soll, wenn die Bedingung nicht zutrifft. In diesem Fall wird der erste Anweisungsblock durch den Befehl SONST abgeschlossen. Zwischen dem Befehl SONST und dem Befehl WEND stehen dann die Anweisungen, die ausgeführt werden sollen, wenn die Bedingung nicht zutrifft.

Folgende Vergleichskriterien sind in einer Bedingung erlaubt:

        =  gleich

        <  kleiner

        >  größer

      <=  kleiner gleich

      >=  größer gleich

      <>  ungleich

Dabei können mehrere Bedingungen miteinander verknüpft werden. Als Verknüpfungsoperatoren sind zulässig:

        UND

        ODER

        NICHT

Des weiteren können Bedingungszweige in Klammern gesetzt werden, um eine höhere Vergleichspriorität zu definieren.

WENN-DANN-Konstruktionen können bis zu zehnfach ineinander verschachtelt werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Cursor 5 2  "{+t}Geben Sie bitte einen Vornamen ein: ";

Eingabe 1 "L25" = var$

StdSchalter 1 &x1[5] &y1[5]  "OK"

Warte

Grein  ! Keine Unterscheidung zwischen Groß- und Kleinschreibung.

Wenn  name$ = "Thomas"  Dann

    "Sie haben meinen Vornamen eingegeben."

    "Ich bin entzückt."

Wend

! Jetzt kommt ein anderer Vergleich, in dem mehrere Bedingungen

! abgefragt werden.

! In diesem Vergleich wird auch ein alternativer Anweisungs-

! block definiert.

Wenn  a = 4 Und Nicht (b$ >= "abc" Oder d = 4)  Dann

    "Die (etwas wirren) Bedingungen sind erfüllt!"

    "Was immer diese auch bedeuten mgen."

Sonst

    "Die Bedingungen sind nicht erfüllt!"

    "Ist vielleicht auch besser so."

Wend

Querverweis

Haupt-Index

Befehls-Index

ANALYSE  ....  AEND

GREIN

GRAUS


WERT
WERT  var1$  var2

Dieser Befehl übergibt den Wert einer alphanumerischen Variablen (var1$) an eine numerische Variable (var2).

D.h. steht in Var1$ z.B. die Zeichenkette "27.361", dann wird der Variablen Var2 der numerische Wert 27.361 zugewiesen.

Stehen in Var1$ nichtnumerische Zeichen, dann wird die Umsetzung beim ersten nichtnumerischen Zeichen abgebrochen. Aus "2.3a458" wird dann die Zahl 2.3.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var1$ = "27.361"

Wert var1$ var2

"Inhalt von Var2 = "var2

var1$ = "2.3a458"

Wert var1$ var2

"Inhalt von Var2 = "var2

Warte

Querverweis

Haupt-Index

Befehls-Index

ZEICHEN


XKSYS
XKSYS  laenge  startwert  endwert  iv1  iv2  text

Dieser Befehl zeichnet den X-Schenkel eines Koordinatensystems mit Unterteilungsstrichen, Beschriftung, usw.

Die XY-Position des Nullpunktes des Koordinatensystems muß vorher mit dem Befehl KSDEF festgelegt werden.

Parameter

laenge     -  Länge des Koordinatenschenkels in Pixeln (bezogen auf

                      logisches Koordinatensystem).

starttwert  - Startwert des Wertebereichs, der auf dem Koordinaten-

                     schenkel dargestellt werden soll.

endwert  -  Endwert des Wertebereichs, der auf dem Koordinaten-

                     schenkel dargestellt werden soll.

iv1            -  Intervall, bezogen auf den Wertebereich, in dem Unter-

                     teilungsstriche gezogen werden sollen.

iv2            -  Intervall, bezogen auf den Wertebereich, in dem be-

                     schriftete Unterteilungsstriche gezogen werden sollen.

                     Ein beschrifteter Unterteilungsstrich wird etwas

                     größer gezeichnet als ein unbeschrifteter Unter-

                     teilungsstrich.

                     Für die Beschriftungen werden die Einstellungen durch

                     die Befehle TXDEF, TXATTRIB, GRUND und FARBE

                     verwendet.

text         -  Text, der an das Ende des Koordinatenschenkels ge-

                   schrieben werden soll. Es werden die Einstellungen

                   durch die Befehl TXDEF, TXATTRIB, GRUND und

                   FARBE  verwendet.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

Stift 2 1 2

KsDef 320 240 1 1 1 1 4

XkSys 500 -100 100 10 20 "X-Achse"

YkSys 400 -100 100 10 20 "Y-Achse"

Warte

Querverweis

Haupt-Index

Befehls-Index

KSDEF

YKSYS


XROLLBALKEN
XROLLBALKEN  bereich  schrittweite

Mit diesem Befehl wird dem aktuellen Fenster ein vertikaler Rollbalken zugeordnet. Werden in dem Fenster Ausgaben gemacht, die ganz oder teilweise außerhalb des sichtbaren Fensterbereiches liegen, dann kann mit dem Rollbalken der Fensterinhalt nach rechts oder links verschoben werden, um die nicht sichtbaren Fensterinhalte sichtbar zu machen. Das funktioniert sowohl mit Text als auch mit Grafik.

Parameter

bereich	-  Anzahl Pixel, um die die Fensterinhalte in vertikaler Richtung

   verschoben werden können.

schrittweite	-  Anzahl Pixel, um die bei einem Schritt verschoben wird.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 100 100 400 250 2

FenAuf 2 100 100 400 250 0

GrfLaden 0 0 1 "earth.bmp"

xRollBalken 240 10

yRollBalken 230 10

filter$ = "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

YROLLBALKEN


YKSYS
YKSYS  laenge  startwert  endwert  iv1  iv2  text

Dieser Befehl zeichnet den Y-Schenkel eines Koordinatensystems mit Unterteilungsstrichen, Beschriftung, usw.

Die XY-Position des Nullpunktes des Koordinatensystems muß vorher mit dem Befehl KSDEF festgelegt werden.

Parameter

laenge     -  Länge des Koordinatenschenkels in Pixeln (bezogen auf

                      logisches Koordinatensystem).

starttwert  - Startwert des Wertebereichs, der auf dem Koordinaten-

                     schenkel dargestellt werden soll.

endwert  -  Endwert des Wertebereichs, der auf dem Koordinaten-

                     schenkel dargestellt werden soll.

iv1            -  Intervall, bezogen auf den Wertebereich, in dem Unter-

                     teilungsstriche gezogen werden sollen.

iv2            -  Intervall, bezogen auf den Wertebereich, in dem be-

                     schriftete Unterteilungsstriche gezogen werden sollen.

                     Ein beschrifteter Unterteilungsstrich wird etwas

                     größer gezeichnet als ein unbeschrifteter Unter-

                     teilungsstrich.

                     Für die Beschriftungen werden die Einstellungen durch

                     die Befehle TXDEF, TXATTRIB, GRUND und FARBE

                     verwendet.

text         -  Text, der an das Ende des Koordinatenschenkels ge-

                    schrieben werden soll. Es werden die Einstellungen

                    durch die Befehle TXDEF, TXATTRIB, GRUND und

                    FARBE  verwendet.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Grund 15  Farbe 0

Txdef 4 10 0 0

Txattrib "w2-c-u-k-o-s+t"

Stift 2 1 2

KsDef 320 240 1 1 1 1 4

XkSys 500 -100 100 10 20 "X-Achse"

YkSys 400 -100 100 10 20 "Y-Achse"

Warte

Querverweis

Haupt-Index

Befehls-Index

KSDEF

XKSYS


YROLLBALKEN
YROLLBALKEN  bereich  schrittweite

Mit diesem Befehl wird dem aktuellen Fenster ein horizontaler Rollbalken zugeordnet. Werden in dem Fenster Ausgaben gemacht, die ganz oder teilweise außerhalb des sichtbaren Fensterbereiches liegen, dann kann mit dem Rollbalken der Fensterinhalt nach oben oder unten verschoben werden, um die nicht sichtbaren Fensterinhalte sichtbar zu machen. Das funktioniert sowohl mit Text als auch mit Grafik.

Parameter

bereich	-  Anzahl Pixel, um die die Fensterinhalte in horizontaler Richtung

   verschoben werden können.

schrittweite	-  Anzahl Pixel, um die bei einem Schritt verschoben wird.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 100 100 400 250 2

FenAuf 2 100 100 400 250 0

GrfLaden 0 0 1 "earth.bmp"

xRollBalken 240 10

yRollBalken 230 10

filter$ = "w1e11"

Warte

Querverweis

Haupt-Index

Befehls-Index

XROLLBALKEN


ZAEHLE
ZAEHLE  var1$  var2$  var3

Dieser Befehl ermittelt, wie oft eine Zeichenkette (var2$) in einer alphanumerischen Variablen (var1$) vorkommt und weist das Ergebnis einer numerischen Variablen (var3) zu.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var1$ = "cdfaadgaaamnklazdaaaanzd"

Zaehle var1$ "aa" var2

"Ergebnis = "var2    ! In Var2 steht, wie oft die Zeichenkette

                                      ! "aa" in dem String Var1$ vorkommt.

Warte

Querverweis

Haupt-Index

Befehls-Index

LAENGE


ZEICHEN
ZEICHEN  var1  var2$

Wandelt den Inhalt einer numerischen Variablen (var1) in eine Zeichenkette um und weist diese Zeichenkette einer alphanumerischen Variablen (var2$) zu.

Steht also in der Variablen Var1 die Zahl 27.361, so wird der Variablen Var2$ die Zeichenkette "27.361" zugewiesen.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

var1 = 27.361

Zeichen var1 var2$

"Inhalt von Var2$  =  "var2$

Warte

Querverweis

Haupt-Index

Befehls-Index

WERT

ZEIT  sek  msek

Dieser Befehl ermittelt die seit dem 1.1.1970 vergangenen Sekunden und legt sie in der numerischen Variablen sek ab. In der Variablen msek wird die Anzahl der Millisekunden abgelegt, die seit der letzten vollen Sekunde vergangen sind (d.h. diese Variable enthält einen Wert zwischen 0 und 999).

Dieser Befehl kann zur Messung von Zeitintervallen eingesetzt werden.

Der Befehl ist allerdings nicht auf allen Systemen auf die Millisekunde genau. Der Timer-Baustein in einem PC z.B. arbeitet mit einer Frequenz von 18,2. Der Befehl ist also nur auf ca. 50 Millisekunden genau.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf  1 0 0 &breite &hoehe 2

Zeit sek msek

Cursor 5 5

"{+t}Sekunden = "sek;    "    Millisekunden = "msek

Warte

Querverweis

Haupt-Index

Befehls-Index

UHRZEIT

DATUM

DGUHR

ANUHR


ZUFALL
ZUFALL  von  bis  var

Dieser Befehl erzeugt eine Zufallszahl deren Wert zwischen den durch die Parameter von und bis angegebenen numerischen Werte liegt und weist diese Zufallszahl der numerischen Variablen var zu.

Parameter

von  -  untere Grenze für die Zufallszahl.

bis   -  obere Grenze für die Zufallszahl.

var   -  numerische Variable, die das Ergebnis aufnimmt.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Zufall 10 100 var  ! Erzeugt eine Zufallszahl zwischen 10 und 100.

Cursor 5 5  "{+t}Ergebnis = "var

Warte

Querverweis

Haupt-Index

Befehls-Index


Systemvariablen

Das Autorensystem Juggler besitzt einige spezielle Variablen, die vom Laufzeitsystem selbst bei der Ausführung eines Lernprogramms ausgewertet werden. Diese Variablen nennt man Systemvariablen.  Mit Systemvariablen kann man verschiedene Funktionen des Laufzeitsystems steuern. Es gibt insgesamt 9 dieser Variablen, die im folgenden aufgeführt werden.

Um sich eine Hilfe zu einer bestimmten Systemvariablen geben zu lassen, ist es nicht erforderlich, jedesmal diese Indexliste aufzurufen. Wenn Sie mit dem Editor des Autorensystems arbeiten, dann positionieren Sie einfach den Cursor auf dem Befehlswort, der Systemvariablen oder der Systemfunktion, zu der Sie eine Hilfe wünschen und drücken Sie die Tastenkombination Strg-F1. Alternativ können Sie das Wort auch mit der rechten Maustaste anklicken. Sie bekommen daraufhin eine detaillierte Hilfe zu dem betreffenden Begriff angezeigt. Existiert kein Hilfetext zu dem angewählten Begriff, gibt das Hilfesystem eine Fehlermeldung aus.

TIMEOUT

DAUER

SDATEI$

LDATEI$

STICHW$

FILTER$

VIDEO$

AUDIO$

GRFLIB$


TIMEOUT

Dieser Systemvariablen wird ein numerischer Wert zugewiesen. Ist die Variable DAUER gesetzt und wartet das Lernprogramm auf eine Eingabe, dann wird nach Ablauf der durch DAUER definierten Zeit ein sogenannter Timeout erzeugt, d.h. der Befehl EREIGNIS oder WARTE wird verlassen. Als Ereignistyp wird der Wert 10 zurückgegeben. Als Scancode wird der Wert zurückgegeben, der zuvor der Variablen TIMEOUT zugewiesen wurde.

Beispiel

dauer	= 120	!  120 Sekunden warten

timeout	= 25	!  Als Scancode den Wert 25 zurückgeben

Ereignis wnd type scc

Querverweis

DAUER


DAUER

Der Variablen DAUER wird die Anzahl der Sekunden zugewiesen, die ein Eingabebefehl (WARTE, EREIGNIS) auf einen Tastendruck oder eine Mausaktion warten soll. Nach Ablauf dieser Zeit wird ein sogenanntes Timeout-Ereignis erzeugt, d.h. der Eingabebefehl wird verlassen. Als Ereignistyp wird der Wert 10 zurückgegeben. Als Scancode wird der Wert zurückgegeben, der zuvor der Systemvariablen TIMEOUT zugewiesen wurde.

Dies ist z.B. sinnvoll, wenn nach Ablauf einer bestimmten Zeit, in der keine Benutzeraktion erfolgt, in das Inhaltsverzeichnis des Lernprogramms zurückgesprungen werden soll.

Die Funktion der Variablen DAUER ist abgeschaltet, wenn DAUER den Wert 0 enthält.

Die Variable DAUER wird nach Beendigung des Befehls, der auf eine Eingabe gewartet hat, automatisch auf 0 gesetzt. DAUER muß also jedesmal neu gesetzt werden, wenn ein Timeout aktiv werden soll.

Beispiel

dauer	= 120	!  120 Sekunden warten

timeout	= 25	!  Als Scancode den Wert 25 zurückgeben

Ereignis  wnd  type  scc

Querverweis

TIMEOUT


SDATEI$

Dieser Systemvariablen wird der Name der Datei zugewiesen, in die mit dem Befehl DATEN geschrieben wird. Standardmäßig enthält diese Variable den Text 'JUGGLER.DAT'. Alle Ausgaben mit dem Befehl DATEN werden also in die Datei JUGGLER.DAT geschrieben.

Sollen die Ausgaben in eine andere Datei geschrieben werden, so kann der Variablen SDATEI$ ein anderer Dateiname zugewiesen werden.

Der Extension (Dateikennung) der Datei, in welche geschrieben werden soll, kommt dabei besondere Bedeutung zu. Lautet diese Kennung '.ANH', dann wird die Datei zum Anhängen von Daten (append) eröffnet. Neue Daten werden an die alten Daten angehängt. Die Datei wächst permanent.

Lautet die Dateikennung anders, dann wird die Datei durch den ersten DATEN-Befehl neu angelegt, d.h. eine alte Datei mit dem selben Namen wird gelöscht.

Beispiel

  name$	= "Karl Heinz Müller"

  adresse$	= "Petunienweg 24, 8000 München"

  telefon$	= "089/808080"

  Daten "Name    = "name$	! Diese Ausgaben werden in die

  Daten "Adresse = "adresse$	! Datei JUGGLER.DAT geschrieben.

  Daten "Telefon = "telefon$

  sdatei$ = "abc.dat"	! Jetzt werden alle Ausgaben in die

! Datei ABC.DAT geschrieben.

  Daten ""name$

  Daten ""adresse$

  Daten ""telefon$

  Warte

Querverweis

DATEN

LESE

LDATEI$


LDATEI$

Dieser Systemvariablen wird der Name der Datei zugewiesen, aus der mit dem Befehl LESE Daten eingelesen werden. Standardmäßig enthält diese Variable den Text 'JUGGLER.DAT'. Alle Eingaben mit dem Befehl LESE werden also der Datei JUGGLER.DAT entnommen.

Sollen die Eingaben von einer anderen Datei gelesen werden, so kann der Variablen LDATEI$ ein anderer Dateiname zugewiesen werden.

Beispiel

  a  =  5.7893

  b  =  213.89

  sdatei$  =  "abc.dat"  ! Geschrieben wird in die Datei ABC.DAT.

  Daten ""a/b

  Daten "Karl Heinz Müller"

  Daten "Petunienweg 24, 8000 München"

  Daten "089/808080"

  ldatei$ = "abc.dat"  ! Gelesen wird von der Datei ABC.DAT.

  Lese a  Lese b

  Lese name$

  Lese adresse$

  Lese telefon$

  "A       = "a

  "B       = "b

  "Name    = "name$

  "Adresse = "adresse$

  "Telefon = "telefon$

  Warte

Querverweis

DATEN

LESE

SDATEI$


STICHW$

In der Systemvariablen STICHW$ wird der Text des zuletzt mit der Maus angeklickten Hypertextfeldes abgelegt. Hypertextfelder sind Querverweise auf bestimmte Stichworte, die innerhalb einer Schreibenanweisung ".........." oder einer TEXT-Anweisung definiert werden können. Kontrolliert werden diese Felder durch die Befehle EREIGNIS und WARTE. Wird ein solches Hypertextfeld mit der Maus angeklickt, dann gibt EREIGNIS den numerischen Wert, der dem Hypertextfeld zugeordnet wurde, zurück. Des weiteren wird in der Systemvariablen STICHW$ der Text des Feldes abgelegt.

Des weiteren wird in dieser Variablen beim Anklicken eines Eintrages in einem Listenfeld (erzeugt mit den Befehlen LISTAUF und LISTEINTRAG) der Inhalt des angeklickten Eintrags abgelegt.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 14 14

FenAuf 1 0 0 &breite &hoehe 2

Grund 2  Farbe 0

TxDef 4 20 0 0

TxAttrib "w2-c-u-k-o-s+t"

hFarbe 4

hAttrib "+u"

Cursor 5 3

"{+u}Dies sind die Vorteile von Juggler PRO DVI 3.0{-u}

1. einfache Bedienung auf @10[SAA-Oberfläche]

2. Pulldown- und @11[Popup-Menüs]

3. Programmierung von 3-dimensionalen Buttons

4. vielseitige grafische @12[Gestaltungsmöglichkeiten]

5. umfangreiche @13[Analysewerkzeuge]

6. @14[Hypertext]-Funktion

<<< Beliebige Taste drücken >>>"

.L1

Warte

Wenn stichw$ <> "" Dann

    Information stichw$

Wend

stichw$ = ""

GeheZu L1


FILTER$

Wartet ein Lernprogramm auf eine Eingabe (EREIGNIS, WARTE) kann eine Vielzahl an Ereignissen (Taste gedrückt, Mausklick irgendwo im Fenster, Schalter angeklickt, Fenster durch Benutzer geschlossen) zurückgegeben werden, die in einer Analyse-Konstruktion ausgewertet werden müssen.

In vielen Fällen wird ein Großteil der möglichen Ereignisse nicht benötigt. Um einen korrekten Programmablauf sicherzustellen, müssen diese Ereignisse dennoch ausgewertet werden.

Um die Programmierung der Ereignisverarbeitung zu erleichtern und Arbeit einzusparen, wurde die Systemvariable FILTER$ eingeführt. Mit dieser Variablen können nur bestimmte Ereignisse zugelassen werden, die dann von den Ereignisbefehlen zurückgegeben werden. Des weiteren kann bestimmt werden, daß nur Ereignisse von bestimmten Fenstern zurückgegeben werden dürfen.

Um einen bestimmten Ereignistyp zuzulassen, muß in der Variablen FILTER$ ein 'E' mit dem nachgestellten Ereignistyp (numerischer Wert von 0 bis 11) angegeben werden. Eine Auflistung der möglichen Ereignistypen finden Sie in der Beschreibung der Systemfunktion &TYPE oder des Befehls EREIGNIS.

Um ein bestimmtes Fenster zuzulassen, muß ein 'W' mit der nachgestellten Fenster-ID angegeben werden. Wird kein Fenster im Filter angegeben, sind Ereignisse aus allen Fenstern zulässig.

Der Inhalt der Variablen FILTER$ wird nach jedem Ereignisbefehl (EREIGNIS, WARTE) gelöscht. Die Variable muß also vor jedem Ereignisbefehl neu gesetzt werden.

Beispiel

filter$  =  "e0"  !  Nur Tastendruck zulässig in allen Fenstern

Warte

filter$  =  "e0e1"  ! Tastendruck und Mausklick zulässig in allen Fenstern

filter$  =  "w1w2e2e11"	!  Es sind nur Ereignisse, die von den Fenstern mit

Warte	!  der ID 1 und 2 geliefert werden, zulässig. Außer-

!  dem werden nur die Ereignistypen 2 (Schalter

!  angeklickt) und 11 (Fenster durch Benutzer

!  geschlossen) zurückgeliefert.

Ein einfaches Beispiel wäre das folgende:

Sie eröffnen ein Dialogfenster, in dem Text und Grafik zur Anzeige gebracht werden. Das Fenster soll dann entweder mit einem Mausklick auf einen OK-Button oder durch das Fenstermenü geschlossen werden. Alle anderen Ereignisse sind an dieser Stelle uninteressant und sollen ausgefiltert werden.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

FenAuf 2 100 100 400 250 3

Schleife i = 1 Bis 200

    Zufall 0 400 x

    Zufall 0 250 y

    Zufall 0 50 rad

    Zufall 0 15 col

    Stift 1 1 col

    Kreis x y rad

Send

Cursor 2 2

"{+t}Hier wird einiges an Text und Grafik angezeigt."

Schalter 1 160 180 "OK"

filter$ = "w2e2e11"

Warte

FenZu 2

Warte


VIDEO$

Dieser Systemvariablen wird die Bezeichnung der Video-Treiber zugewiesen, an die mit dem Befehl VIDEO Kommandos übermittelt werden können. Standardmäßig ist hier unter Windows der Wert 'MCI' eingetragen, d.h. daß der Befehl VIDEO seine Parameter an das Media-Control-Interface übermittelt.

Z.Z. ist hier nur der Wert 'MCI' zulässig. Zu einem späteren Zeitpunkt wird das Autorensystem weitere Treiber unterstützen (z.B. 'DVI' für eine über das MCI hinausgehende Steuerung von DVI-Karten).

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 8 8

FenAuf 1 0 0 &breite &hoehe 2

Rahmen 280 150 319 239 2

FenGrund 2 1 0 0

FenAuf 2 280 150 319 239 0

Zeichen &FenSysId fid$

Video "open windsurf.avi type AviVideo alias xxx style overlapped"

cmd$ = "window xxx handle " + fid$

Video cmd$

Video "play xxx"

filter$ = "w1e11"

Warte


AUDIO$

Dieser Systemvariablen wird die Bezeichnung der Audio-Treiber zugewiesen, an die mit dem Befehl AUDIO Kommandos übermittelt werden können. Standardmäßig ist hier unter Windows der Wert 'MCI' eingetragen, d.h. daß der Befehl AUDIO seine Parameter an das Media-Control-Interface übermittelt.

Z.Z. ist hier nur der Wert 'MCI' zulässig.

Beispiel

FenTitel 1 "Hauptfenster"

FenAuf 1 0 0 &breite &hoehe 2

Audio "open c:\windows\xylophon.wav alias xxx"

Audio "play xxx"

Warte


GRFLIB$

In dieser Systemvariablen wird der Name einer Grafikbibliothek abgelegt, aus der mittels der Befehle GRFLADEN und BILDLADEN Bitmap-Grafiken geladen werden können. In einer Grafikbibliothek können beliebig viele Grafiken vom Typ BMP gespeichert werden, so daß statt vieler einzelner Grafikdateien nur eine große Datei verwaltet werden muß. Um Grafiken aus einer Bibliothek zu laden, muß nur der Dateiname der Bibliothek der Variablen GRFLIB$ zugewiesen werden. Beim Laden einer Grafik überprüft das Autorensystem zuerst, ob die Grafik in der Bibliothek enthalten ist. Ist das der Fall, wird die Grafik von dort geladen. Wenn nicht, versucht das Autorensystem die Grafik als externe Datei zu eröffnen.

Beispiel

FenTitel 1 "Hauptfenster"

FenGrund 1 1 15 15

FenAuf 1 0 0 &breite &hoehe 2

FenZeiger 1 2

GrfLaden 0 0 1 "earth.bmp"	!  Grafik wird als externe

grflib$ = "cat.lib"	!  Datei eröffnet.

BildLaden 1 0 "r_cat1.bmp"	!  Alle Grafiken fuer die

BildLaden 2 0 "r_cat2.bmp"	!  Animation werden

BildLaden 3 0 "r_cat3.bmp"	!  der Bibliothek

BildLaden 4 0 "r_cat4.bmp"	!  'cat.lib' entnommen.

BildLaden 5 0 "r_cat5.bmp"

BildLaden 6 0 "r_cat6.bmp"

BildLaden 7 0 "r_cat7.bmp"

BildLaden 8 0 "r_cat8.bmp"

BildLaden 9 0 "r_cat9.bmp"

FenZeiger 1 1

k1$[1] = "0 100 540 100"

k1$[2] = ""

ObjBewegen 1 "1-9" k1$ 100 8 1

Warte


Systemfunktionen

Eine Systemfunktion ähnelt einer Variablen. Genauso wie eine Variable kann eine Systemfunktion einer anderen Variablen zugewiesen werden oder als Parameter für einen Befehl dienen. Der wesentliche Unterschied ist, daß man einer Systemfunktion keinen Wert zuweisen kann. Systemfunktionen ermitteln Informationen über das laufende Lernprogramm und den Computer, auf dem das Lernprogramm läuft, zum Zeitpunkt ihrer Ausführung und stellen diese Informationen dem Lernprogramm zur Verfügung.

Um sich eine Hilfe zu einer bestimmten Systemfunktion geben zu lassen, ist es nicht erforderlich, jedesmal diese Indexliste aufzurufen. Wenn Sie mit dem Editor des Autorensystems arbeiten, dann positionieren Sie einfach den Cursor auf dem Befehlswort, der Systemvariablen oder der Systemfunktion, zu der Sie eine Hilfe wünschen und drücken Sie die Tastenkombination Strg-F1. Alternativ können Sie das Wort auch mit der rechten Maustaste anklicken. Sie bekommen daraufhin eine detaillierte Hilfe zu dem betreffenden Begriff angezeigt. Existiert kein Hilfetext zu dem angewählten Begriff, gibt das Hilfesystem eine Fehlermeldung aus.

&BREITE

&HOEHE

&XMAX

&YMAX

&TXPOS

&TYPOS

&MXPOS

&MYPOS

&FEHLER

&SCANCODE

&TYPE

&FENID

&TSTAT

&MX

&MY

&MT

&MK

&FENAKTIV

&FENSYSID

&DBSTATUS

&DLLSTATUS

&VIDSTATUS

&AUDSTATUS

&X1

&Y1

&X2

&Y2

&GRAFIK$

&SYSTEM$

&VERSION$

&CPU$

&VIDERGEBNIS$

&AUDERGEBNIS$


&BREITE

Gibt die horizontale Auflösung des Bildschirms in Pixeln zurück.


&HOEHE

Gibt die vertikale Auflösung des Bildschirms in Pixeln zurück.


&XMAX

Gibt die größte sichtbare X-Koordinate innerhalb des aktuellen Fensters zurück.


&YMAX

Gibt die größte sichtbare Y-Koordinate innerhalb des aktuellen Fensters zurück.


&TXPOS

Ermittelt die X-Koordinate des Textcursors innerhalb des aktuellen Fensters.


&TYPOS

Ermittelt die Y-Koordinate des Textcursors innerhalb des aktuellen Fensters.


&MXPOS

Ermittelt die X-Koordinate der aktuellen Position des Mauszeigers.


&MYPOS

Ermittelt die Y-Koordinate der aktuellen Position des Mauszeigers.


&FEHLER

Diese Systemfunktion gibt die Nummer des zuletzt aufgetretenen Fehlers zurück.


&SCANCODE

Diese Systemfunktion gibt den Scancode des zuletzt aufgetretenen Ereignisses zurück.


&TYPE

Diese Systemfunktion gibt den Typ des zuletzt aufgetretenen Ereignisses zurück. folgende Ereignistypen können vorkommen:

0  -   Eine Taste wurde gedrückt. Der Basiscode der

        Taste wird im Parameter SCANCODE abge-

         legt. Mit der Systemfunktion &TSTAT kann

         abgefragt werden, ob dabei eine Modfizierer-

        Taste (Shift, Strg, Alt) gedrückt wurde.

1  -  Eine Maustaste wurde gedrückt. Die genaue

        Position der Maus beim Anklicken kann mittels

        der Systemfunktionen &MX und &MY abgefragt

        werden. Mit der Systemfunktion &MT kann abge-

        fragt werden, welche Maustaste gedrückt wurde.

        Die Systemfunktion &MK liefert die Information,

        wie oft die Maustaste betätigt wurde.

2  -  Ein Schalter (erzeugt mit den Befehlen STDSCHALTER

        oder SCHALTER) wurde angeklickt. Die ID-Nummer

        des Schalters wird im Parameter SCANCODE abge-

        legt.

3  -  Ein Symbolfeld (erzeugt mit den Befehlen SYMFELD

        oder SYMINVERT) wurde angeklickt. Die ID-Nummer

        des Feldes wird im Parameter SCANCODE abge-

        legt.

 4  -  Ein Hypertextfeld wurde angeklickt. Die ID-Nummer

         des Feldes wird im Parameter SCANCODE abge-

         legt. Der Text des Hypertextfeldes kann mittels der

         Systemvariablen STICHW$ abgefragt werden.

 5  -  Ein Eintrag in einem Pulldown- oder Popup-Menü

         wurde angeklickt. Die ID-Nummer des Eintrags wird

         im Parameter SCANCODE abgelegt.

  6  -  Ein Eintrag in einer Liste (erzeugt mit LISTAUF) wurde

          angeklickt. Die Position des Eintrags in der Liste wird

          im Parameter SCANCODE abgelegt. Der Text des

          Listeneintrags wird in der Systemvariablen STICHW$

          abgelegt.

7  -  reserviert

8  -  reserviert

9  -  reserviert

10  -  Ein Timeout (definiert mittels der Systemvariablen

          DAUER und TIMEOUT) wurde ausgelöst. Der In-

          halt der Variablen TIMEOUT wird im Paramater

          SCANCODE abgelegt.

11  -  Ein Fenster wurde durch einen Benutzer ge-

          schlossen. Die ID-Nummer des geschlossenen

          Fensters wird im Parameter FENID abgelegt.


&FENID

Diese Systemfunktion gibt die ID-Nummer des fensters zurück, welches das letzte Ereignis ausgelöst hat.


&TSTAT

Tritt ein Ereignis vom Typ 0 (d.h. Taste gedrückt) auf, kann mittels dieser Systemfunktion abgefragt werden, welche Modifizierer-Taste (Shift, Alt, Control) gedrückt wurde. Folgende Werte werden durch die Funktion &TSTAT zurückgegeben:

0  -  kein Modifizierer gedrückt

1  -  Shift-Taste wurde gedrückt

2  -  Control-Taste wurde gedrückt

3  -  Alt-Taste wurde gedrückt


&MX

Diese Systemfunktion gibt nach einem Mausklick die X-Koordinate zurück, an welcher sich der Mauszeiger befindet.


&MY

Diese Systemfunktion gibt nach einem Mausklick die Y-Koordinate zurück, an welcher sich der Mauszeiger befindet.


&MT

Diese Systemfunktion gibt nach einem Mausklick zurück, welche Maustaste gedrückt wurde. Folgende Werte werden durch die Funktion &MT zurückgegeben:

0  -  Linke Maustaste wurde gedrückt

1  -  Mittlere Maustaste wurde gedrückt

2  -  Rechte Maustaste wurde gedrückt


&MK

Diese Systemfunktion gibt nach einem Mausklick zurück, wie oft die Maustaste betätigt wurde.


&FENAKTIV

Diese Systemfunktion gibt die ID-Nummer des aktiven Fensters zurück.


&FENSYSID

Manche Video-Treiber (z.B. MCI) verlangen die Angabe eines Fenster-Handles, um in diesem Fenster Video ausgeben zu können.

Mittels dieser Systemfunktion kann für das aktive Fenster das Fenster-Handle des zugrundeliegenden Basis-Fenstersystems ermittelt werden.


&DBSTATUS

Diese Systemfunktion gibt den Status der letzten Datenbankoperation zurück. Gibt die Systemfunktion den Wert 0 zurück, bedeutet dies, daß die letzte Datenbankoperation erfolgreich durchgeführt wurde.

Ein Wert größer 0 und kleiner 100 stellt eine Statusmeldung der Datenbank dar. Eine derartige Meldung wird z.B. zurückgegeben, wenn der Datenbankzeiger auf dem letzten Datensatz steht und versucht wird, einen weiteren Satz zu lesen.

Ein Wert größer 100 bedeutet, daá ein Datenbankfehler aufgetreten ist. In diesem Fall wird die Ausführung des Lernprogramms abgebrochen.

Im folgenden sind die wichtigsten Status- und Fehlermeldungen der Datenbank aufgeführt:

      0 - Funktion erfolgreich ausgeführt

      1 - Datensatz nicht gefunden

      2 - Datensatz existiert bereits

      3 - Datensatz ist als gelöscht markiert

      4 - Kein aktueller Datensatz

      5 - Zeitüberlauf

    101 - Fehler bei Eröffnung der Datenbank

    102 - Fehler bei Zugriff auf DBD-Datei

    103 - Ungültige Datenbank-Adresse

    104 - Ungültige Feldnummer

    105 - Fehler bei Lesen von DBF-Datei

    106 - Fehler bei Schreiben von DBF-Datei

    107 - Fehler beim Anhängen in DBF-Datei

    108 - Fehler beim Löschen in DBF-Datei

    109 - Ungültige Schlüsselbezeichnung

    110 - Fehler bei Zugriff auf Indexdateien

    201 - Zuwenig Speicherplatz auf Datenträger

    202 - Nicht genug Arbeitsspeicher


&DLLSTATUS
&DLLSTATUS[id]

Diese Systemfunktion gibt den Rückgabewert der zuletzt aufgerufenen DLL-Funktion zurück, die unter der angegebenen ID-Nummer geladen wurde.


&VIDSTATUS

Diese Systemfunktion gibt den Status der letzten Video-Operation zurück. Welchen Wert dieser Status hat, hängt vom verwendeten Video-Treiber ab. Werden die Video-Funktionen z.B. über das Media-Control-Interface (MCI) gesteuert, dann gibt diese Systemfunktion die Rückgabewerte der MCI-Treiber zurück. Wie diese Werte beschaffen sind und was sie bedeuten, muß der jeweiligen Treiber-Dokumentation entnommen werden.


&AUDSTATUS

Diese Systemfunktion gibt den Status der letzten Audio-Operation zurück. Welchen Wert dieser Status hat, hängt vom verwendeten Audio-Treiber ab. Werden die Audio-Funktionen z.B. über das Media-Control-Interface (MCI) gesteuert, dann gibt diese Systemfunktion die Rückgabewerte der MCI-Treiber zurück. Wie diese Werte beschaffen sind und was sie bedeuten, muß der jeweiligen Treiber-Dokumentation entnommen werden.


&X1
&x1[xx]

Umrechnung einer Textkoordinate in eine Grafikkoordinate. Für die Umrechnung wird die Größe der im aktuellen Fenster eingestellten Schrift herangezogen.

Beispiel

&x1[47]  -  Die Textkoordinate 47 wird abhängig von der Grafikauflösung in die entsprechende Grafikkordinate umgerechnet.


&Y1
&y1[xx]

Umrechnung einer Textkoordinate in eine Grafikkoordinate. Für die Umrechnung wird die Größe der im aktuellen Fenster eingestellten Schrift herangezogen.

Beispiel

&y1[47]  -  Die Textkoordinate 47 wird abhängig von der Grafikauflösung in die entsprechende Grafikkordinate umgerechnet.


&X2
&x2[xx]

Umrechnung einer Textkoordinate in eine Grafikkoordinate. Für die Umrechnung wird die Größe der im aktuellen Fenster eingestellten Schrift herangezogen.

Beispiel

&x2[47]  -  Die Textkoordinate 47 wird abhängig von der Grafikauflösung in die entsprechende Grafikkordinate umgerechnet.


&Y2
&y2[xx]

Umrechnung einer Textkoordinate in eine Grafikkoordinate. Für die Umrechnung wird die Größe der im aktuellen Fenster eingestellten Schrift herangezogen.

Beispiel

&y2[47]  -  Die Textkoordinate 47 wird abhängig von der Grafikauflösung in die entsprechende Grafikkordinate umgerechnet.


&GRAFIK$

Diese Systemfunktion gibt den Namen des Fenstersystems zurück, unter dem das Autorensystem gerade läuft. Folgende Rückgabewerte sind möglich:

Windows

Presentation-Manager

Macintosh

OSF-Motif


&SYSTEM$

Diese Systemfunktion gibt die Bezeichnung des Rechnersystems zurück, auf dem das Autorensystem gerade läuft. Folgende Rückgabewerte sind möglich:

PC

MAC

SUN


&VERSION$

Diese Systemfunktion gibt die Versionsbezeichnung des Fenstersystems zurück, auf dem das Autorensystem gerade läuft. Unter Windows 3.1 würde diese Funktion z.B. die Zeichenkette '3.1' zurückliefen.


&CPU$

Diese Systemfunktion gibt die Bezeichnung des Mikroprozessors zurück, der in dem Rechnersystem installiert ist, auf dem das Autorensystem gerade läuft. Folgende Rückgabewerte sind möglich:

Intel 80386

Intel 80486

Motorola 68000

Motorola 68010

Motorola 68020

Motorola 68030

Motorola 68040

SPARC


&VIDERGEBNIS$

Diese Systemfunktion gibt den Ergebniswert einer Video-Funktion als Zeichenkette zurück. Voraussetzung ist natürlich, daß die jeweilige Video-Funktion einen solchen Wert liefert. Das Media-Control-Interface (MCI) z.B. bietet verschiedene Funktionen an, die es erlauben, Informationen über eine bestimmte Video-Datei einzuholen, so kann z.B. die X- und Y-Auflösung der Bilder in einer AVI-Datei abgefragt werden. Das Ergebnis einer solchen Abfrage kann mit dieser Systemfunktion ermittelt werden.


&AUDERGEBNIS$

Diese Systemfunktion gibt den Ergebniswert einer Audio-Funktion als Zeichenkette zurück. Voraussetzung ist natürlich, daß die jeweilige Audio-Funktion einen solchen Wert liefert. Das Media-Control-Interface (MCI) z.B. bietet verschiedene Funktionen an, die es erlauben, Informationen über eine bestimmte Audio-Datei einzuholen. Das Ergebnis einer solchen Abfrage kann mit dieser Systemfunktion ermittelt werden.


Datei

In diesem Menü können Sie ein Lernprogramm anlegen, zur Bearbeitung eröffnen, abspeichern oder ausdrucken. Des weiteren steht ein Menüpunkt zur Verfügung, um das Lernprogramm zu beenden.

Das Menü enthält die folgenden Punkte:

Neu

Öffnen

Speichern

Speichern unter

Drucken

Druckerinstallation

Beenden


Datei/Neu

Mit diesem Menüpunkt wird ein Lernprogramm neu angelegt. Zur Abfrage eines Dateinamens für das Lernprogramm wird eine Dateiauswahlbox aufgeblendet. Hier wird der Name des Lernprogramms eingegeben. Der Dateiname muß die Kennung .MOD haben. Falls ein Lernprogramm unter diesem Namen bereits existiert, wird eine Sicherheitsabfrage vorgenommen, ob das alte Programm überschrieben werden soll. Wird diese Abfrage bestätigt, dann wird das Lernprogramm auf der Festplatte angelegt. Im Anschluß wird das Programm zur Bearbeitung eröffnet. Für das Modul START wird automatisch ein Editofenster geöffnet.


Datei/Öffnen

Mit diesem Menüpunkt wird ein Lernprogramm zur Bearbeitung eröffnet. Zur Abfrage des Dateinamens des Lernprogramms wird eine Dateiauswahlbox aufgeblendet. Hier wird der Name des Lernprogramms eingegeben. der Dateiname muß die Kennung .MOD haben. Nach der Auswahl des Lernprogramms wird eine Modulauswahlbox aufgeblendet, in dem ein Modul des Lernprogramms zur Bearbeitung ausgewählt werden kann.

Das Lernprogramm muß zuvor mit dem Menüpunkt Datei/Neu angelegt worden sein.


Datei/Speichern

Nach Aufruf dieses Menüpunkts werden alle zur Bearbeitung eröffneten Module des Lernprogramms abgespeichert.

Soll nur das aktuell bearbeitete Modul abgespeichert werden, dann muß der Menüpunkt Modul/Speichern aufgerufen werden.


Datei/Speichern unter

Nach Aufruf dieses Menüpunkts wird das gerade bearbeitete Lernprogramm unter einem anderen Namen abgespeichert. Der neue Dateiname wird zuvor in einer Dateiauswahlbox abgefragt.


Datei/Drucken

Mit dieser Funktion kann das aktuell eröffnete Lernprogramm ausgedruckt werden. Vor dem Ausdrucken wird eine Dialogbox eröffnet, in der alle Parameter (Kopfzeile, Fußzeile, Zeilennumerierung etc.) eingestellt werden können.


Datei/Druckerinstallation

Diese Funktion ruft eine Dialogbox zur Konfiguration des angeschlossenen Druckers auf.


Datei/Beenden

Nach Aufruf dieses Menüpunktes wird das Autorensystem beendet und aus dem Arbeitsspeicher entfernt.

Vor dem Beenden des Programms werden alle veränderten Module automatisch abgespeichert.


Bearbeiten

In diesem Menü stehen Ihnen Funktionen zum Zugriff auf die Zwischenablage (Clipboard) Ihres Systems zur Verfügung.

Die Zwischenablage dient dazu, Daten zwischen verschiedenen Applikationen oder auch innerhalb einer Applikation zu kopieren oder zu verschieben.

Folgende Funktionen stehen zur Verfügung:

Rückgängig

Ausschneiden

Kopieren

Einfügen

Löschen


Bearbeiten/Rückgängig

Mit diesem Befehl wird der letzte Blockbefehl oder das letzte Zeilenlöschen rückgängig gemacht. Der Editortext wird wieder so hergestellt, wie er vor der Lösch- oder Verschiebeoperation war.


Bearbeiten/Ausschneiden

Dieser Befehl entfernt einen markierten Text aus dem aktuell bearbeiteten Modul und kopiert ihn in die Zwischenablage.

Sie können dann mit Bearbeiten/Einfügen den Text in irgendein anderes Modul einfügen (oder auch im selben Modul an anderer Stelle).

Da der Text in der Zwischenablage verbleibt, kann er beliebig oft eingefügt werden.


Bearbeiten/Kopieren

Dieser Befehl kopiert den markierten Text in die Zwischenablage, ohne ihn dabei aus dem Modul zu entfernen.

Mit dem Befehl Bearbeiten/Einfügen können Sie den Text in ein anderes Modul kopieren.

Um Text aus einem Hilfefenster zu kopieren, müssen Sie den Text anzeigen und dann Bearbeiten/Kopieren wählen. Dabei wird der gesamte Inhalt des Fensters in die Zwischenablage kopiert.


Bearbeiten/Einfügen

Der Befehl Einfügenfügt den markierten Text aus der Zwischenablage im aktuellen Editofenster an der aktuellen Cursorposition ein.


Bearbeiten/Löschen

Der Befehl Löschenlöscht den markierten Text, ohne ihn in die Zwischenablage zu kopieren.

Ein Einfügen des Textes wie bei Bearbeiten/Ausschneiden oder Bearbeiten/Kopieren ist daher nicht möglich.


Modul

Dieses Menü bietet Funktionen zum Zugriff und zur Bearbeitung von Lernprogramm-Modulen.

Folgende Funktionen stehen zur Verfügung:

Öffnen

Speichern

Schließen

Anlegen

Löschen

Umbenennen

Kopieren

Einlagern


 Modul/Öffnen

Dieser Befehl eröffnet eine Dialogbox zur Auswahl eines Lernprogramm-Moduls. In dieser Dialogbox werden alle Module innerhalb des aktuell eröffneten Lernprogramms aufgelistet.

Soll ein Modul neu angelegt werden, so muß dies mit der Funktion Modul/Anlegen erfolgen.


Modul/Speichern

Dieser Befehl bewirkt das Abspeichern des aktuell bearbeiteten Moduls.


Modul/Schließen

Dieser Befehl schließt das aktuelle Editorfenster. Das Modul, das in diesem Fenster bearbeitet wird, wird zuvor abgespeichert. Es ist also nicht erforderlich, ein Modul vor dem Schließen explizit abzuspeichern.


Modul/Anlegen

Der Befehl Anlegen blendet eine kleine Dialogbox auf, in welcher der Name eines Moduls eingegeben werden kann, das neu angelegt werden soll.

Existiert bereits ein Modul unter diesem Namen, dann wird eine Fehlermeldung ausgegeben. In diesem Fall muß das alte Modul mit dem Befehl Modul/Löschen aus dem Lernprogramm entfernt werden.


Modul/Löschen

Der Befehl Löschen blendet eine kleine Dialogbox auf, in welcher der Name eines Moduls eingegeben werden kann, das aus dem Lernprogramm entfernt werden soll.

Falls kein Modul mit dem angegebenen Namen existiert, wird eine Fehlermeldung ausgegeben.

Das Löschen des Moduls START ist nicht erlaubt.


Modul/Umbenennen

Mit dem Befehl Umbenennen kann der Name eines Moduls geändert werden. Zu diesem Zweck wird eine Dialogbox aufgeblendet, in welcher der alte und der neue Name des Moduls eingegeben wird.

Falls kein Modul unter dem angegebenen alten Namen existiert oder falls es bereits ein Modul unter dem neuen Namen gibt, wird eine Fehlermeldung ausgegeben.

Das Umbennen des Moduls START ist nicht erlaubt.


Modul/Kopieren

Mit dem Befehl Kopieren kann ein Modul kopiert werden. Zu diesem Zweck wird eine Dialogbox aufgeblendet, in welcher die Namen des Quell- und des Zielmoduls eingegeben werden. Das Zielmodul darf noch nicht existieren.

Falls kein Modul unter dem angegebenen Namen des Quellmoduls existiert oder falls es bereits ein Modul mit dem Namen des Zielmoduls gibt, wird eine Fehlermeldung ausgegeben.


Modul/Einlagern

Mit diesem Befehl können Module aus einem anderen Lernprogramm in das aktuell bearbeitete Lernprogramm eingelagert werden.

Zu diesem Zweck wird zuerst eine Dateiauswahlbox aufgeblendet, in welcher der Name des Lernprogramms eingegeben werden muß, aus dem Module übernommen werden sollen.

Danach wird eine Dialogbox aufgeblendet, die zwei Listen enthält. In der linken Liste sind alle Module aufgelistet, die in dem Programm enthalten sind, aus dem Module übernommen werden sollen. In der rechten Liste werden die Module eingetraten, die kopiert werden sollen.


Compiler

Aus diesem Menü heraus kann der Juggler- Compiler aufgerufen werden. Je nach Art des Aufrufs wird ein einzelnes Modul oder ein ganzes Lernprogramm compiliert. Außerdem können Lernprogramme aus diesem Menü heraus gestartet werden.

Folgende Funktionen stehen zur Verfügung:

Modul compilieren

Mit Make compilieren

Make & Start

Alles compilieren

Ab Modul starten


Compiler/Modul compilieren

Nach Aufruf dieser Funktion wird nur das aktuell bearbeitete Modul compiliert. Dies dient dazu, die Syntax des aktuell bearbeiteten Moduls zu überprüfen.


Compiler/Mit Make compilieren

Nach Aufruf dieser Funktion werden alle Module, die seit der letzten Compilierung verändert wurden, neu compiliert. Danach wird das Programm gelinkt.

Tritt während des Compilierens oder des Linkens ein Fehler auf, wird der Prozeß abgebrochen und der Fehler wird angezeigt.

Konnte das Programm erfolgreich compiliert und gelinkt werden, wird eine Statistikbox aufgeblendet, in der die wichtigsten Parameter des Programms angezeigt werden.


Compiler/Make & Start

Nach Aufruf dieser Funktion werden alle Module, die seit der letzten Compilierung verändert wurden, neu compiliert. Danach wird das Programm gelinkt.

Tritt während des Compilierens oder des Linkens ein Fehler auf, wird der Prozeß abgebrochen und der Fehler wird angezeigt.

Konnte das Programm fehlerfrei compiliert werden, wird das Programm anschließend gestartet.


Compiler/Alles compilieren

Dieser Befehl bewirkt das Compilieren und Linken aller Module, unabhängig davon, ob sie zwischenzeitlich verändert wurden oder nicht.

Tritt während des Compilierens oder des Linkens ein Fehler auf, wird der Prozeß abgebrochen und der Fehler wird angezeigt.

Konnte das Programm erfolgreich compiliert und gelinkt werden, wird eine Statistikbox aufgeblendet, in der die wichtigsten Parameter des Programms angezeigt werden.


Compiler/Ab Modul starten

Nach Aufruf dieser Funktion werden alle Module, die seit der letzten Compilierung verändert wurden, neu compiliert. Danach wird das Programm gelinkt.

Tritt während des Compilierens oder des Linkens ein Fehler auf, wird der Prozeß abgebrochen und der Fehler wird angezeigt.

Konnte das Programm fehlerfrei compiliert werden, wird das Programm anschließend ab dem aktuell bearbeiteten Modul gestartet.


Optionen

In diesem Menü finden sich Funktionen, die der Einstellung der diversen Parameter dienen, welche die Arbeitsweise des Autorensystems direkt beeinflussen.

Folgende Funktionen stehen zur Verfügung:

Compiler-Optionen

Makros bearbeiten

Definitionen bearbeiten

Werkzeuge einstellen

Schriften definieren

Muster definieren


Optionen/Compiler-Optionen

Hier werden verschiedene Parameter für den Compiler eingestellt. Des weiteren werden die Aufrufparameter für das Laufzeitsystem eingestellt.


Optionen/Makros bearbeiten

Die Tastenkombinationen Alt-A bis Alt-Z können mit selbstdefinierten Makros (Zeichenketten) belegt werden. Man kann auf diese Weise z.B. Juggler-Befehle einer Tastenkombination zuweisen.

Der Befehl Makros bearbeiten eröffnet eine Dialogbox, in der Tastenkombinationen mit Makros belegt werden können.


Optionen/Definitionen bearbeiten

In das Autorensystem ist ein sogenannter Präprozessor eingebaut. Mit einem Präprozessor werden vor der Compilierung eines Moduls Zeichenketten durch einen anderen Text ersetzt.

In dieser Funktion können Textmakros zusammen mit dem Austauschtext definiert werden. Dazu wird eine Dialogbox aufgeblendet, in der die Textmakros eingetragen werden.


Optionen/Werkzeuge einstellen

Dieser Befehl öffnet eine Dialogbox, in der zusätzliche Werkzeuge für die Arbeit des Autorensystems eingestellt werden können. Dabei handelt es sich um externe Programme, die aus dem Autorensystem aufgerufen werden können.

Es gibt dabei zwei unterschiedliche Methoden, um externe Programme aufzurufen. Bei der ersten Methode wird einer bestimmten Dateikennung (z.B. BMP) ein Programm (z.B. pbrush.exe) zugeordnet. Wird dann später in einem Editorfenster mit der Maus auf einen Dateinamen doppelgeklickt, der diese Dateikennung enthält, dann wird die zugehörige Applikation automatisch gestartet.

Bei der zweiten Methode werden einfach den Tastenkombinationen Alt-1 bis Alt-9 Programme zugeordnet, die beim Drücken der jeweiligen Tastenkombination aufgerufen werden.


Optionen/Schriften definieren

Dieser Befehl öffnet eine Dialogbox, in der alle Parameter für eine Grafikschrift interaktiv eingestellt werden können. In einem Unterfenster wird eine Schriftprobe angezeigt, die den Einstellungen ständig angepaßt wird.

Auf diese Weise kann man sich die gewünschte Schrift für eine Textausgabe des Autorensystems interaktiv erzeugen.

In einem weiteren Unterfenster werden die Juggler-Befehle angezeigt, die erforderlich sind, um eine Schrift mit diesem Aussehen zu erzeugen. Wird die Dialogbox mit dem OK-Button geschlossen, dann werden diese Befehle im aktuellen Editorfenster an die aktuelle Cursorposition kopiert.


Optionen/Muster definieren

Dieser Befehl öffnet eine Dialogbox, in der alle Parameter für das Aussehen eines Grafikobjekts (Kreis, Rechteck etc.) interaktiv eingestellt werden können. In einem Unterfenster wird als Beispiel das Aussehen eines Kreises und eines Rechtecks mit den gegebenen Einstellungen angezeigt.

Auf diese Weise können Füllmuster und Umrandung für die Ausgabe eines Grafikobjekts interaktiv eingestellt werden.

In einem weiteren Unterfenster werden die Juggler-Befehle angezeigt, die erforderlich sind, um ein Füllmuster und eine Umrandung mit diesem Aussehen zu erzeugen. Wird die Dialogbox mit dem OK-Button geschlossen, dann werden diese Befehle im aktuellen Editorfenster an die aktuelle Cursorposition kopiert.


Fenster

In diesem Menü werden Funktionen zur Verfügung gestellt, die es erlauben, die eröffneten Editorfenster und Symbole nach unterschiedlichen Kriterien zu ordnen.

Folgende Funktionen stehen zur Verfügung:

Horizontal ordnen

Vertikal ordnen

Überlappend ordnen

Symbole ordnen

Alle schließen


Fenster/Horizontal ordnen

Dieser Befehl ordnet alle offenen Editorfenster auf dem Bildschirm übereinander an, so daß sie sich nicht gegenseitig verdecken.


Fenster/Vertikal ordnen

Dieser Befehl ordnet alle offenen Editorfenster auf dem Bildschirm nebeneinander an, so daß sie sich nicht gegenseitig verdecken.


Fenster/Überlappend ordnen

Dieser Befehl stapelt alle offenen Editorfenster übereinander, so daß jedes die gleiche Größe wie die anderen hat und nur ein Teil des darunterliegenden Fensters sichtbar ist.


Fenster/Symbole ordnen

Der Befehl Symbole anordnen ordnet alle Symbole, die minimierte Editorfenster darstellen, auf dem Desktop neu an. Die Symbole werden dabei gleichmäßig, in der linken unteren Ecke des Desktops beginnend, angeordnet.


Fenster/Alle schließen

Der Befehl Alle schließen schließt alle geöffneten Editorfenster auf dem Desktop. Die in den Editorfenstern bearbeiteten Module werden vor dem Schließen des jeweiligen Fensters automatisch gespeichert.


Hilfe

Dieses Menü bietet verschiedene Funktionen an, die Zugang zum Windows-Hilfesystem bieten und die des weiteren verschiedene Informationen über das Betriebssystem, auf dem das Autorensystem läuft, liefern.

Folgende Funktionen stehen zur Verfügung:

Index

Hilfe verwenden

Info

System


Hilfe/Index

Die Online-Hilfe verfügt über  einen umfassenden Index  zu Aufbau und Inhalt des Hilfe-Menüs.

Sie gelangen aus dem Index in das Hilfesystem, indem Sie eines der  hervorgehobenen Wörter oder Ausdrücke anklicken oder mit dem Tabulator anwählen und dann die Eingabetaste drücken.

Wählen Sie den Befehl Hilfe verwenden aus dem Hilfe-Menü, wenn Sie nicht wissen, wie ein Hilfesystem unter Windows zu bedienen ist.


Hilfe/Hilfe verwenden

Dieser Befehl beschreibt den Umgang mit dem Juggler-Hilfesystem (oder einem anderen Hilfesystem unter Windows).


Hilfe/Info

Dieser Befehl blendet eine kleine Dialogbox auf, die Ihnen Informationen über das Copyright und die Version des Autorensystems liefern.


Hilfe/System

Dieser Befehl blendet ein Fenster auf, in dem Informationen über die Betriebssystemplattform, auf der das Autorensystem läuft, zu finden sind.


Copyright-Info

In dieser Dialogbox werden Informationen zum Copyright und der Version des Autorensystems eingeblendet.


System-Information

In dieser Dialogbox werden Ihnen Informationen über das Computersystem und das Betriebssystem, auf dem das Autorensystem läuft, angezeigt.

Folgende Informationen werden angezeigt:

Typ des Computersystems

Mikroprozessor

Grafische Oberfläche

Grafikauflösung


Modul öffnen/löschen

In dieser Dialogbox geben Sie den Namen eines Lernprogramm-Moduls ein, das Sie zur Bearbeitung eröffnen oder aus dem Lernprogramm enternen möchten.

Sie können den Namen des Moduls in dem Eingabefeld im oberen Teil der Dialogbox eingeben. Bestätigen Sie den Namen danach durch Anklicken des OK-Schalters oder durch das Betätigen der Eingabetaste.

Im unteren Teil der Dialogbox werden in einer Liste alle Module des Lernprogramms angezeigt. Ein einfaches Anklicken eines Modulnamens mit der Maus kopiert den Namen in das Eingabefeld im oberen Teil. Der Name muß danach nur noch mit dem OK-Schalter oder der Eingabetaste bestätigt werden.

Wenn Sie ein Modul eröffnen möchten, wird das Modul sofort zur Bearbeitung eröffnet, wenn Sie auf den Modulnamen einen Doppelklick mit der Maus durchführen. Bei der Funktion 'Modul löschen' wurde dieses Feature aus Sicherheitsgründen gesperrt, um dem versehentlichem Löschen eines Moduls vorzubeugen.

Um die Funktion abzubrechen, betätigen Sie den Abbrechen-Schalter oder drücken Sie die ESC-Taste.


Modul anlegen

In dieser Dialogbox geben Sie den Namen eines Lernprogramm-Moduls ein, das neu angelegt werden soll.

Geben Sie den Namen des Moduls dazu in dem Eingabefeld ein und bestätigen Sie die Eingabe danach mit dem OK-Schalter oder der Eingabetaste.

Falls das Modul schon existiert, wird eine Fehlermeldung ausgegeben.

Um die Funktion abzubrechen, betätigen Sie den Abbrechen-Schalter oder drücken Sie die ESC-Taste.


Modul kopieren/umbenennen

Mit dieser Dialogbox kann ein Modul kopiert oder umbenannt werden.

Im ersten Eingabefeld geben Sie den Namen für das Modul ein, das kopiert oder umbenannt werden soll.

Im zweiten Eingabefeld geben Sie den neuen Namen für das Modul ein. Bestätigen Sie Ihre Eingaben dann mit dem OK-Schalter oder der Eingabetaste.

Im unteren Teil der Dialogbox werden in einer Liste alle Module des Lernprogramms angezeigt. Ein einfaches Anklicken eines Modulnamens mit der Maus kopiert den Namen in das erste Eingabefeld.

Falls das Quellmodul noch nicht, bzw. falls das Zielmodul bereits existiert, dann wird eine Fehlermeldung ausgegeben.

Um die Funktion abzubrechen, betätigen Sie den Abbrechen-Schalter oder drücken Sie die ESC-Taste.


Compiler-Optionen

In dieser Dialogbox stellen Sie verschiedene Parameter ein, welche die Arbeit des Juggler-Compilers beeinflussen.

Die Dialogbox ist in zwei Gruppen unterteilt.

In der ersten Gruppe finden Sie eine Reihe von Ja/Nein-Feldern, die mit der Maus umgeschaltet werden. Folgende Felder sind hier vorhanden:

Bakfile erzeugen

Ist diese Option eingeschaltet, dann wird vor jeder Compilierung eine Sicherung des Lernprogramms angelegt (Programmname + Dateikennung .BAK).

Mapfile erzeugen

Ist diese Option eingeschaltet, dann wird ein sogenanntes Mapfile (Programmname + Dateikennung .MAP) erzeugt, in dem tabellarische Informationen über das Lernprogramm (alle Vorkommen von Variablen, Konstanten, Modulaufrufe etc.) aufgelistet werden.

Textfile erzeugen

Ist diese Option eingeschaltet, dann wird ein Textfile (Programmname + Dateikennung .TXT) erzeugt, in dem alle Texte abgelegt werden, die in einem Lernprogramm vorkommen. Das ist z.B. sinnvoll, wenn man sich für eine Übersetzung eines Programms in andere Sprachen einen Überblick über die Texte in einem Programm verschaffen will.

Variablenliste erzeugen

Ist diese Option eingeschaltet, dann werden Informationen über die Variablen in einem Juggler-Programm an das ausführbare Lernprogramm (.CBT) angehängt. Die DEBUG-Funktion greift z.B. auf diese Informationen zu, wenn während des Ablaufs eines Lernprogramms auf Variableninhalte zugegriffen werden soll.

Definitionsdatei

In der zweiten Gruppe der Dialogbox wird der Name der Definitionsdatei eingegeben, in der Textmakros und zugehörige Ersetzungstexte abgelegt werden können. Diese Datei kann mit der Funktion Definitionen bearbeiten bearbeitet werden.


Makros bearbeiten

In dieser Dialogbox können die Tastenkombinationen Alt-A bis Alt-Z mit Tastaturmakros belegt werden. Dabei handelt es sich um Zeichenketten, die bei Betätigung der zugeordneten Tastenkombination im aktuellen Editorfenster an die aktuelle Cursorposition kopiert werden. Man kann auf diese Weise z.B. Juggler-Befehle einer Tastenkombination zuweisen.

Im unteren Teil der Dialogbox befindet sich eine Liste, in der alle Tastenbelegungen angezeigt werden. Durch Anklicken eines Eintrages in der Liste wird dieser zur Bearbeitung selektiert. Danach kann in dem Eingabefeld im oberen Teil eine Zeichenkette eingegeben werden, die diesem Eintrag zugeordnet werden soll. Durch Anklicken des Ändern-Schalters wird der eingegebene Text in die Liste eingetragen.

Durch Anklicken des Löschen-Schalters wird die aktuell selektierte Tastenbelegung gelöscht.

Damit die Änderungen an der Makro-Liste gespeichert werden, muß die Dialogbox mit dem OK-Schalter beendet werden.

Wird die Dialogbox mit dem Abbrechen-Schalter beendet, dann werden die Änderungen in der Makroliste nicht gespeichert.


Definitionen bearbeiten

In das Autorensystem ist ein sogenannter Präprozessor eingebaut. Mit einem Präprozessor werden vor der Compilierung eines Moduls Zeichenketten durch einen anderen Text ersetzt.

In dieser Dialogbox können Textmakros zusammen mit dem Austauschtext definiert werden.

Im unteren Teil der Dialogbox befindet sich eine Liste, in der alle Textzuordnungen angezeigt werden. Im oberen Teil der Box befinden sich zwei Eingabefelder, in denen die Textzuordnungen eingegeben werden können.

Um eine Zuordnung einzufügen, muß man das Textmakro und den zugehörigen Austauschtext in den Eingabefeldern eingeben und danach den Einfügen-Schalter anklicken. Das Makro wird dann in der Liste an der aktuellen Position eingefügt.

Um eine Zuordnung zu ändern, klickt man zuerst den betreffenden Eintrag in der Liste an. Das Textmakro und der Austauschtext werden daraufhin in die Eingabefelder kopiert. Dort können sie geändert werden. Danach muß der Ändern-Schalter angeklickt werden. Die Änderungen werden daraufhin in die Liste übernommen.

Soll eine Zuordnung gelöscht werden, klickt man wiederum zuerst auf den betreffenden Eintrag in der Liste und klickt danach den Löschen-Schalter an. Der Eintrag wird dann aus der Liste entfernt.

Damit die Änderungen in der Makro-Liste gespeichert werden, muß die Dialogbox mit dem OK-Schalter beendet werden.

Wird die Dialogbox mit dem Abbrechen-Schalter beendet, dann werden die Änderungen in der Makroliste nicht gespeichert.


Suchen

In dieser Dialogbox geben Sie eine Zeichenkette ein, nach der im aktuellen Editorfenster gesucht werden soll.

Nach der Eingabe des Suchbegriffs klicken Sie den OK-Schalter mit der Maus an, um die Suche zu beginnen.

Um den Vorgang abzubrechen, klicken Sie den Abbrechen-Schalter an.


Suchen & Ersetzen

In dieser Dialogbox geben Sie eine Zeichenkette ein, die im aktuellen Editorfenster durch einen anderen Begriff ersetzt werden soll.

Den Such- und den Ersetzungsbegriff geben Sie in den beiden Eingabefeldern ein. Klicken Sie danach den OK-Schalter mit der Maus an, um die Suche zu beginnen. Wurde der Suchbegriff gefunden, erfolgt eine Sicherheitsabfrage, ob der Begriff ersetzt werden soll.


Lernprogramm ausdrucken

Diese Dialogbox wird aufgeblendet, wenn Sie ein komplettes Lernprogramm, ein einzelnes Modul oder einen markierten Text ausdrucken wollen.

Im linken oberen Teil der Dialogbox befindet sich ein Kontrollfeld, in dem Sie einstellen können, welche der drei Möglichkeiten Sie wahrnehmen möchten.

Des weiteren können Sie in der Dialogbox diverse Parameter für den Ausdruck einstellen. Dazu gehören:

Erste Zeile, auf die gedruckt werden soll

Letzte Zeile, auf die gedruckt werden soll

Linker Rand beim Ausdruck

Zeilennumerierung ein/aus

Kopfzeile drucken

Fußzeile drucken

In den Eingabefeldern für die Kopf- und die Fußzeile können Sie Platzhalter einsetzen, die während des Ausdruckens vom Autorensystem automatisch gefüllt werden. Folgende Platzhalter stehen Ihnen zur Verfügung:

MMMMMMMM	-  Modulname

TT	-  Tag

MM	-  Monat

JJ	-  Jahr

JJJJ	-  Jahr

###	-  Seitennummer

Um den Ausdruck zu beginnen, betätigten Sie bitte den OK-Schalter mit der Maus. Um den Vorgang abzubrechen, betätigen Sie den Abbrechen-Schalter.


Compiler-Statistik

In dieser Dialogbox werden nach der Compilierung eines Programm Informationen über das erzeugte Programm angezeigt.


Test-Menü

Dieses Menü diente während der Entwicklung des Autorensystems der Kontrolle des erzeugten Programmcodes.

Es kann aber auch dem Entwickler eines Lernprogramms gute Dienste leisten, da man sich hier einen schnellen Überblick über die Variablen, Konstanten und Modulaufrufe innerhalb des zuletzte compilierten Moduls verschaffen kann.


Module einlagern

In dieser Dialogbox wählt man Module aus einem anderen Lernprogramm aus, die man in das gerade bearbeitete Programm einlagern möchte.

Die Dialogbox besitzt zu diesem Zweck zwei Listen. In der linken Liste sind alle Module des Programms, aus dem eingelagert werden soll, aufgelistet. In der rechten Liste werden alle Module eingetragen, die tatsächlich übernommen werden sollen.

Mit dem Einfügen- und Löschen-Schalter kann man Module in die rechte Liste einfügen oder wieder entfernen.

Hat man alle Module ausgewählt, dann kann die Übernahme der Module durch Anklicken des OK-Schalters angestoßen werden. Um den Vorgang abzubrechen, betätigen Sie den Abbrechen-Schalter.


Werkzeuge einstellen

In dieser Dialogbox werden zusätzliche Werkzeuge für die Arbeit mit dem Autorensystems eingestellt. Dabei handelt es sich um externe Programme, die aus dem Autorensystem aufgerufen werden können.

Es gibt dabei zwei unterschiedliche Methoden, um externe Programme aufzurufen. Bei der ersten Methode wird einer bestimmten Dateikennung (z.B. BMP) ein Programm (z.B. pbrush.exe) zugeordnet. Wird dann später in einem Editorfenster mit der Maus auf einen Dateinamen doppelgeklickt, der diese Dateikennung enthält, dann wird die zugehörige Applikation automatisch gestartet.

Im linken Teil der Dialogbox befindet sich eine Liste, in der alle Dateikennungen mit den aufzurufenden Programmen aufgeführt sind. In zwei Eingabefeldern über der Liste können die Zuordnungen bearbeitet werden. Mittels der Schalter 'Einfügen', 'Ändern' und 'Löschen' können Einträge in die Liste eingefügt, geändert oder wieder gelöscht werden.

Bei der zweiten Methode werden einfach den Tastenkombinationen Alt-1 bis Alt-9 Programme zugeordnet, die beim Drücken der jeweiligen Tastenkombination aufgerufen werden.

Im rechten Teil der Dialogbox befindet sich eine Liste, in der die Zuordnungen zu den Tastenkombinationen aufgeführt sind. In einem Eingabefeld über der Liste können die Zuordnungen zu den Tasten bearbeitet werden.

Damit die Änderungen in den Werkezug-Listen gespeichert werden, muß die Dialogbox mit dem OK-Schalter beendet werden.

Wird die Dialogbox mit dem Abbrechen-Schalter beendet, dann werden die Änderungen in den Werkzeug-Listen nicht gespeichert.


Schriften einstellen

In dieser Dialogbox können alle Parameter für eine Grafikschrift interaktiv eingestellt werden. In einem Unterfenster wird eine Schriftprobe angezeigt, die den Einstellungen ständig angepaßt wird.

Auf diese Weise kann man sich die gewünschte Schrift für eine Textausgabe des Autorensystems interaktiv erzeugen.

In einem weiteren Unterfenster werden die Juggler-Befehle angezeigt, die erforderlich sind, um eine Schrift mit diesem Aussehen zu erzeugen. Wird die Dialogbox mit dem OK-Button geschlossen, dann werden diese Befehle im aktuellen Editorfenster an die aktuelle Cursorposition kopiert.

Um die Zuordnung der Schriften zu dem Befehl TXDEF zu definieren, kann mit dem Einstellen-Schalter ein Fenster (Schriften zuordnen) aufgerufen werden, in dem die Reihenfolge der vom Autorensystem verwendeten Schriften eingestellt werden kann.


Schriften zuordnen

In diesem Fenster wird festgelegt, welche Schriften vom Autorensystem mittels des Befehls TXDEF verwendet werden können.

Die Dialogbox enthält zwei Listen. In der linken Dialogbox sind alle Schriften aufgeführt, die auf dem aktuellen Rechnersystem vorhanden sind. In der rechten Liste werden die Schriften eingetragen, wie sie vom Autorensystem verwendet werden soll. Der Befehl TXDEF bezieht sich mit der ID-Nummer der Schrift, die als erster Parameter angegeben wird, auf die Reihenfolge in dieser Liste, d.h. der Befehl 'TXDEF 0 ...' stellt die Schrift ein, die in der rechten Liste als erster Eintrag enthalten ist usw.

Diese Einstellungen werden in einer Datei namens 'juggler.fnt' gespeichert. Diese Datei muß immer zusammen mit dem Laufzeitsystem (exw.exe) und dem zugehörigen Lernprogramm ausgeliefert werden.

Ist keine Datei 'juggler.fnt' vorhanden, dann wird die Reihenfolge der im aktuellen Computersystem vorhandenen Schriften verwendet. Diese Reihenfolge kann aber bei verschiedenen Rechnersystemen voneinander abweichen.

Um die Änderungen in der Schriftenliste abzuspeichern, muß die Dialogbox mit dem OK-Schalter geschlossen werden.


Muster definieren

In dieser Dialogbox können alle Parameter für das Aussehen eines Grafikobjekts (Kreis, Rechteck etc.) interaktiv eingestellt werden. In einem Unterfenster wird als Beispiel das Aussehen eines Kreises und eines Rechtecks mit den gegebenen Einstellungen angezeigt.

Auf diese Weise können Füllmuster und Umrandung für die Ausgabe eines Grafikobjekts interaktiv eingestellt werden.

In einem weiteren Unterfenster werden die Juggler-Befehle angezeigt, die erforderlich sind, um ein Füllmuster und eine Umrandung mit diesem Aussehen zu erzeugen. Wird die Dialogbox mit dem OK-Button geschlossen, dann werden diese Befehle im aktuellen Editorfenster an die aktuelle Cursorposition kopiert.