ActiveX-ActiveForm mit VCL-Formularen erzeugen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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:

  1. Erstellen eines ActiveX-Bibliotheksprojekts und eines ActiveX-ActiveForm.
  2. Hinzufügen einer Schaltfläche und Hinzufügen von Code für eine Ereignisbehandlungsroutine.
  3. Testen des ActiveForm.

So erstellen Sie ein ActiveX-Bibliotheksprojekt und ein ActiveX-ActiveForm:

  1. 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.
  2. Wählen Sie entweder:
    Dadurch wird ein DLL-Projekt (Dynamic Link Library) angelegt, in das Sie die In-Process-ActiveX-Objekte aufnehmen können.
  3. 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.
  4. Ü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:

  1. Ziehen Sie aus der Seite Standard der Tool-Palette eine TEdit- und eine TButton-Komponente in das Formular.
  2. Wählen Sie die Schaltfläche aus.
  3. 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++).
  4. Geben Sie an der Cursorposition den folgenden Quelltext ein:
    • Delphi:
 ShowMessage(Edit1.Text);
  • C++:
 ShowMessage(Edit1->Text);
  1. 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)
  1. 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.

  2. Suchen Sie im Registrierungscode des Generators den korrekten codebase-Wert. Die codebase 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.

  3. Bearbeiten Sie die HTML-Datei, und fügen Sie die Werte für codebase und classid ein. Speichern Sie die Datei.

  4. Öffnen Sie mit einem Webbrowser, wie Internet Explorer, die HTML-Datei.

    Das ActiveForm wird im Browser-Fenster angezeigt.

  5. Klicken Sie auf die Schaltfläche. Der Text im Eingabefeld wird in einem Popup-Fenster angezeigt.

  6. Ändern Sie den Text, und klicken Sie erneut auf die Schaltfläche. Der neue Text wird im Popup-Fenster angezeigt.

Siehe auch