«Achtung Action!»: Programmablauf beschleunigen

Nimmt im StarWriter ein Makro umfangreiche Bearbeitungen vor (Texte einfügen, löschen, formatieren, suchen und ersetzen etc.), so verbringt das SO einen grossen Teil der Zeit damit, die Bildschirmansicht zu aktualisieren: der Umbruch muss laufend neu berechnet werden, die Bildschirmausgabe ebenso etc. Zudem könnte einem beim Zuschauen schlecht werden, wenn der Bildschirm nur noch flackert ;-).

Diese Probleme können relative einfach umgangen werden: die Bildschirmausgabe lässt sich nämlich unterdrücken. Führt man vor dem Makro-Rumpf ActionStart() aus, so wird der Bildschirm so lange nicht mehr aktualisiert, bis ActionEnd() aufgerufen wird. Zudem wird das Programm für Benutzereingaben gesperrt:

...
Selection.ActionStart()
' hier folgen die umfangreichen Bearbeitungen
Selection.Insert(...)
...
Selection.ActionEnd()
...

Da sich diese Aufrufe verschachteln lassen, ist es wichtig, dass ActionEnd() ebenso oft aufgerufen wird, wie ActionBegin(). Ansonsten wird danach auch die Benutzerinteraktion arg gestört, wenn dieser seine Änderungen nicht angezeigt kriegt... Diese Tatsache ist insbesondere auch dann zu berücksichtigen, wenn das Programm aus irgendwelchen Gründen einen Laufzeitfehler produziert (beachte hierzu auch das Problem des Warte-Cursors).



Letzte Änderung: 30.03.98
Copyright ©1998 by Michael Herger