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)
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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:

  1. Programm beginnen
  2. Programm beenden
  3. Diskette formatieren
  4. Diskette kopieren

... 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).

x,y:Koordinatenangaben, wobei x und y bei Windows Zeichenkoordinaten, bei Icons Pixelkoordinaten sind.
xl,yl:Längenangaben in Zeichen
num,i:Icon- oder Windownummern
adr,laen:Adressen- beziehungsweise Längenangaben
tme$:Zeitangabe in einem String nach dem Fomiat HH:MM:SS
ic$:Ein String mit der maximalen Länge von 144 Zeichen. Er enthält die Bilddaten filr ein Icon im Format ic$ = chr$(bte1) + chr$(bte2)..., wobei btel das Byte links oben, bte2 das rechts davon ist und so weiter.
text$,pktn$:Strings, die einen Menüpunkt oder eine Zeile einer Alertbox enthalten
I) Der Window-Manager
|WINDOW.IN,x,y,xl,yl,@adr%, @laen%Kopiert den Bildschirmbereich von X/Y bis X+XL/Y+YL in den Speicher und gibt seine Adresse und Länge in adr% beziehungsweise laen% zurück
|WINDOW.OUT,x,y,x1,y1,adr%,laen%Blendet einen mit |WINDOW.IN kopierten Bereich, der an der Adresse adr% liegt und die Länge laen% hat, wieder in den Bildschirm ein und gibt den belegten Speicher frei
|WINDOW. DRAW,x,y,x1,y1Zeichnet ein Window über den Bereich von X/Y bis X+XL/Y+YL
|SHADOW.ONSchaltet den Schatten ein (Voreinstellung)
|SHADOW.OFFSchaltet den Schatten aus
|WINDOW.OPEN,num,x1 ,y 1 ,x2, y2Eröffnet über xl/yl, x2/y2 ein Window mit der Nummer num. Der Hintergrund wird gerettet, das Window gezeichnet und als System-Window initialisiert. Es kann mit PRINT# num beschrieben werden.
|WINDOW.NAME,num,x1 ,y1 ,x2, y2, name$Wie |WINDOW. OPEN, nur wird das Window mit der Überschrift aus name$ versehen
|WINDOW.CLOSESchließt das 'oberste' Window
|WINDOW.HIDE, num'Versteckt' das Window mit der Nummer num, das heißt, das Window wird aus geblendet und im Speicher abgelegt
|WINDOW.SHOW,numStellt ein mit IWINDOW. HIDE verstecktes Window wieder dar
|WINDOW.POP,num'Poppt ' das Window mit der Nummer num nach oben, das heißt, es wird über alte anderen Windows gelegt
II) Die Bildschirmsteuerung
|FILL,bteFüllt den gesamten Bildschirmspeicher mit dem Byte bte
|CURSORStellt einen Cursor in Pfeilform auf dem Bildschirm dar, der mit den Cursortasten/COPY oder einen Joystick bewegt werden kann. Die Koordinaten werden als Grafikcursorkoordinaten übergeben, der Cursor kann also mit MOVE x,y positioniert und über XPOS und YPOS abgefragt werden.
|DEFICON,num,@ic$Definiert ein Icon mit der Nummer num mit den Daten aus /c$. Existiert bereits ein Icon mit der Nummer num, so wird es überschrieben.
|ICON,x,y,numStellt das Icon mit der Nummer num an den Koordinaten X/Y auf dem Bildschirm dar. Die Koordinaten geben die Position der linken oberen Ecke des Icons an und werden auf Bytewerte gerundet.
|GETICON,@num%Fragt die dargestellten Icons mit dem Cursor ab. Die Nummer des angewühlten Icons wird in num% zurückgegeben.
III) Der Rest
|MENU,x,y,@mnu%,@pktl$,...pktn$Erstellt ein Menü ab den Koordinaten X/Y aus den Menüpunkten pktl$ bis pktn$. Die Menüpunkte können mit dem Cursor angewählt werden. Die Nummer eines angewählten Menüpunktes wird in mnu% zurückgegeben. Wird kein Punkt angewählt, enthält mnu% den Wert 0.
|ALERTBOX,i1 ,i2,@flag %, @text1$,...textn$Stellt eine Alertbox mit dem Text aus text1$ bis textn$ und den Icons i1 und i2 dar und läßt die Icons über den Cursor abfragen. Die Nummer des gewählten Icons wird in flag% zurückgegeben.
|PUTTIME, @tme$Stellt die Uhr nach der Zeit aus tme$
|GETTIME,@tme$Legt die aktuelle Uhrzeit in tme$ ab
|QUITSchaltet die Toolbox ab und gibt den Speicherfrei.
Tabelle 1: Eine Übersicht über alte CEUS-Befehle

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.

CPCAI, Jörg Schwieder/jf

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1990
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: ???
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1990
★ AUTHOR: Joerg Schwieder
 

Page précédente : Benutzeroberflaeche CEUS v1.0 - Teil 4: Die Bildschirmsteuerung
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-CEUS  v1-SOURCEPACK    GERMANDATE: 2020-04-18
DL: 678
TYPE: ZIP
SiZE: 20Ko
NOTE:
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX - Scroller (Computing With the Amstrad)
» Applications » Super Symbole
» Applications » Profi-RSX 5 (CPC Amstrad International)
» Applications » Pride Utilities - Syclone 1
» Applications » RSX Circle (CPC Magazin)
» Applications » Rsx - Zoom (CPC Amstrad International)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 487 millisecondes et consultée 847 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.