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

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

Kurs: Programmieren (Teil 3)

Autoren: H. J. Ciprina, R. Bonse

In den folgenden Kursabschnitten werden wir ein Programm schreiben. Am Ende soll eine einfache Datei entstehen, die es ermöglicht, CD's oder Schallplatten etc. zu verwalten.

Dabei steht jedoch weniger das eigentliche Projekt im Vordergrund als vielmehr das Handhaben von GEOS-Routinen und -Eigenarten.
In diesem Kursabschnitt werden wir uns deshalb fast ausschließlich mit Menüs und deren Strukturen beschäftigen.

Bevor man mit einem Projekt beginnt, sollte man sich überlegen, über welche Fähigkeiten das Programm verfügen sollte. Daraus ergeben sich dann fast zwangsläufig die Menüs, die das Programm besitzen sollte.

An Hauptprogramme (Applikationen) sollte im allgemeinen immer die Forderung gestellt werden, daß sich das Menü links oben am Bildschirmrand befindet. Ferner sollte der erste Menüpunkt immer "geos" lauten; von dem daraufhin erscheinenden Untermenü sollten sich Hilfsprogramme (DeskAccessories) starten lassen.
Der zweite Menüpunkt heißt meistens "Datei", "File" oder ähnlich, hier findet man allgemeine, in fast allen Anwendungen gleichgeartete Untermenüpunkte, die sich auf das Filehandling auswirken (z. B. "schließen", "drucken", "Ende").

Ab dem dritten Hauptmenüpunkt beginnen die programmspezifischen Aktionspunkte (bei GEOWRITE z. B. "Edit", "Optionen" usw.).
Es empfiehlt sich, für eigene Anwendungsprogramme ebenfalls diese Hauptmenüeinteilung vorzunehmen, damit jeder Anwender sich sofort im Programm zurechtfindet.

Als nächstes sollte man sich schon zu Beginn eines Projektes im wesentlichen darüber klar sein, welche Fähigkeiten das Programm am Ende besitzen sollte. Für eine einfache CD-Verwaltung wären folgende Funktionen wichtig:

1. Sortieren nach Interpret
2. Einfügemöglichkeit für neue CD's
3. Ändern bestehender Titel/Interpreten etc.
4. Löschen von Einträgen
5. Suchen nach bestimmten Kriterien, z. B.:
   5.1. Interpret
   5.2. Titel der CD
   5.3. Songtitel

Mit Ausnahme der Sortierung sollten die anderen Funktionen in einem Obermenüpunkt "Bearbeiten" zusammengefaßt werden. Die Sortierung sollte automatisch erfolgen!

Im nebenstehenden Listing haben wir dieses Funktionen als Menüpunkte eingebaut.
Geben Sie zunächst wieder das diesmal etwas längere Listing ein und assemblieren es bitte.

Zum besseren Verständnis des später gesagten sollten Sie das Programm mit dem Namen "Quell3.obj" mehrfach aufrufen und die einzelnen Menüpunkte anwählen. Die Menüpunkte sind zwar (noch) ohne spezielle Funktion, jedoch haben wir hier die verschiedenen GEOS-Menüroutinen eingebaut.

Folgendes sollten Sie feststellen:

  1. Bei Anwahl des Menüpunktes "Datei" wird ein Teil des Bildschirms invertiert, bei erneuter Anwahl von "Datei" erscheint er wieder normal!
  2. Bei Anwahl des Menüpunktes "Bearbeiten" können Sie das daraufhin erscheinende Untermenü nur nach oben verlassen.
  3. Bei Anwahl des Menüpunktes "Bearbeiten/einfügen" erscheint ein Sternchen (*) vor "einfügen" bzw. es wird wieder weggenommen.
  4. Die drei Menüpunkte "Interpret", "CD-Titel" und "Titel" verhalten sich sehr unterschiedlich. "Interpret" baut alle Untermenüs ab, "CD-Titel" baut nur das letzte Untermenü ab, "Titel" stellt das letzte Untermenü erneut zur Auswahl.
  5. Einige Menüpunkte sind mit sog. Shortcuts versehen, es findet allerdings keine Reaktion statt.

