Logo: Geos Online Print Archiv
G.O.P.A. - Geos Online Print Archiv
19.09.2019 Archiv  #  Recherche  #  Links  #  Kontakt  #  Gästebuch  #  Impressum

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

GeoCom Workshop #5

Autor: Olaf Dzwiza

Menü- und Tastaturroutinen

Unser Programm sollte bisher aus den Abschnitten @hauptprogramm (zum Schluß zwei WAITs und ein END - das wird sich diesmal ändern), @zahlenreihe_erzeugen, @grafik_aufbauen und @würfel_darstellen (ab Modul oder im Hauptquelltext; wer damit Schwierigkeiten hatte, kann bei mir die Lösung bekommen) sowie dem Definitionsteil ganz am Anfang bestehen.

In dieser Ausgabe wollen wir eine Menüstruktur entwickeln und dazu erstmals ObjectEdit einsetzen (erzeugt bitte eine Datei "Workshop5_obj"). Dazu brauchen wir:

  1. Ein Hauptmenü. Bezeichner: h_menu, Ausrichtung: horizontal unbegrenzt, Anzahl der Einträge: 2 (0 bis 1)
    Eintrag 0: Text: "GEOS", Aufruf eines Untermenüs m_geos
    Eintrag 1: Text "OPTIONEN", Aufruf eines Untermenüs: m_opt
  2. Das Untermenü GEOS, Bezeichner: m_geos, Ausrichtung: vertikal, Anzahl der Einträge: 1
    Eintrag 0: Text: "Info", Aufruf einer Routine r_info
  3. Das Untermenü OPTIONEN. Bezeichnen m_opt, Ausrichtung: vertikal,
    Anzahl der Einträge: 5 (0 bis 4)
    Eintrag 0: Text: "neue Simulationsreihe", Aufruf einer Routine: r_sim
    Eintrag 1: Text: "laden", Aufruf einer Routine: r_load
    Eintrag 2: Text: "speichern", Aufruf einer Routine: r_save
    Eintrag 3: Text: "drucken", Aufruf einer Routine: r_print
    Eintrag 4: Text: "Ende", Aufruf einer Routine: r_end

Experimentiert ruhig ein bißchen mit den Einstellungen, den Ausrichtungen und Positionen. Benutzt aber bitte für das weitere Vorgehen die obigen Angaben. Der Abstand zwischen zwei untereinanderliegenden Menüpunkten muß genau 14 Pixel betragen, sonst sieht es nachher auf dem Bildschirm weniger schön aus.
Bei den Einstellungen für die x-Positionen wird etwas Geduld nötig sein. Bevor Ihr das Menü jedoch auch anzeigen könnt, muß unser Programm noch etwas ergänzt werden:

1. Beim Label Hauptprogramm:
Statt den WAITs, dem END und den beiden Routinenaufrufen müssen hier andere Befehle hin. Die Variablenzuweisungen müssen verschoben werden.
Der Programmabschnitt sieht nun so aus:

   @hauptprogramm
   MENU h_menü, 0
   MAINLOOP

2. Im Definitionsteil ist das erzeugte Objectfile einzubinden:

   OBJFILE "Workshop5_obj"
   OBJECT m_opt, m_geos, h_menü

Wichtig: Das Einbinden muß vom untersten Menü bis in die höchste Ebene erfolgen, nie umgekehrt.
Alle benutzten Routinenaufrufe müssen natürlich auch noch bereitgestellt werden, bevor es ans ausprobieren geht:

   LABEL r_info, r_sim, r_load, r_save, r_print, r_end

Zunächst reicht für jede Sprungmarke ein

   @labelname
   FIRSTMENU
   RETURN

zum Abbau des offenen Menüs und Rücksprung in die Mainloop aus. Achtung! Das Label @r_end muß unbedingt lauten:

   @r_end
   FIRSTMENU
   END

Sonst kann das Programm nur noch über einen Resettaster verlassen werden, den man als Programmierer zwar haben sollte, aber der dennoch nicht der beste Weg ist.

Wenn Ihr nun nach dem Compilieren mit Eurem Menü zufrieden seit, können wir weitermachen und die Routinen mit Leben füllen:

   @r_info
   FIRSTMENU
   STRNBOX Programminformation","",""
   RETURN
   @r_sim
   FIRSTMENU
   (würfelzahl<0>)=0
   (würfelzahl<1>)=0
   (würfelzahl<2>)=0
   (würfelzahl<3>)=0
   (würfelzahl<4>)=0
   (würfelzahl<5>)=0
   gesamtwert=0
   schongewürfelt=0
   PATTERN 2
   REGT 0,15,319,199
   zahlenreihe_erzeugen
   grafik_aufbauen
   RETURN

