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

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

Kurs: GeoProgrammer (Teil 5)

Autor: Jürgen Heinisch

PatternDemo

Dieser Kursteil behandelt nochmals das Thema Dialogboxen. Dabei wollen wir uns die Möglichkeiten der verschiedenen Füllmuster ansehen. Dazu dient das Programm >ShowPattern<. Bitte gebt das Programm zunächst ein und schaut es Euch mal an.

Was passiert nun in diesem kleinen Programm? Zunächst wird der Bildschirm gelöscht. Diese Routine haben wir schon öfters verwendet. Anschließend wird die erste Dialogbox aufgebaut. Gewählt ist eine in der Größe frei definierte Dialogbox mit dem Schattenmuster 0. In der Box wird nun ein Text und ein OK Feld dargestellt. Nach dem anklicken des OK - Feldes wird der erste Wert der Dialogboxtabelle um >1< erhöht und mit 32 ($20) verglichen. Dies ist die maximale Anzahl der Füllmuster. Fällt der Vergleich negativ aus, wird die nächste Dialogbox mit einem neuen Schattenmuster dargestellt. Andernfalls bricht das Programm ab und kehrt zum Desktop zurück.

Welche Möglichkeiten gibt es nun noch innerhalb der Dialogbox? Zunächst gibt es noch einige weiter Felder, die dargestellt werden können. Da wären neben OK noch CANCEL (Abbruch), YES (Ja), NO (nein), OPEN (öffnen) und DISK (Disk). Bei jedem Feld muß nach dessen Aufruf die Koordinatenangabe für den Darstellungsort erfolgen. Gerechnet wird von der linken oberen Ecke der Dialogbox. Dabei muß X in Bytes und Y in Punkte gerechnet werden.
Werden in einer Dialogbox mehrere Felderarten dargestellt, so möchte man ja wissen, über welches Feld die Box verlassen wurde. Dazu dient die Adresse >sysDBData<. Hier und in >r0L< steht die Nummer des Steuercodes, der zu den Feld gehört, mit dem die Dialogbox verlassen wurde. Dabei bedeutet 1 = OK ... bis ... 6 = DISK. So kann man je nach Programmaufgabe eine Entscheidungsauswahl treffen.

Die Felder reichen für eine Dialogbox aber nicht aus. Deshalb gibt es auch die Möglichkeit zur Textausgabe und Texteingabe innerhalb der Dialogbox. Die Textausgabe erfolgt mit >DBTXTSTR<. Folgen muß diesem Aufruf die Anfangskoordinate des Textes in X/Y Punkte. Diesem folgt nun noch ein Zeiger auf die Adresse an der der auszugebene Text steht. Neben dieser Textausgabe gibt es noch >DBVARSTR<. Im Prinzip ist es dasselbe. Nur die Adresse des Textes wird indirekt angegeben. Das heißt, es wird nach den Koordinaten ein Register, z.B.: r5L, benannt. In diesem sucht GEOS dann zusammen mit dem Register+1 nach der Anfangsadresse des Textes. Damit diese darinsteht, kann man mit >LoadW r5,text< die Adresse dorthin laden. Das muß allerdings vorher geschehen.

Für die Texteingabe wird >DBGETSTR< benötigt. Hier gilt in der Definition zunächst genau das gleiche wie bei >DBVARSTR<. Nur das anschließend ein Byte für die maximale Länge des Textes anzugeben ist. Der einzugebene Text muß schon einen reservierten Bereich haben der zumindest mit nullen aufgefüllt und mit einer NULL abgeschlossen. Man kann aber auch einen Eingabetext vordefinieren, den der Anwender dann einfach mit Return übernehmen kann. In unserem nächsten Kursteil werden wir darauf zurückkommen.
Nun aber immer noch nicht genug der Möglichkeiten in der Dialogbox. Weil Ich diese Routinen selber noch nicht viel angewandt habe, zum Abschluß dieses Kursteils nur eine Kurzdefinition:

