Externe ActiveX-Komponenten, die ausserhalb des SAP GUI Fensters als eigenständige Anwendungen laufen, können mit VBScript Standardmitteln aufgerufen und gesteuert werden. Als Beispiel für das Benutzen einer externen ActiveX-Komponente implementieren wir eine Rechtschreibprüfung für eine GuiXT-textbox über Microsoft Word. Der Benutzer gibt einen Langtext ein und kann dann über eine Drucktaste die Rechtschreibprüfung auslösen. Wir starten eine Word-Anwendung, übergeben den Text und führen die Rechtschreibeprüfung durch. Der Benutzer kann den Text korrigieren, der dann automatisch wieder in die GuiXT Textbox zurückgestellt wird. Das GuiXT
Script legt eine Textbox und eine Drucktaste sowie um die beiden
Elemente einen Gruppenrahmen an: Das sieht dann wie folgt aus:
Das InputScript "spellcheck.txt" ruft eine VB.NET Funktion "spellcheck" auf und übergibt den Namen des GuiXT Langtextes, der geprüft werden soll, also "iwtext": CallVB msg = utilities.class1.spellcheck "iwtext"if V[msg=ok] Message "S: Rechtschreibung korrekt" -statusline else Message "E: &V[msg]" -statusline endif Return
Die VB Funktion ändert den Langtext "iwtext" über die Word-Rechtschreibprüfung. Falls ein technischer Fehler auftritt, zum Beispiel MS Word auf dem PC nicht installiert ist, gibt die VB Funktion eine Fehlermeldung zurück. Wir erzeugten das "Word" Objekt und kopieren dann den GuiXT Langtext in das Dokument. Anschliessend wird die interaktive Rechtschreibprüfung aufgerufen. Der korrigierte Text wird in die GuiXT-textvariable zurückgestellt, wobei die Zeilenumbrüche ein kleines Problem bereiten, das durch Ersetzen von CR durch CRLF gelöst werden kann: Word liefert nur CR am Zeilenende zurück (Carriage return), die Textbox verlangt aber CRLF (Carriage return + line feed):
Der Ablauf für den Benutzer:
Der Benutzer erfasst einen Text und drückt dann auf "Rechtschreibprüfung":
Im Fehlerfall erscheint ein Word-Window mit dem Korrekturvorschlag. Der Benutzer kann die Korrekturen akzeptieren und der geänderte Text wird automatisch in die GuiXT Textbox übernommen:
|