Home » Tutorials » Netzwerk und Internet » ActiveX

ActiveX

ActiveForm erstellen

Das hier Beschriebene funktioniert ab den Professional-Varianten von Delphi und mindestens seit Version 5. Die Screenshots stammen von Delphi 7. Im Vergleich zu Delphi 5 sind aber keine Unterschiede festzustellen.

Fangen wir an: Das, was später im Browser zu sehen sein wird, basiert nicht auf einem normalen Delphi-Formular, sondern einem ActiveForm (abgeleitet von TActiveForm). Delphi erstellt uns ein solches ActiveForm über „Datei/Neu/Weitere…“. In der Objektgalerie wechseln wir auf die Seite „ActiveX“:

Nach dem Klick auf „OK“ folgt der ActiveForm-Experte von Delphi:

Hier sind einige Einstellungen vorzunehmen, z.B. ein Name für das ActiveX-Objekt, Namen für Unit und Projektdatei und Threading-Einstellungen. Informationen zum Threading-Modell sind in der Hilfe zu finden, wir belassen es hier bei der Standardvorgabe.
In der unteren Fensterhälfte sind noch drei Optionen aktivierbar. Bei „Element lizenzieren“ wird zusätzlich eine Schlüssel-Datei (Endung .lic) erzeugt, ohne die das Objekt nicht in einer Entwicklungsumgebung geöffnet werden kann. Die beiden übrigen Einstellungen sind eigentlich selbsterklärend.
Bestätigen wir das Fenster, kann es sein, dass folgende Warnmeldung erscheint:

Das ist der Fall, wenn in Delphi noch ein Projekt geöffnet war. Wenn jetzt auf OK geklickt wird, wird dieses Projekt geschlossen und unser neues ActiveX-Projekt erzeugt.
Was wir jetzt sehen, unterscheidet sich auf den ersten Blick nicht von einem normalen Delphi-Projekt: ein leeres Form und Units. Im Objektinspektor sehen wir, dass es kein „normales“ Fenster ist, sondern eins vom Typ „TActiveForm“, weshalb es auch andere Eigenschaften hat.
Im Quelltexteditor sehen wir zwei Units: ActiveFormImpl1 ist die Unit zum Fenster, ActiveFormProj1 ist die Projektdatei (dpr). Ihr Name wird sich später wieder im Dateinamen des ActiveX-Elements wiederfinden. In beiden Units ist Code zu finden, der sich von „normalen“ Programmen unterscheidet. Die Projektdatei ist für das Erzeugen, Registrieren und Wiederfreigeben des ActiveX-Elements zuständig. In der Unit zum Fenster sind zahlreiche Methoden definiert, die hauptsächlich die Darstellung des Fensters betreffen.
Es gibt noch eine Überraschung: In der Unit-Übersicht (Ansicht/Units) ist zu sehen, dass noch eine dritte Unit erzeugt worden ist: eine Typbibliothek. Typbibliotheken sind Units, die Informationen zu den Datentypen, Schnittstellen, Elementfunktionen und Objektklassen eines COM-Objekts enthalten. Unsere Typbibliothek definiert z.B. ein Interface (IActiveFormX) und legt eine eindeutige Identifizierung (GUID) dafür fest.
Prinzipiell müssen wir das gar nicht so genau wissen. Wir halten uns an das Fenster und die zugehörige Unit ActiveFormImpl1. Hier bauen wir – zu Testzwecken – ein paar Komponenten mit etwas Code ein. Grundsätzlich können auf ActiveForms alle VCL-Komponenten verwendet werden.
Auch wenn es nicht sehr anspruchsvoll ist, lassen wir ein Datum in ein Edit-Feld eingeben. Nach Klick auf einen Button soll der zugehörige Wochentag in einem Label angezeigt werden. Falls die Eingabe kein gültiges Datum ist, soll eine Messagebox erscheinen, die den Fehler anzeigt.
Das Fenster sieht also so aus:

Das OnClick-Ereignis des Buttons implementieren wir so:

procedure TActiveFormX.Button1Click(Sender: TObject);
var datum: TDateTime;
begin
  try
    datum:=StrToDate(Edit1.Text);
    Label2.Caption:=LongDayNames[DayOfWeek(datum)];
  except
    MessageDlg('Das ist kein gültiges Datum!', mtError, [mbOk], 0);
  end;
end;

Das war’s auch schon, was die Implementierung angeht. Jetzt werden wir uns ansehen, wie das Ganze in den Browser kommt.