Mobile Times Business Club
Startseite : Mobility : OPL-Kurs, Teil 2
5/5mx/Revo/Revo+ OPL-Kurs, Teil 2 Aktualisierung
2007-03-08
01: Einführung
02: Menüs und mehr
03: Basics, Zufall & Mathetrainer
04: Spielend lernen - Würfel, Bandit & Lotto
05: Datenbanken - Neu/Ändern/Löschen
06: Datenbanken - Suchen/Gehen Zu
07: Gezielte Textausgabe
08: Fensterl'n mit dem Psion
09: Zeichnen mit Grips
Menüs und mehr
Sie können überall die Meinungen von Zeitgenossen darüber nachlesen, was man wie zu machen hat. Und Sie können beim Programmieren davon beliebig nach eigenem Geschmack nutzen. Tun Sie jedoch sich und den Nutzern Ihrer Programme etwas Gutes: Stellen Sie einen zuverlässigen und erkennbaren Programmausstieg zur Verfügung. Nichts ist lästiger, als den "Abschaltknopf" nicht finden zu können.
    Das Menü braucht nicht viele Punkte zu enthalten. Es reicht, den Programmausstieg zu erleichtern. Sinnvollerweise definiert man dazu den Menüpunkt "Beenden" und ordnet ihm den Hotkey [Strg+E] zu. Der Hotkey ist die Möglichkeit, durch drücken der Tasten, den Menüaufruf, über die Menütaste zu umgehen.

Standardmenü im Psion-feeling
Mit Hilfe der DIALOG-Konstruktion lassen sich auch Menüs gestalten. Ein Zusatz in der dtext-Zeile sorgt dafür, daß eine derartige Zeile durch die Pfeiltasten anwählbar wird. Die $600 sorgt für einen Strich unter dieser Zeile.
    Je nachdem, welche Zeile während des Programmlaufes selektiert wurde, erhält a% einen bestimmten Wert. Dieser nun dient der Auswahl des entsprechenden Programmzweiges. Ein [Esc] liefert eine Null zurück und das Programm wird beendet. Die "eins" kann nicht vorkommen, sie gehört zur dinit-Zeile.
Menü
proc Menü:
	rem programm nicht komplett, aber lauffähig
local a%
dinit "Menü Datei"
dtext "Datei öffnen...", "Strg+O", $400
dtext "Speichern unter...", "Strg+S",  $600
dtext "Beenden", "Strg+E",  $400
a%=dialog
print a%
get
if a%=2
   rem rufe Unterprogramm "Laden"
elseif a%=3
   rem rufe Unterprogramm "Speichern"
elseif a%=4
   rem rufe Unterprogramm "Beenden"
endif
endp

Einfaches Temperatur-Umrechnungsprogramm
Wenn hier der Dialog mit der [Esc]-Taste abgebrochen wird, ist das Ergebnis von Dialog wegen der Definition dieses OPL-Befehles "null", und der Else-Zweig wird durchlaufen - das Programm also beendet.
    Das ist in diesem Fall sogar ganz praktisch, da durch die Abfrage der Temperatur das Programm wie bei einem GET-Befehl jedesmal an der Stelle dFLOAT auf eine Eingabe wartet und gar nicht auf eine Menüanfrage reagieren könnte.
    Nach diesem Beispiel können Sie auch beliebige andere Konverter aufbauen (km/miles, Schilling/Euro...)
Konverter
PROC KONVERTER:
rem Umrechnung von Temperatureinheiten;
rem es gilt C=(F-32)÷1,8
global fz, c2f$(10), f2c$(10), c2f, f2c 
c2f$=" " : f2c$=" "
do
   dinit "Tempraturkonverter"
   dfloat fz, "Temp. eingeben: ",-100000,100000
   dtext "", "Ergebnisse (nur volle Grad):"
   dtext "C --> F:", c2f$
   dtext "F --> C:", f2c$,$200
   dtext "", "Beenden: mit Esc-Taste!",2
   if dialog
      c2f=32+(1.8*fz) : c2f$=fix$(c2f,0,10)
      f2c=(fz-32)/1.8 : f2c$=fix$(f2c,0,10)
   else
      beep 3,333 : stop rem Programmende
   endif
until 0
ENDP
Bevor wir Sie Ihren Experimenten überlassen, müssen wir noch den letzten Rat für heute loswerden: Kommentieren Sie Ihre Programme reichlich! Eine Binsenweisheit und im Moment lästig, ja, ja. aber denken Sie an das nächste Mal und Ihre Freude darüber, wenn Sie das Rad nicht noch einmal erfinden müssen.
Und viel Spaß beim Programmieren!


OPL am Psion von Rudolf Pöchacker (http://members.xoom.com/poechacker/)
Valid HTML 4.01! Copyright © 2003-2007 Mobile Times Business Club
Zurück zum Menü
Nach Oben