Hinzufügen von OLE-Objekten zu Anwendungen

Sie können OLE-Objekte zu Tabellen und Formularen entweder interaktiv oder programmgesteuert hinzufügen.

Hinzufügen von OLE-Objekten zu Tabellen

Überlegen Sie sich während des Entwurfs von Tabellen für Ihre Anwendung, ob die Tabellen OLE-Objekte enthalten müssen. Angenommen, Sie erstellen eine Produkttabelle und möchten Word-Dokumente zu dieser Tabelle hinzufügen, die ansprechend formatierte Produktbeschreibungen enthalten, um sie an potenzielle Kunden senden zu können. Sie müssen in der Tabelle ein Feld vom Typ Objekt definieren, um Word-Dokumente integrieren zu können. Anschließend fügen Sie die Dokumente zur Tabelle hinzu, indem Sie sie durch Verknüpfen oder Einbetten in dieses Feld einbeziehen.

So fügen Sie zu einer Tabelle ein OLE-Objekt hinzu

  1. Erstellen Sie mit Hilfe des Tabellen-Designers eine Tabelle mit einem Feld vom Typ Objekt.

  2. Öffnen Sie das Objektfeldfenster eines solchen Feldes, indem Sie im Datenblattmodus auf das infrage kommende Feld doppelklicken oder indem Sie den Befehl MODIFY GENERAL verwenden.

  3. Klicken Sie im Menü Bearbeiten auf Objekt einfügen.

    - Oder -

Anfügen von OLE-Objekten an Tabellen

Sie können OLE-Objekte mit dem Befehl APPEND GENERALl zu Tabellen hinzufügen. Mit diesem Befehl können Sie ein OLE-Objekt aus einer Datei importieren und in ein Feld vom Typ Objekt einfügen. Falls das Feld bereits ein Objekt enthält, wird dieses durch das neue Objekt ersetzt.

Anmerkung   Im Gegensatz zu APPEND und APPEND BLANK fügt APPEND GENERAL zu der Tabelle keinen neuen Datensatz hinzu.

Mit Hilfe von APPEND GENERAL können Sie OLE-Objekte einbetten oder eine Verknüpfung mit OLE-Objekten herstellen, die mit anderen Anwendungen, wie Microsoft Excel und Word, erstellt wurden. Diese Anwendungen unterstützen sowohl Verknüpfen als auch Einbetten. Einige Anwendungen, wie z. B. Microsoft Graph, unterstützen jedoch nur das Einbetten.

Angenommen, Sie möchten Word für Windows-Dateien in einer Visual FoxPro-Tabelle speichern. Wenn die Tabelle ein Feld vom Typ Objekt mit Namen WordDoc enthält, können Sie die Dokumente mit dem folgenden Code einbetten:

CREATE TABLE oletable (name c(24), worddoc g)
CD GETDIR()

nFiles = ADIR(aWordFiles, "*.doc")
IF nFiles > 0
   FOR i = 1 to nFiles
      APPEND BLANK
      REPLACE Oletable.Name WITH aWordFiles(i,1)
      APPEND GENERAL WordDoc FROM aWordFiles(i,1)
   ENDFOR
ELSE
   MESSAGEBOX("No Word files found.")
ENDIF

Anmerkung   Der Code im vorstehenden Beispiel sucht nur nach Dateien, die mit DOC, der Standarderweiterung für Word-Dateien, enden. Weil dies von Microsoft Word und OLE erkannt wird, werden die Dateien bei APPEND GENERAL automatisch mit dem Word-Server verbunden.

Falls Sie eine andere als die vom Server erwartete Erweiterung verwenden, müssen Sie die Klasse des Servers mit der CLASS-Klausel deklarieren. Wenn Sie also zu dem oben stehenden Beispiel die Klasse für Word hinzufügen, lautet der neue Code:

APPEND GENERAL WordDoc FROM wordfiles(i,1) CLASS "Word.Document.6"

Falls Sie über Dateien mit allgemeinen Erweiterungen (zum Beispiel BMP) verfügen, die eventuell von anderen Servern verwendet werden, können Sie mit der Klausel CLASS den Server festlegen, den Sie für diese Dateien verwenden möchten. Wenn Sie Objekte jedoch lieber verknüpfen als einbetten möchten, verwenden Sie das LINK-Schlüsselwort, wie im folgenden Beispiel gezeigt wird:

APPEND GENERAL WordDoc FROM wordfiles(i,1) LINK CLASS "Word.Document.6"

Darüber hinaus können Sie Dateien in einem Objekt ersetzen, indem Sie das Schlüsselwort DATA von APPEND GENERAL verwenden, wie im nachstehenden Beispiel anhand von Microsoft Graph erläutert wird.

Aktualisieren von Microsoft Graph-Objekten

Microsoft Graph-Objekte können eingebettet werden. Die Werte in einem mit Microsoft Graph erstellten Diagramm basieren auf den Werten des Microsoft Graph-Datenblattes.

