[Allegro] Trick 63: Das Wichtigste zuerst - Index sofort beim Start
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Jan 9 08:38:15 CET 2008
Trick 63: Das Wichtigste zuerst
Beim Start sofort den Index erscheinen lassen
Aufgabe: Mit dem Start von a99 soll sich zuallererst ein Register
auftun, und zwar natürlich ein ganz bestimmter Abschnitt.
Warum: Es kann in einer Anwendung sehr sinnvoll sein, wenn der Nutzer
sofort beim Start eine ganz bestimmte Stelle in einem der
Register aufgeblättert bekommt.
Ein Anwender kann auch der Meinung sein, daß der Index das
zentrale Konzept der Datenbank ist, und deshalb zu Beginn
erst einmal ein Register präsentieren wollen.
Lösung:
Sagen wir, um konkret zu sein, es soll Register 3 an der Stelle
"goethe" erscheinen.
Was NICHT geht (sonst wäre dieser Trick nicht nötig), das ist, in den
_start.flx einfach reinzuschreiben
index |3 goethe
Warum geht das eigentlich nicht? Nun, das hat mit den internen
Bedingungen zu tun, die im Moment der Abarbeitung des _start.flx
vorliegen - man erspare uns die Einzelheiten, es führt zu weit
und ist ab jetzt uninteressant.
Der Trick ist, sich das Hilfsprogramm "flex" dienstbar zu machen!
Dieses ermöglicht, einen FLEX von außen an ein laufendes a99 zu senden,
um ihn ausführen zu lassen. Das kann manuell, aber auch aus einem
Batch heraus geschehen. Wir lassen einfach a99 selber einen Befehl an
das System geben, indem wir in den _start.flx an das Ende schreiben
(und statt |3 goethe natürlich was immer Sie wollen):
open x dothis.flx
wri "index |3 goethe" n
close x
var P "flex dothis"
dos
Das ist schon alles! Die letzten 2 Zeilen lassen schlicht den Befehl
flex dothis
ausführen. Damit wird flex.exe als externes Programm gestartet
und sendet von außen den vorher präparierten FLEX dothis.flx
an a99 - und da steht genau der index-Befehl drin.
Wenn flex.exe dann seine Arbeit tut, sind in a99 die "internen
Bedingungen" inzwischen erfüllt, die das problemlose Aufklappen des
Registers ermöglichen.
Wichtig: In der INI-Datei darf nicht exflex=0 stehen.
Die Berechtigung (also der Wert access=...) spielt keine Rolle!
Jetzt können Sie natürlich drangehen und in dothis.flx reinschreiben,
was immer Sie wollen und am Anfang ausgeführt werden soll. Aber alles
andere außer "index" kann _start.flx ja sowieso ausführen, dafür ist
der Trick unnötig.
Mehr zum Hilfsprogramm flex.exe: h exflex.txt
(Darauf beruhte übrigens auch das alte RuckZuck-Konzept!)
Die allerersten Versionen von a99 waren, ironischerweise, so
gestrickt, daß zuerst ein Register erschien - aber das konnte man
nicht abschalten. Vehemente Wünsche bewogen uns, die Sache zu ändern,
aber die Möglichkeit, ein Register als erstes erscheinen zu lassen,
ging aus den genannten internen Gründen dann leider verloren und wurde
bis heute nicht wiedergefunden...
Mehr Informationen über die Mailingliste Allegro