Modale vs. nicht modale «Dialoge»

Einleitung

Grundsätzlich existieren im StarBasic des SO4 nur SO-weit modale Dialoge: modal heisst hier, dass das Fenster so lange im Vordergrund bleibt, bis es geschlossen wird. Es ist während dieser Zeit nicht möglich, in ein anderes Fenster innerhalb des SOs zu wechseln. Dennoch wäre es manchmal wünschenswert, während der Programmausführung im SO4 anderweitig weiter arbeiten zu können, ohne aber auf eine Bildschirmausgabe (z.B. Fortschrittsanzeige, mehr dazu im nächsten Abschnitt) des laufenden Makros verzichten zu müssen. Dies ist durchaus auch möglich: durch Einbetten von Kontrollfeldern in ein SO (meist wohl SW)-Dokument.

Modale Dialoge

Die modalen Dialoge sind die ganz normalen Dialoge, die man in der StarBasic-Entwicklungsumgebung entwerfen kann. Um einen solchen Dialog zum Projekt hinzuzufügen, reicht ein rechter Mausklick in die Region am unteren Bildschirmrand, die die Laschen für allenfalls schon bestehende Module enthält. Aus dem darauf erscheinenden Menü kann man dann einen Dialog einfügen. Danach steht die ganze Palette von Werkzeugen für die Gestaltung von Dialogen und deren Kontrollfeldern bereit.

Wird ein solcher Dialog angezeigt, so bezieht das SO einen erstaunlichen Anteil Rechenpower für sich... Ob dies nötig ist oder nicht, sei andernorts diskutiert. Auf alle Fälle resultiert daraus eine höhere Geschwindigkeit für die im Hintergrund laufenden Makros, als wenn die folgende, nicht modale Variante verwendet wird. Ausserdem kann der Anwender nicht auf das übrige SO zugreifen, so lange dieser Dialog auf dem Bildschirm steht. Dies kann u.U. aber durchaus sinnvoll und gewollt sein, wenn z.B. ein Makro zahlreiche Dokumente öffnet, darin arbeitet, schliesst etc. In einem solchen Fall könnte ein Benutzereingriff nicht vorhersehbare Resultate zur Folge haben.

Soll auf ein Kontrollfeld eines Dialoges zugegriffen werden, so muss der Dialog selber in der Anweisung mit angegeben werden. Im oben dargestellten Beispiel-Dialog «ExtendDlg» können wir mit folgender Anweisung auf den Abbrechen-Knopf zugreifen:

ExtendDlg.CancelButton.Caption = "&Abbrechen"

Nicht modale «Dialoge»

Nicht modale Dialoge sind derzeit mit StarBasic nicht möglich. Es ist jedoch möglich, einen solchen in Form von in ein Dokument eingebetteten Kontrollfeldern nachzuahmen. Da ein im Hintergrund ablaufendes Makro seine Anzeige in diesem Dokument vornimmt, ist es möglich, zur gleichen Zeit in einem anderen Dokument weiter zu arbeiten.

Im Vergleich zu den Dialogen verbraucht diese Methode viel weniger Rechenpower, ist aber auch deutlich langsamer. Im abgebildeten Beispiel (aus dem Abschnitt über die Fortschrittsanzeige), das keine Datei-Manipulationen vornimmt, sondern lediglich ein paar Zahlen berechnet, differieren die Laufzeiten um einen Faktor 2-3! Für Abläufe, die sowieso lange dauern, kann es aber dennoch angenehmer sein, wenn zwar länger gewartet werden muss, während dieser Zeit das System für weitere Aufgaben aber zur Verfügung steht.

Im Gegensatz zu den Dialogen ist bei dieser Methode das Ansprechen einzelner Kontrollfelder noch etwas einfacher: die Benennung des Dialoges entfällt. Es reicht folgende Anweisung:

CancelButton.Caption = "&Abbrechen"
Ein Nachteil stellt allerdings das Problem dar, dass das SO Änderungen zur Laufzeit, etwa in obigem Beispiel die Zeit-Anzeige und der Zähler, als Änderungen des Dokumentes betrachtet. So will es nach dem Ablauf des Makros das Dokument neu speichern lassen. Das schreibgeschützte Öffnen (Documents.Open(myFile,, "R",)) sollte dies entschärfen.

Um in einem Dokument einen Dialog einigermassen ansprechend zu gestalten, ist oftmals etwas mehr Aufwand notwendig. Meist muss mit Hilfe von Tabellen und/oder Textrahmen für eine ansprechende Gestaltung gesorgt werden. Dafür ist es ein vielfaches einfacher, etwa Abbildungen oder andere graphische Elemente mit einzubeziehen.

Vergleich


Modaler Dialog

Nicht modaler Dialog

Zugriff auf SO während Makro-Ausführung

-

+

«Schutz» vor Benutzereingriffen während Makro-Ausführung

+

-

Ausführungs-Geschwindigkeit des Makros

+

-

Gestaltungsmöglichkeiten

-

+

Gestaltungsaufwand

+

-



Letzte Änderung: 03.04.98
Copyright ©1998 by Michael Herger