Die anderen Routinen werden später noch ergänzt. Um etwas Übersicht zu bewahren, sollte das Programm so aufgebaut sein:

   Definitionsteil
   @hauptprogramm
   Alle "@r_..."-Routinen von links oben nach
     rechts unten in der Menüanodnung
   @zahlenreihe_erzeugen
   @grafik_aufbauen
   @würfel_darstellen

Nun fehlt nur noch die Tastaturabfrage für Short-Cuts:

Zunächst wird das Objektdokument geöffnet, dann das Objekt "m_opt" aufgesucht und hinter jede Menübezeichnung durch ein Komma getrennt der Buchstabe angezeigt, der als Tastenkombination mit C= zulässig sein soll. Dann ist noch der Abstand vom linken Bildschirmrand für die Ausgabe des Tastenkürzels einzustellen und wir sind bis auf eine kleine Programmroutine fertig.
Ich habe folgende Tasten für die Befehle verwendet:

   neue Simulation - n
   laden - l
   speichern - s
   drucken (print) - p
   ende (quit) - q

Fügt im Quelltext vor dem Menü-Befehl

   ON 0 GOTO keyrout

ein und definiert @keyrout als Label. Hierhin wird bei einem Tastendruck verzweigt:

   @keyrout
   IF (keydata==238) : r_sim : ENDIF
   IF (keydata==236) : r_load : ENDIF
   IF (keydata==243) : r_save : ENDIF
   IF (keydata==240) : r_print : ENDIF
   IF (keydata==241) : r_end : ENDIF
   RETURN

Der Vergleichswert nach in der IF-Anweisung ist der jeweilige Tastencode plus 128 für die Commodore-Taste. Der Routinenname danach ist ein GOSUB-Aufruf der jeweiligen Funktion.
Eine kleine Schönheitsoperation im Abschnitt @grafik_aufbauen sollte noch durchgeführt werden. Die Zeile, die mit SETPOS 65,170 beginnt, sollte nun so aussehen:

   SETPOS 65,170 : PRINT
   "/BDurchschnitt : ";: PRINT
   (STR durchschnitt);: PRINT
   "/P"

Das war alles für diese Ausgabe. Beim nächsten Mal werden wir eine Hilfsmittelverwaltung integrieren und eine Druckroutine schreiben.
Wer mit dem einen oder anderen Teil Probleme hat, kann mir gerne schreiben (Rückporto nicht vergessen, danke!) oder sich für BTX melden (A-Seite in *geos#).
Ansonsten gibt es natürlich weiterhin die ergänzte Workshop-Disk bei mir, mehr dazu siehe GUP 35.

 

Olaf Dzwiza

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 37

! - - - - - M I C R O F I L M - - - - - ! | Jahreshaupttreffen '95 ?! | Neu: Lastschriftverfahren | Editorial | Jahreshaupttreffen des GUC 1994 | GUC Intern | 29. Regionaltreffen in Hannover | News Regio Baden | Zu Gast bei der Rhein-Main-Regio | Test Flash 8 #2 | GeoCom Workshop #5 | Probleme bei BBG !? | Neues von der Geothek (Teil 6) | Testbericht zur BBRTC | Neue Preisgestaltung beim GUC! | PD Disk für GWE2 | US-GWE v2.01 beim GUC ! | Deutsches v2.01 Update! | Deutsches v2.01 Update (2) | IZL v1.0 | Feuzi Grafiken | GeoTools Interwiev | GeoTools 2.1 Update | FontMagick v0.3 | FM Radio & Lautsprecher | Neue Programme für GW Ensemble 2.0! | OfflineReader für GeoComm | Druckertip: EPSON Stylus COLOR | Ändern des Mustertextes in der Fontübersicht | GeoCalc als Zeichenhilfe | Tabellen in GeoWorks | C64 goes to PC | Aktuelles in letzter Minute!


GeoCom Workshop

GeoCom Workshop #1 | GeoCom Workshop #2 | GeoCom Workshop #3 | GeoCom Workshop #4 | GeoCom Workshop #5 | GeoCom Workshop #6 - Etwas über Hilfsmittel und Drucker | GeoCom Workshop #7


Kurzlink hierhin: http://geos-printarchiv.de/1996


letzte Änderung am 01.01.1970