Externe ActiveX-Komponenten, die ausserhalb des SAP GUI Fensters als eigenständige Anwendungen laufen, können mit VBScript Standardmitteln aufgerufen und gesteuert werden. Zur Kommunikation mit GuiXT wird beim Laden des VBScript Programms automatisch ein Objekt "guixt" angelegt, das folgende Methoden anbietet:
In den späteren Tutorials werden weitere Methoden des guixt-Objekts besprochen. 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 VBScript Funktion "spellcheck" auf und übergibt den Namen des GuiXT Langtextes, der geprüft werden soll, also "iwtext": CallVBS msg = spellcheck "iwtext"if V[msg] Message "E: &V[msg]" -statusline else Message "S: Rechtschreibprüfung beendet" -statusline endif Die VBScript 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 VBScript Funktion eine Fehlermeldung zurück. Das Steuern der Word-Applikation wird dadurch etwas kompliziert, da Word ein sehr reichhaltiges Objektmodell mit vielen Methoden anbietet, sodass man in der Regel zunächst im Internet nach einer ähnlichen Lösung Ausschau halten sollte. Die VBScript-Funktion "spellcheck" erzeugt das "Word" Objekt und kopiert 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):
Function spellcheck(txtname) 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:
|