Um nun die Daten in einem Microsoft Graph-Diagramm programmgesteuert zu ändern, müssen Sie eine Zeichenfolge erstellen, die die neuen Daten einschließlich Tabulatoren, Absatzschaltungen und Zeilenvorschüben enthält, und diese Zeichenfolge dann mit der Klausel DATA des Befehls APPEND GENERAL an das Microsoft Graph-Objekt übergeben.

Im folgenden Beispiel wird von einer Tabelle mit der Bezeichnung stock ausgegangen, die u. a. die Felder data und close für das Datum und den Preis bei Börsenschluss enthält. Das Microsoft Graph-Objekt ist im Objektfeld msgraph einer Tabelle namens graph gespeichert. Im Beispiel wird ein Diagramm im Hinblick auf die Aktienpreise bei Börsenschluss der letzten 30 Tage aktualisiert.

Code Kommentar
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
LOCAL lcData
Definiert Zeichen für Absatzschaltungen und Tabulatoren.
SELECT date, close;
  FROM Stock WHERE BETWEEN(date, ;
  DATE(),DATE() - 30) ;
  ORDER BY date INTO CURSOR wtemp
Wählt die Werte aus, mit denen das Diagramm aktualisiert werden soll, in diesem Fall das Datum und die Aktienpreise bei Börsenschluss der letzten 30 Tage.
SELECT wtemp
lcData = " " + ;
  TAB + "Closing Price" + CRLF
SCAN 
  lcData = lcData + DTOC(date)
  lcData = lcData + TAB
  lcData = lcData + ;
  ALLTRIM(STR(close)) + CRLF
ENDSCAN
Erstellt eine Zeichenfolge lcData von Daten aus dem Cursor zum Aktualisieren des Diagramms.

"Closing Price" als Spaltenkopf ist der Text, der standardmäßig in der Legende des Diagramms angezeigt wird.

SELECT graph
APPEND GENERAL msgraph DATA lcData
Sendet die neuen Werte mit Hilfe der Klausel DATA des Befehls APPEND GENERAL an das Diagramm.
USE IN wtemp
Schließt den Cursor.

Anmerkung   Sie können OLE-Objekte aus Feldern vom Typ Objekt auch in Ihren Berichten anzeigen.

Hinzufügen von OLE-Objekten zu Formularen

Im Formular-Designer können Sie mit Hilfe des OLE-Container-Steuerelements zu Formularen einfügbare OLE-Objekte hinzufügen. Außerdem können Sie OLE-Objekte aus Feldern vom Typ Objekt mit Hilfe des gebundenen OLE-Steuerelements anzeigen.

So fügen Sie zu einem Formular ein OLE-Objekt hinzu

  1. Fügen Sie zu Ihrem Formular im Formular-Designer ein OLE-Container-Steuerelement hinzu. Das Dialogfeld Objekt einfügen wird angezeigt.
  2. Wählen Sie im Dialogfeld Objekt einfügen die Option Neu erstellen oder Aus Datei erstellen aus.
  3. Wählen Sie das infrage kommende OLE-Objekt aus der Liste "Objekttyp" aus.

Sie können darüber hinaus die Symbolleiste für Formular-Steuerelemente so anpassen, dass Sie bestimmte OLE-Objekte direkt einfügen können.

So fügen Sie OLE-Objekte über die Symbolleiste für Formular-Steuerelemente hinzu

  1. Wählen Sie im Menü Extras den Befehl Optionen.
  2. Wählen Sie im Dialogfeld Optionen auf der Registerkarte Steuerelemente die Option ActiveX-Steuerelemente.
  3. Markieren Sie in der Liste Ausgewählt die OLE-Objekte und ActiveX-Steuerelemente, die auf der Symbolleiste für Formular-Steuerelemente verfügbar sein sollen.
  4. Klicken Sie auf Als Standardeinstellung verwenden, und klicken Sie anschließend auf OK.
  5. Klicken Sie auf der Symbolleiste für Formular-Steuerelemente auf Klassen anzeigen, und wählen Sie anschließend ActiveX-Steuerelemente.

So zeigen Sie ein OLE-Objekt aus einem Feld vom Typ "Objekt" an

  1. Fügen Sie im Formular-Designer zu Ihrem Formular ein gebundenes OLE-Steuerelement hinzu.

  2. Legen Sie das Feld vom Typ Objekt mit den gewünschten Daten fest, indem Sie die ControlSource-Eigenschaft des Objekts einstellen.

    Wenn beispielsweise der Tabellenname Inventory und der Name des Feldes Current lautet, stellen Sie die ControlSource-Eigenschaft auf Inventory.Current ein.

Sie können ein OLE-Objekt aus einem Feld vom Typ Objekt auch programmgesteuert anzeigen.

