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

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

Kurs: Programmieren (Teil 6)

Autoren: H. J. Ciprina, R. Bonse

In der heutigen Ausgabe des Kurses wollen wir unter dem Menüpunkt geos - Info eine Dialogbox programmieren, die über unser CD-Verwaltungsprogramm näher informiert. Betrachtet man den entsprechenden Menüpunkt beispielsweise bei Programmen wie GeoWrite oder GeoPaint, so erfährt man dort:

  1. den PRG-Namen mit einer Versions-Nr.,
  2. den Namen des Autors oder der Autoren,
  3. ein Erstellungsdatum und
  4. welcher Person oder welcher Firma die Kopierrechte gehören.

Wir wollen uns an diese Konvention halten, indem wir zumindest die Informationen a) bis d) in der Infobox ausgeben. Bei dem Punkt d) werden wir aber anstatt des für das Kopierrecht (Copyright) übliche Zeichen "(c)" nur ein "(w)" (für written by) eintragen, da die CD-Verwaltung keine kommerzielle Software ist. Natürlich steht es uns auch frei, weitere Texte in der Infobox auszugeben und einige grafische Verschönerungen anzubringen.

Haben Sie im letzten Kursteil bei der DoInfo-Routine ein brk eingetragen, so nehmen Sie dieses bitte wieder heraus, weil wir nun diese Routine ergänzen wollen. Fügen Sie in der Routine DoInfo zwischen den Befehlen jsr GotoFirstMenu und rts den Befehl jsr MakeInfoBox ein.

Der Übersichtlichkeit wegen, wollen wir die hinzukommenden Routinen nicht zwischen den Menüdefinitionen programmieren, sondern jeweils am Ende des Quelltextes anfügen. Geben Sie also nun folgendes Listing am Ende Ihres bisherigen Quelltextes ein. Am besten schreiben Sie den Text noch vor dem Befehl t "Break.src" damit Sie ihn nach Fertigstellung des Programmes schneller finden und herausnehmen können.

   :MakeInfoBox
     LoadW   a0,IBText2
     LoadW   r0,InfoDial
     jsr     DoDlgBox
     jsr     RestoreMargin
     rts

   :IBOben   =   20
   :IBUnten  =   139
   :IBLinks  =   44
   :IBRechts =   275

   :InfoDial
     b       %00000001 ; Muster1
               ;keine Standardbox
     dBOben    ;Ausmaße der Box

     b       IBUnten
     w       IBLinks
     w       IBRechts

     b       DB_USR_ROUT
     w       SetMargin

     b       DBGRPHSTR
     w       IBGraphic

     b       DBSYSOPV

     b       DBTXTSTR
     b       0
     b       10
     w       IBText1

     b       DBVARSTR
     b       0
     b       90
     b       a0L

     b       NULL

   :SetMargin
     MoveW   leftMargin,leftMarginOld
     MoveW   rightMargin,rightMarginOld
     LoadW   leftMargin,IBLinks+20
     LoadW   rightMargin,IBRechts-20
     rts

   :leftMarginOld    w  0
   :rightMarginOld   w  0

   :RestoreMargin
     MoveW   leftMarginOld,leftMargin
     MoveW   rightMarginOld,rightMargin
     rts

   :IBGraphic
     b       NEWPATTERN
     b       1

     b       MOVEPENTO

     w       IBLinks+2
     b        IBOben+2

     b       FRAME_RECTO
     w       IBRechts-2
     b        IBUnten-2

     b       MOVEPENTO
     w       IBLinks+4
     b       IBOben+4

     b       FRAME_RECTO
     w       IBRechts-4
     b       IBUnten-4

     b       NULL

   :IBText
     b       CR,BOLDON,OUTLINEON
     b       "CD-Verwaltung V 0.6"
     b       PLAINTEXT,CR,CR

     b       "geschrieben von"
     b       CR,ITALICON
     b       "H.J. Ciprina und R. Bonse"
     b       CR,CR

     b       PLAINTEXT
     b       "für den "
     b       ULINEON
     b       "Geos User Club"
     b       ULINEOFF,NULL

   :IBText2
     b       CR
     b       "(w) 1992 by Ciprina & Bonse"
     b       NULL

Kommen wir nun zur Besprechung des Listings. Die Routine, die von der DoInfo-Routine aufgerufen wird, heißt MakeInfo-Box. Hier wird ein Zeiger auf die Infobox-Tabelle in r0 übergeben und DoDlgBox aufgerufen.
Den Sinn der beiden anderen Befehlszeilen versteht man erst, wenn man die Dialogboxtabelle InfoDial genauer untersucht. Das erste Byte %00000001 der Tabelle bedeutet, daß das Schattenmuster 1 verwendet wird, aber keine Standardbox aufgebaut wird (Bit 7 = 1). Das Beispiel einer Standardbox haben Sie bereits im Kursteil 5 kennengelernt. Bei einer selbstdefinierten Dialogbox müssen auf das erste Byte je ein Byte für die obere und untere Grenze und je ein word für die linke und rechte Grenze der Box folgen. Da wir diese Werte noch öfter im Quelltext benötigen werden, empfiehlt es sich, sie gleich durch Label festzulegen (IBOben bis IBRechts) Nach dem Dialogboxtabellenkopf folgen im Funktionsblock der Tabelle die einzelnen Anweisungen. Die Dialogboxroutine zum Byte DB_USR_ROUT erwartet einen Zeiger auf eine Routine, die vor dem Aufbau der Dialogbox ausgeführt werden soll. Diese Routine heißt bei uns SetMargin:
Wir werden in der Dialogbox einige Zeilen Text ausgeben. Benutzt man für jede Zeile die Funktionscodes DBTXTSTR oder OBVARSTR, so muß man auch jedesmal die x und y-Koordinaten ausrechnen und setzen. Will man diese benutzt wird (Tip windowTop, windowBottom, Ausgabecode HOME).

Viel Spaß beim Programmieren, bis zur nächsten Ausgabe.

 

(H.J. Ciprina /R. Bonse)

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 20

! - - - - - M I C R O F I L M - - - - - ! | Editorial | Informationen, Planung und Aktionen 1992 | Büro-Kurs (Teil 3) | Defekte GeoWrite Texte | Defekte Disketten ? | Aus den Regionen - Berichte & Adressen | Tastenkürzel mit Commodore Taste | Gewusst wo - Jahresübersicht 1991 - Nr. 14 bis 19 | Buchbesprechung: Workshop Geos 64 von M&T | Berührungsängste ? | Kurs: Programmieren (Teil 6) | Auf und Umsteiger | Neuer Desktop Ersatz CLI | Die GeoThek, Die neue GeoThek - Teil 1 | Das Allerletzte - Aktuelle Kurz-Infos | PC/GEOS TEIL ZUR GEOS - USER - POST 20 | PD Disketten & Info's, Fonts, Clips und Grafiken


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/1281


Letzte Änderung am 01.11.2019