Optimierung von ActiveX-Steuerelementen
Verwenden Sie in Ihren Anwendungen Automation oder ActiveX-Steuerelemente, können Sie die Anwendung dahingehend optimieren, dass Automatisierung und ActiveX-Steuerelemente die optimale Leistung bringen.
Effizienter Einsatz von ActiveX-Steuerelementen
Beachten Sie die folgenden Anregungen, um die ActiveX-Steuerelemente in den Formularen optimal zu nutzen:
- Starten Sie Automatisierungsserver vorab. An Objektfelder gebundene Steuerelemente funktionieren für gewöhnlich besser und schneller, wenn die den Datentypen entsprechenden Anwendungen (z. B. Microsoft Excel oder Word) auf dem Client-Computer bereits ausgeführt werden.
- Fügen Sie Objekte "Als Symbol" ein. Wenn ein ActiveX-Steuerelement in ein Feld eingefügt werden soll, fügen Sie nicht das gesamte Objekt ein, sondern nur ein Symbol oder einen Platzhalter. Dadurch wird der Speicherbedarf reduziert, da Visual FoxPro gemeinsam mit dem Objekt ein Präsentationsbild speichert, das u.U. viel Speicher benötigt. Wird ein Objekt als Symbol einfügt, wird es auch schneller gezeichnet.
- Verwenden Sie Bild-Steuerelemente (image). Wenn Sie Bitmaps (z. B. Firmenzeichen) anzeigen möchten, sind Bild-Steuerelemente (image) wesentlich schneller als gebundene OLE-Steuerelemente.
- Verwenden Sie nach Möglichkeit manuelle Verknüpfungen. Manuelle Verknüpfungen mit Objekten sind schneller, da diese die bei automatischen Verknüpfungen erforderliche Benachrichtigungszeit nicht benötigen und da zum Zeichnen des Objekts der Server nicht gestartet sein muss. Verwenden Sie manuelle Verknüpfungen, wenn ein Objekt nicht häufig aktualisiert werden soll.
Optimieren der Automatisierungsleistung
Wenn Ihre Anwendung mit anderen Anwendungen zusammenarbeitet, erhalten Sie bei Einsatz der folgenden Techniken optimale Ergebnisse.
Vermeiden mehrerer Instanzen des Servers
In manchen Fällen starten Automatisierungsserver (wie Microsoft Excel) immer eine neue Instanz, selbst wenn bereits eine Instanz läuft. Verwenden Sie die Funktion GetObject( ) statt der Funktion CreateObject( ), um dieses Verhalten zu vermeiden und so die Leistung zu verbessern. Der folgende Aufruf verwendet beispielsweise immer (soweit vorhanden) eine existierende Instanz:
x = GetObject(,"excel.Application")
Im Gegensatz dazu erstellt der folgende Aufruf eine neue Instanz:
x = CreateObject("excel.Application")
Wird ein GetObject( ) aufgerufen, ohne dass der Server bereits läuft, erhalten Sie den Fehler 1426. Sie können diesen Fehler abfangen und ggf. CreateObject( ) aufrufen.
ON ERROR DO oleErr WITH ERROR()
x = GetObject(,"excel.application")
ON ERROR && restore system error handler
PROCEDURE oleErr
PARAMETER mError
IF mError = 1426 then
x = CreateObject("excel.application")
ENDIF
Effizienter Verweis auf Objekte
Die Ausführung von Ausdrücken, die Objekte in Automatisierungsservern verwenden, kann sehr aufwendig sein, insbesondere dann, wenn derartige Ausdrücke mehrfach ausgeführt werden. Sehr viel schneller ist es, Verweise auf die Objekte in Variablen zu speichern.
Siehe auch
Optimierung von Programmen | Optimieren von Anwendungen in einer Mehrbenutzerumgebung | Optimieren des Zugriffs auf Remotedaten | Optimieren von Anwendungen | Optimieren des Systems