|
|
|||||||||||||||||||
29.03.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum | |||||||||||||||||||
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
Kurs: GeoProgrammer (Teil 5)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. 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.
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
Kurzlink hierhin: http://geos-printarchiv.de/879 |
|||||||||||||||||||
Letzte Änderung am 01.11.2019 |