DBSYSOPV = wenn außerhalb eines Icons (Feld) geklickt wird, erfolgt Rückkehr zur aufrufenden Routine.
DBGRHPSTR = Führt Grafikstring innerhalb der Dialogbox aus.
DBGETFILES = Sucht und stellt alle Files einer Dateiart dar, z.B.: GeoPaint Dokumente.
DBOPVEC = Setzt eine Adresse zur Programmfortführung beim klicken außerhalb eines Feldes.
DBUSRICON = Erstellt ein eigenes Icon innerhalb der Dialogbox.
DBUSRROUT = Führt nach dem Aufbau der Dialogbox eine Unterroutine aus. Diese muß mit RTS enden.

So nun habt Ihr wieder genug Material um bis zur nächsten Folge des Kurses zu experimentieren.

Hier das Listing:


; Demo SHOWPATTERN aus dem 64er
; Sonderheft 28 "Alles über GEOS"
; Übersetzt von Hypra-Ass  in GeoAssembler

   if         Pass1           ; Dem Assembler mitteilen welche
   .include   geosSym         ; Dateien eingebunden werden
   .include   geosMac         ;  müssen.
   .endif

   .psect                     ; Programmanfangssadresse

ProgStart:
   LoodW      r0,#ClearScreen ; Zeiger auf Bildschirmlöschroutine
   jsr        GraphicsString  ; Bildschirm löschen ausführen

ZeigBox:                      ; Dialogboxzeigeroutine
   LoadW      r0,#dbtabelle   ; Zeiger auf Dialogboxtabelle
   jsr        DoDlgBox        ; Dialogbox darstellen
   inc        dbtabelle       ; 1. Adresse in Dialogboxtabelle
                              ; um 1 erhöhen
   lda        dbtabelle       ; 1. Adresse in Dialogboxtabelle in
                              ; Akku laden
   cmp        #$20            ; Vergleichen mit 32 (Anzahl dar Pattern)
   bne        ZeigBox         ; Wenn 32 nicht erreicht, dann Dialogbox
                              ; mit neuem Schattenmuster darstellen.
   jmp        EnterDesktop    ; sonst zurück zum Desktop

dbtabelle:
   .byte      SETDBPOS ö 0    ; Freie Dialogbox mit Füllmuster
                              ; 0 festgelegt
   .byte      20              ; Y-Koordinaten
   .byte      180             ; der Dialogbox
   .word      20              ; X-Koordinaten
   .word      300             ; der Dialogbox
   .byte      DBTXTSTR        ; Textausgabe vorbereiten
   .byte      5               ; X/Y Koordinaten des
   .byte      10              ; Textanfangs
   .word      text            ; Zeiger auf den Text
   .byte      OK              ; OK Feld darstellen
   .byte      10              ; X-Position in Bytes (also mal 8)
   .byte      50              ; Y-Position in Punkte
   .byte      NULL            ; Ende der Tabelle

text:                         ; Text innerhalb der Dialogbox
   .byte      "Bereit für's nächste Muster ?"
   .byte      NULL            ; Ende des Text.

ClearScreen                   ; Tabelle für Bildschirm löschen

   >>Tabelle siehe GUP 5. Seite 13<<
                              ; Ende

 

Jürgen Heinisch

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 06

! - - - - - M I C R O F I L M - - - - - ! | Editorial | Printer Edit #2 | Geo. Interprint | GeoTerm 2.0 - Tips | GeoBox | TIPS & TRICKS | GEOS 128 V 2.0 | Buchtip: Alles über GEOS 2.0 | Anwendung: Textgrabber | Kurs: GeoProgrammer (Teil 5) | GeoFont Beispiel | GeoFile - Info | Programmierer gesucht | Clubtreffen | GeoThek


GeoProgrammer

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


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


Letzte Änderung am 01.11.2019