ActiveX-ActiveForm mit VCL-Formularen erzeugen
Nach oben zu So erstellen Sie VCL-Formularanwendungen
Wie Steuerelemente von Delphi generieren auch ActiveX-Steuerelemente Programmcode, wenn sie in ein Formular oder einen anderen logischen Container der IDE eingefügt werden. Im Gegensatz zu Delphi-Steuerelementen sind ActiveX-Steuerelemente jedoch sprachunabhängig. Sie können ActiveX-Steuerelemente erstellen, die nicht nur in Delphi- oder C++Builder-Umgebungen, sondern in vielen anderen Windows-Programmierumgebungen eingesetzt werden können.
In dieser Anleitung wird mit Hilfe des ActiveX-ActiveForm-Experten ein ActiveForm erstellt, das zwei Komponenten enthält. Der Experte verwendet zum Erstellen des ActiveForm ein VCL-Formular. Um das ActiveForm zu testen, können Sie es mit einer einfachen HTML-Datei in einem Webbrowser öffnen. Diese Anleitung umfasst die folgenden grundlegenden Schritte:
- Erstellen eines ActiveX-Bibliotheksprojekts und eines ActiveX-ActiveForm.
- Hinzufügen einer Schaltfläche und Hinzufügen von Code für eine Ereignisbehandlungsroutine.
- Testen des ActiveForm.
Inhaltsverzeichnis
So erstellen Sie ein ActiveX-Bibliotheksprojekt und ein ActiveX-ActiveForm:
- Erstellen Sie auf dem lokalen Laufwerk ein Verzeichnis für das ActiveX-Projekt. Weisen Sie dem Verzeichnis einen aussagekräftigen Namen zu, z.B. ActiveX.
- Wählen Sie entweder:
- Datei > Neu > Weitere > C++Builder > ActiveX > ActiveX-Bibliothek oder
- Datei > Neu > Weitere > Delphi > ActiveX > ActiveX-Bibliothek
- Dadurch wird ein DLL-Projekt (Dynamic Link Library) angelegt, in das Sie die In-Process-ActiveX-Objekte aufnehmen können.
- Wählen Sie entweder:
- Datei > Neu > Weitere > C++Builder > ActiveX > Active Form oder
- Datei > Neu > Weitere > Delphi > ActiveX > Active Form
- Der ActiveForm-Experte wird angezeigt.
- Übernehmen Sie die Voreinstellungen, und klicken Sie auf OK. Der Experte erzeugt den Quelltext für die Implementierung des ActiveX-Steuerelements und fügt ihn dem Projekt hinzu. Ein ActiveX-ActiveForm wird angezeigt.
So fügen Sie dem ActiveForm eine Schaltfläche und ein Ereignis hinzu:
- Ziehen Sie aus der Seite Standard der Tool-Palette eine TEdit- und eine TButton-Komponente in das Formular.
- Wählen Sie die Schaltfläche aus.
- Doppelklicken Sie auf der Registerkarte Ereignisse des Objektinspektors auf das Ereignis OnClick. Der Quelltext-Editor wird angezeigt. Der Cursor befindet sich bereits im Block der folgende Ereignisbehandlungsroutine:
- TActiveFormX.Button1Click (Delphi) bzw.
- TActiveFormX::Button1Click() (C++).
- Geben Sie an der Cursorposition den folgenden Quelltext ein:
- Delphi:
ShowMessage(Edit1.Text);
- C++:
ShowMessage(Edit1->Text);
- Speichern Sie die Projektdateien im ActiveX-Verzeichnis.
So testen Sie das ActiveForm:
Nach dem Erstellen, Erzeugen und Registrieren des ActiveForm können Sie es in einem Webbrowser mit einer einfachen HTML-Datei wie der folgenden anzeigen:
<html> <body> <h1>Active Form</h1> <object classid="clsid:3E46CAEF-520F-4B9F-B152-00FF2E006F88" codebase="AnActiveForm.ocx" width=700 height=250 align=center hspace=0 vspace=0> </object> </body> </html>
Im obigen HTML-Code müssen Sie die Werte der beiden folgenden Elemente ändern:
classid
(die GUID der CoClass des ActiveForm)codebase
(der Name der Active-Bibliothek, die das ActiveForm enthält; kann die Erweiterung .ocx oder .dll haben)
Suchen Sie in der Unit <Projekt>_TLB die
classid
(den zugrunde liegenden GUID-Wert). Hier ist der Code für das obige Beispiel:// *********************************************************************// // GUIDS declared in the TypeLibrary. Following prefixes are used: // Type Libraries : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Non-DISP interfaces: IID_xxxx // *********************************************************************// const CLASS_TestActiveForm: TGUID = '{3E46CAEF-520F-4B9F-B152-00FF2E006F88}';
Die
classid
in diesem Beispiel lautet also 3E46CAEF-520F-4B9F-B152-00FF2E006F88.Suchen Sie im Registrierungscode des Generators den korrekten
codebase
-Wert. Diecodebase
ist der vierte Parameter beim Erstellen des Generators und hat das Präfix "Class_":initialization TActiveFormFactory.Create( ComServer, TActiveFormControl, TTestActiveForm, Class_TestActiveForm, 1, '', OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL, {$IFDEF SINGLE_THREADED} tmSingle); {$ELSE} tmApartment); {$ENDIF}
Die
codebase
ist hier also TestActiveForm.Bearbeiten Sie die HTML-Datei, und fügen Sie die Werte für
codebase
undclassid
ein. Speichern Sie die Datei.Öffnen Sie mit einem Webbrowser, wie Internet Explorer, die HTML-Datei.
Das ActiveForm wird im Browser-Fenster angezeigt.
Klicken Sie auf die Schaltfläche. Der Text im Eingabefeld wird in einem Popup-Fenster angezeigt.
Ändern Sie den Text, und klicken Sie erneut auf die Schaltfläche. Der neue Text wird im Popup-Fenster angezeigt.