Code Kommentar
frm1 = CREATEOBJECT("form")
Erstellt das Formular.
frm1.ADDOBJECT("olb1",
"oleboundcontrol")
Fügt das Steuerelement hinzu.
frm1.olb1.ControlSource = 
"Inventory.Current"
Bindet die Daten mit dem Steuerelement.
frm1.olb1.Visible = .T.
frm1.Visible = .T.
Macht Steuerelement und Formular sichtbar.

Interaktives Arbeiten mit OLE-Objekten

Wenn Sie zu einem Formular oder einem Feld vom Typ Objekt ein OLE-Objekt hinzufügen, können Sie die Daten und die Anzeigecharakteristika des Objekts zur Laufzeit oder zur Entwurfszeit ändern.

Anmerkung   Sie können die Daten eines OLE-Objekts in einem gebundenen OLE-Steuerelement nicht zur Entwurfszeit bearbeiten.

Einige OLE-Objekte unterstützen die direkte Bearbeitung, so dass Sie das Objekt in dem von Ihrer Anwendung verwendeten Fenster bearbeiten können. Wenn Sie zum Beispiel auf ein Microsoft Excel-Arbeitsblatt in einem Feld vom Typ Objekt doppelklicken, anstatt eine Kopie von Microsoft Excel in einem anderen Fenster zu starten, ändern sich die Menütitel und beziehen die Microsoft Excel-Menüstruktur ein und die standardmäßigen Microsoft Excel-Symbolleisten werden angezeigt. Auf diese Weise können Sie oder der Benutzer Ihrer Anwendung das Microsoft Excel-Objekt bearbeiten, ohne die Anwendung verlassen zu müssen.

Anmerkung   Sie können nur eingebettete Objekte direkt bearbeiten, jedoch keine verknüpften Objekte.

Sie können den Automatisierungsserver auch in einem anderen Fenster öffnen und die Daten oder Anzeigecharakteristika hier ändern. Die neuen Werte werden in Ihrer Anwendung angezeigt, wenn Sie wieder dorthin zurückkehren.

So können Sie ein OLE-Objekt in einem Objektfeldfenster direkt bearbeiten

  • Wählen Sie aus dem Menü Bearbeiten den gewünschten Objekttyp aus, und klicken Sie im Untermenü auf Bearbeiten.

    Handelt es sich beispielsweise um ein Word-Dokument, wählen Sie WordDokument. Wenn Sie ein Microsoft Graph-Objekt bearbeiten möchten, wählen Sie ExcelDiagramm.

    - Oder -

  • Doppelklicken Sie auf das Objekt.

So öffnen Sie die Anwendung für ein OLE-Objekt in einem Objektfeldfenster

  • Wählen Sie aus dem Menü Bearbeiten den gewünschten Objekttyp aus, und klicken Sie im Untermenü auf Öffnen.

Wenn Sie zu dem Formular ein OLE-Objekt in einem OLE-Container-Steuerelement oder in einem gebundenen OLE-Steuerelement hinzufügen, bieten sich Ihnen mehr Steuermöglichkeiten für das Öffnen und Bearbeiten des Objekts.

Durch Einstellen der AutoActivate-Eigenschaft eines gebundenen OLE-Steuerelements oder eines OLE-Container-Steuerelements können Sie ermitteln, ob das OLE-Objekt geöffnet oder bearbeitet werden soll, wenn das Steuerelement den Fokus erhält oder wenn der Benutzer auf das Steuerelement doppelklickt. Mit der AutoVerbMenu-Eigenschaft wird angegeben, ob der Benutzer das OLE-Objekt über das Kontextmenü des ActiveX-Steuerelements öffnen oder bearbeiten kann.

Wenn Sie den Zugriff auf das OLE-Objekt so einschränken möchten, dass es nur programmgesteuert mit der DoVerb-Methode geöffnet oder bearbeitet werden kann, stellen Sie AutoActivate auf 0 - Manual und AutoVerbMenu auf Falsch (.F.) ein.

Steuern von Menüs

Wenn ein Benutzer ein OLE-Objekt direkt bearbeitet, werden auf der Menüleiste die Menüs des OLE-Objekts angezeigt, nicht die Menüs Ihrer Anwendung. Falls Sie einen Menünamen erstellen und möchten, dass dieser auch dann angezeigt wird, wenn der Benutzer ein OLE-Objekt bearbeitet, wählen Sie im Dialogfeld Optionen zur Bezeichnung des Menü-Designers eine entsprechende OLE-Position. Weitere Informationen finden Sie unter Entwerfen von Menüs und Symbolleisten oder unter dem Stichwort NEGOTIATE-Klausel im Thema DEFINE PAD.

Siehe auch

Hinzufügen eines Objektfeldes zu einem Bericht | Entwurf einer OLE-Anwendung | Verwenden von ActiveX-Steuerelementen | Freigeben von Informationen und Hinzufügen von OLE |Tabellen-Designer | MODIFY GENERAL | APPEND GENERAL-Befehl