Im folgenden finden Sie nun das komplette Listing. Das GeoWrite Dokument dazu und die bereits fertig assemblierte Datei sind auf der GeoThek Diskette zur GUP 17 enthalten.
Die Erklärungen zum Listing können wegen ihrer Länge leider erst in der nächsten Ausgabe der GEOS USER POST folgen.

 

H. J. Ciprina/ R. Bonse


   ; Quell3.obj
   ;
   ; Menütechniken
   ; Autor: H.J. Ciprina
   ; erstellt am: 02.07.1991

   if   .p
      t   "TopSym"
      t   "TopMac"
   endif
      n   "Quell3.obj"

   :Start
   LoadB
   dispBufferOn,ST_WR_FORE!ST_WR_BACK
      lda   #$00
      jsr   SetPattern

      jsr   i_Rectangle
      b     0
      b     199
      w     0
      w     319

      LoadWr0,MenüTab
      lda   #0
      jsr   DoMenu
   ;Lab01
      LoadWr0,IconTab
      jsr   DoIcons
   ;Lab02
      rts

   :IconTab
      b     1
      w     $0000
      b     0
      w     $0000
      b     0
      b     0
      b     1
      b     1
      w     $0000

   :HMLinks    = 0
   :HMRechts   = HMLinks+108
   :HMOben     = 0
   :HMUnten    = HMOben+14

   :MenüTab
      b     HMOben
      b     HMUnten
      w     HMLinks
      w     HMRechts
      b     3!HORIZONTAL

      w     geosText
      b     SUB_MENU
      w     geosSub

      w     DateiText
      b     DYN_SUB_MENU
      w     DateiDyn

      w     BearbText
      b     SUB_MENU
      w     BearbSub

   :geosText
      b     "geos",0
   :DateiText
      b     "Datei",0
   :BearbText
      b     "Bearbeiten",0

   :gMLinks    = 0
   :gMRechts   = gMLinks+40
   :gMOben     = 15
   :gMUnten    = gMOben+15

   :geosSub
      b     gMOben
      b     gMUnten
      w     gMLinks
      w     gMRechts
      b     1!VERTICAL

      w     InfoText
      b     MENU_ACTION
      w     DoInfo

   :InfoText
      b     "Info",0

   :DoInfo
      jsr   GotoFirstMenu
      rts

   :DateiDyn
      LoadW   r3,10        ;links
      LoadW   r4,309       ;rechts
      LoadB   r2L,100      ;oben
      loadB   r2H,180      ;unten
      jsr   InvertRectangle

      LoadWr0,DateiTab
      rts

   :DMPKT    = 3
   :DMLinks  = 28
   :DMRechts = DMLinks+80
   :DMOben   = 15
   :DMUnten  = DMOben+DMPKT*14+1
   :DM_OFFSET= 60

   :DateiTab
      b     DMOben
      b     DMUnten
      w     DMLinks
      w     DMRechts
      b     DMPKT!VERTICAL

      w     SchließenText
      b     MENU_ACTION
      w     DoClose

      w     DruckenText
      b     MENU_ACTION
      w     DoPrint

      w     EndeText
      b     MENU_ACTION
      w     DoQuit

   :SchließenText
      b     "schließen"
      b     GOTOX
      w     DMLinks+DM_OFFSET
      b     SHORTCUT,BOLDON
      b     "s",PLAINTEXT,0

   :DruckenText
      b     "drucken"
      b     GOTOX
      w     DMLinks+DM_OFFSET
      b     SHORTCUT,BOLDON
      b     "d",PLAINTEXT,0

   :EndeText
      b     "Ende",0

   :DoClose
   :DoPrint
      jsr   GotoFirstMenu
      rts

   :DoQuit
      jsr   GotoFirstMenu
      jmp   EnterDeskTop

   :BMPKT    = 5
   :BMLinks  = 56
   :BMRechts = BMLinks+86
   :BMOben   = 15
   :BMUnten  = BMOben+BMPKT*14+1
   :BM_OFFSET= 64

   :BearbSub
      b     BMOben
      b     BMUnten
      w     BMLinks
      w     BMRechts
      b     BMPKT!VERTICAL!CONSTRAINED

      w     EinfügenText
      b     MENU_ACTION
      w     DoInsert

      w     ÄndernText
      b     MENU_ACTION
      w     DoChange

      w     LöschenText
      b     MENU_ACTION
      w     DoDelete

      w     SuchenText
      b     SUB_MENU
      w     SearchSub

      w     WeiterText
      b     MENU_ACTION
      w     DoNext

   :EinfügenText
      b     "  "           ;2*Space
      b     GOTOX
      w     BMLinks+12
      b     "einfügen"
      b     GOTOX
      w     BMLinks+BM_OFFSET
      b     SHORTCUT,BOLDON
      b     "e",PLAINTEXT,0

   :ÄndernText
      b     "ändern"
      b     GOTOX
      w     BMLinks+BM_OFFSET
      b     SHORTCUT,BOLDON
      b     "ä",PLAINTEXT,0

   :LöschenText
      b     "löschen"
      b     GOTOX
      w     BMLinks+BM_OFFSET
      b     SHORTCUT,BOLDON
      b     "x",PLAINTEXT,0

   :SuchenText
      b     "suchen",0

   :WeiterText
      b     "weitersuchen"
      b     GOTOX
      w     BMLinks+BM_OFFSET
      b     SHORTCUT,BOLDON
      b     "w",PLAINTEXT,0

   :DoInsert
      bit   InsertFlag
      bmi   :10
      lda   #"*"
      sta   EinfügenText
      LoadB InsertFlag,$ff
      bne   :20
   ::10   lda   #" "
      sta   EinfügenText
      LoadB InsertFlag,$00
   ::20   jsr   ReDoMenu
      rts
   :InsertFlag
      b     0

   :DoChange
   :DoDelete
   :DoNext
      jsr   GotoFirstMenu
      rts

   :SMPKT     = 3
   :SMLinks   = BMRechts+1
   :SMOben    = 15+3*14+1
   :SMUnten   = SMOben+SMPKT*14+1
   :SM_OFFSET = 60

   :SearchSub
      b     SMOben
      b     SMUnten
      w     SMLinks
      w     SMRechts
      b     SMPKT!VERTICAL

      w     InterpretText
      b     MENU_ACTION
      w     DoInterpret

      w     CDTitelText
      b     MENU_ACTION
      w     DoCDTitel

      w     TitelText
      b     MENU_ACTION
      w     DoTitel

   :InterpretText
      b     "Interpret"
      b     GOTOX
      w     SMLinks+SM_OFFSET
      b     SHORTCUT,BOLDON
      b     "i",PLAINTEXT,0

   :CDTiteltext
      b     "CD-Titel"
      b     GOTOX
      w     SMLinks+SM_OFFSET
      b     SHORTCUT,BOLDON
      b     "c",PLAINTEXT,0

   :TitelText
      b     "Titel"
      b     GOTOX
      w     SMLinks+SM_OFFSET
      b     SHORTCUT,BOLDON
      b     "t",PLAINTEXT,0

   :DoInterpret
      jsr   GotoFirstMenu
      rts

   :DoCDTitel
      jsr   DoPreviousMenu
      rts

   :DoTitel
      jsr   ReDoMenu
      rts

   ;Ende.

   ;Dia Besprechung Folgt in der nächsten
   ;Ausgabe der GUP.

 


 




Dieser Artikel ist Bestandteil von:

Ausgabe 17

! - - - - - M I C R O F I L M - - - - - ! | Editorial | Clubbeitrag | BTX & Telesoftware | Jahrestreffen | Einsteiger: Eingabegeräte | GEOS Professional | DTP 5 - Anzeigenseiten und Anzeigen im Red. Teil | Kurs: Programmieren (Teil 3) | GeoThek | Neues GeoTerm! | GEOS Fontkatalog | GEOS & PostScript | GEOS Spiele | Titelbilder | 3,5" Bootdisketten | GEOS & DFÜ | Regio-Spezialist | Regionales | Dies & Das | PC/GEOS Beilage zur GEOS - USER - POST 17


Kurs Programmieren

Kurs: Programmieren (Teil 1) | Kurs: Programmieren (Teil 2) | Kurs: Programmieren (Teil 3) | Kurs: Programmieren (Teil 4) | Kurs: Programmieren (Teil 5) | Kurs: Programmieren (Teil 6) | Kurs: Programmieren (Teil 7) | Kurs: Programmieren (Teil 8)


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


Letzte Änderung am 01.11.2019