★ CODING ★ BENUTZEROBERFLAECHE CEUS V1.0 - TEIL 5. FOLGE: MENÜS, ALERTBOXEN UND SOFTWARE-UHR (CPC AMSTRAD INTERNATIONAL) ★ |
Benutzeroberflaeche CEUS v1.0 - Teil 5. Folge: Menüs, Alertboxen und Software-Uhr (CPC Amstrad International) |
Die CEUS-Toolbox strebt unaufhaltsam ihrer Vollendung entgegen. Während die letzten Folgen einen Windowmanager und eine Bildschirmsteuerung brachten, enthält diese Folge zwar weder das Leben, noch das Universum, dafür aber den ganzen Rest. So, wo wir nun bereits Befehle haben, mit deren Hilfe wir Fenster verwalten und Bildschirme steuern können, wird es langsam Zeit für einige nette Routinen, die alle diese Funktionen ausnutzen. Das erste — und sicherlich auch sehr häufig gebrauchte — dieser Hilfsmittel ist eine Menüroutine. Die Götter bitten zu Tisch Die CEUS-Menüroutine ist ein weiterer Punkt, der dem Programmierer die Arbeit wesentlich erleichtern kann. Erinnern wir uns: Am Anfang war das BIT. Später folgten dann Bytes und Worte, und die Computer lernten, sich auszudrückcn. Zu jenen Zeiten, als CP/M noch neu und Computer noch teuer waren, erwartete man vom Benutzer, daß er sich dieser Kommunikationsweise des Computers anpaßte: Er mußte bestimmte (manchmal auch mehrere) Tasten drücken, um dem Computer seine Wünsche begreiflich zu machen. Etwas später folgten dann die sogenannten Speisekarten (englisch Menu), die dem User auf dem Bildschirm eine gewisse Auswahl boten:
... und so weiter. Der Anwender konnte sich jetzt eines dieser Gerichte (neudeutsch: Menüpunkt) aussuchen und die dazugehörige Taste drücken. Es versteht sich von selbst, daß solcherlei vorsintflutliche Systeme in unseren modernen Programmen keinen Platz mehr haben. Die Menüpunkte gibt es weiterhin, aber deren Ansteuerung wird nicht mehr durch den Finger auf der Tastatur, sondern auf elegante Art und Weise durch einfaches An-klicken mit dem Cursor erledigt. Zu diesem Zweck stellt CEUS den Befehl |MENU , x , y , @mnu% , @pktl$ , @pkt2$ , ... , pktn$ zur Verfügung. Dabei sind X,Y die Koordinaten der linken oberen Ecke des Menüs, mnu% eine Variable zur Zurückgabe des angewählten Menüpunktes und pkt 1$ bis pktn$ bis zu 23 verschiedene Menüpunkte. Nach der Aktivierung des Befehls werden zunächst aus der Parameterzahl die Anzahl der Menüpunkte ermittelt, danach ein Fenster ab x/y geöffnet und sämtliche Menüpunkte hübsch untereinander im Window dargestellt. Es folgt eine Event-Routine, die alle 1/25 Sekunden ein bestimmtes Unterprogramm aufruft und die Cursorsteuerung anspringt. Jetzt wird es ereignisreich Während man nun mit dem Cursor auf dem Bildschirm herumfahren kann, überprüft diese Event-Routine eben alle 1/25 Sekunden, ob sich der Cursor gerade auf einem Menüpunkt befindet. Ist dies der Fall und befand er sich 1/25 Sekunde vorher noch nicht dort, so wird der entsprechende Menüpunkt invertiert. Befindet sich der Cursor aber nicht auf einem Menüpunkt und war dies 1/25 Sekunde vorher noch der Fall, so wird der bewußte Balken einfach wieder abgebaut. Drückt man nun auf COPY/FEUER. so wird zunächst der Event wieder ausgekoppelt, das Window abgebaut und — falls sich der Cursor auf einem Menüpunkt befand - dessen Nummer an den Anwender zurückgegeben. Ein Name für die Menüs ist bisher nicht vorgesehen, kann aber einfach programmiert werden. Das einzige Problem bei der Realisierung dieser Menüroutine ist, daß man sich mit Event-Programmierung beschäftigen muß. Ein Event (englisch für Ereignis) ist im CPC ein Prozeß, der immer nach Ablauf einer bestimmten Zeit aufgerufen wird und dabei das laufende Programm unterbricht. Nach der Abarbeitung der Event-Routine wird das unterbrochene Programm dort weitergeführt, wo es unterbrochen wurde. Die Betriebssystemroutinen zum Initialisieren eines Events verlangen als Parameter die Adresse der Event-Routi-nc, die Adresse eines 13 Byte großen Buffers, die Zeit zwischen dem Auftreten zweier Events in 1/50 Sekunden und den Typ des Events (siehe CPC Firmwarehandbuch).
Pack' das Icon in den Kasten... Der zweite Befehl, der um lassend auf die gesamte Toolbox zurückgreift, ist die Alertbox-Funktion. Eine Alertbox ist ein spezielles Window, in dem eine kurze Meldung oder Abfrage (in unserem Fall bis zu 5 Zeilen) erscheint, auf die der Benutzer dann über 2 Icons reagieren kann. Das kann zum Beispiel eine Sicherheitsabfrage sein ('Wollen Sie nicht doch lieber alles löschen?'), und die Reaktion kann im Anklicken eines 'YES'- oder eines 'NO'- Icons bestehen. Unser Befehl |ALERTBOX,i1, i2, @flag%, @text1$, @text2$,..., @textn$ (n zwischen 1 und 5) geht dabei so vor, daß er zunächst ein Window mit der halben Bildschirmgröße öffnet, den Text ausgibt, die Icons mit den Nummern il und i2 darstellt (an 240/207 und 352/207) und danach zu GETIC springt. Der gelieferte Iconwert wird mit i1 und i2 verglichen. Stimmt er mit keinem davon überein, wird GETIC nochmal aufgerufen, ansonsten wird die entsprechende Nummer in flag% zurückgegeben und das Fenster geschlossen. Pünktlich Als letzten Teil enthält die Tool box noch die Software-Uhr. Eine Uhr gehört ja sowieso zu den Dingen, die dem CPC standardmäßig wirklich fehlen. Es gab inzwischen viele Lösungen für dieses Problem, aber keine konnte eigentlich so richtig überzeugen; wie wäre es mit der folgenden? Diese Software-Uhr wird beim Programmstart automatisch initialisiert und auf 0 gestellt. Sie arbeitet dann -ebenfalls über einen Event - im Hintergrund weiter. Sie kann über den Befehl |GETTIME,@t$ abgefragt werden. In t$ gibt der Befehl dabei die Uhrzeit im Format HH:MM:SS zurück, mit dem Befehl |PUTTIME,@t$ kann sie über einen String dieses Formates gestellt werden. Der Befehl |QUIT dient schließlich dazu, die gesamte Toolbox aus dem Speicher zu entfernen und diesen wieder freizugeben. GAME OVER Soweit also die Tool box. Zum Abschluß gibt es noch einmal einen Überblick über sämtliche CEUS-Befehle, und in der nächsten und letzten Folge kommen dann endlich diejenigen zum Zug, die bisher in dieser Serie etwas vernachlässigt wurden, obwohl CEUS gerade für sie eine große Hilfe sein kann: die BASIC-Programmierer. Anhand von mehreren absolut nützlichen Utilities wie Taschenrechner, Notizblock und Kalender erhält man einen Überblick über die tatsächliche Leistungsfähigkeit unserer Befehle und bekommt auch gleich noch ein paar nützliche Hilfsmittel mit auf den Weg.
|