·  Start ·  Programme ·  Codes ·  Tipps ·  ActiveX ·  Tutorials · 




Bevor ich Ihnen die Erstellung eines eigenen Steuerelements (ActiveX-Steuerelement oder auch OCX) erläutere, einige Hinweise:

Daß Sie ein Steuerelement erstellen können, heißt nicht, dass Sie es auch tun sollen. Es kommt darauf an, was Sie erreichen wollen. Man sollte sich vorher die Frage stellen, ob es nicht mit ein paar Zeilen Programmcode und Vewendung von Standardsteuerelementen einfacher und schneller geht. Und es kommt auf den Umfang an. Wenn Sie die Lade des CD-ROM-Laufwerks öffnen und schließen wollen, können Sie dies einfach mit einem API-Aufruf und ein paar Zeilen Code erledigen. Sie können natürlich auch ein Steuerelement anlegen und in dieses Element den Code verpacken. Die Handhabung ist jetzt einfacher geworden, nur werden Sie ein solches Steuerelement wahrscheinlich nicht oft brauchen. Etwas anders sieht es bei Steuerelementen aus, die mehr können, als Standardsteuerelemente und / oder besser aussehen.

Die Anleitung zur Erstellung von Steuerelementen könnte ein kleines Taschenbuch füllen, deshalb will ich mich hier auf die wichtigsten Elemente beschränken.

Übersicht:

Erste Schritte
Erstellung
Chronologie (Ablauf)
Beispiel
Details
Eigenschaftenseite
Fertigstellung und Kompilieren

 
 Erste Schritte

Starten Sie Visual Basic, wählen Sie Projekt/neu - ActiveX-Steuerelement. In der Entwicklungsumgebung öffnet sich nun ein neues Projekt mit einem "UserControl" anstatt einem Formular, so wie Sie es aus normalen Projekten (StandardEXE) gewohnt sind.

Geben Sie Ihrem Projekt und dem UserControl einen eindeutigen Namen.

In den Projekteigenschaften können Sie weitere Einstellungen vornehmen.

Unter Projektbeschreibung geben Sie den Namen ein, der dann bei der Auswahl der Steuerelemente aufscheint ,wie zum Beispiel Microsoft Windows Common Controls 5.0 (SP2).

 

 Erstellung

Sie können das Grundgerüst des Steuerelements händisch erstellen oder Sie lassen den ActiveX-Schnittstellenassistenten für sich arbeiten.

Der ActiveX-Assistent:


Fügen Sie über das Menü von VB / ADD-INS / ADD-IN-Manager den Assistenten ein.

Starten Sie dann den Assistenten (Sie können diesen Assistenten übrigens auch später noch aufrufen und dies beliebig oft).

Der Assistent hilft Ihnen dadurch, indem er selbst fertigen Code produziert. Sie müssen Ihm nur mitteilen, welche Eigenschaften, Methoden oder Ereignisse unterstützt werden sollen.

Wählen Sie zB BackColor aus. Im nächsten Schritt ordnen Sie diese Eigenschaft einem Steuerelement zu. Wenn Sie UserControl wählen, wird die Eigenschaft BackColor nur auf UserControl übertragen. Wenn Sie also ein fertiges OCX in Ihre Anwendung eingefügt hätten und dort die Eigenschaft BackColor ändern, wirkt sich dies auf das UserControl aus und nicht auf eventuell andere eingefügte Steuerelemente, die Sie auf dem UserControl verankert haben.

Im nächsten Schritt können Sie den Datentyp abändern, einen Standardwert vergeben und die Eigenschaften getrennt für Laufzeit und Entwurfsmodus vorgeben. Außerdem ist es sinnvoll, eine Beschreibung anzugeben (Für BackColor wäre dies "Setzt die Hintergrundfarbe..." oder so ähnlich).

Wenn Sie den Assistenten beendet haben und das UserControl öffnen (Code-Ansicht), werden Sie feststellen, dass das Grundgerüst einigermaßen fertig ist. (Allerdings wirklich nur ein Gerüst).

 

 
 Chronologie

Es ist wichtig, zu verstehen, in welcher Reihenfolge die Ereignisse des OCX oder UserControls ausgelöst werden.

1.] UserControl_Initialize()
Tritt immer dann auf, wenn das Steuerelement das erste Mal geladen wird.

2.] UserControl_InitProperties()
Tritt auf, wenn das Steuerelement in einem Formular platziert wird.

3.] UserControl_Resize()
Dieses Ereignis tritt immer dann ein, wenn das eingefügte Steuerelement in seiner Größe geändert wird.

4.] UserControl_ReadProperties()
Liest Werte aus und weist Sie dem Steuerelement zu.

5.] UserControl_WriteProperties()
Schreibt die vom Anwender geänderten Werte über das Propertybag-Objekt zurück. Damit werden die Eigenschaften dauerhaft gespeichert und gehen bei einem Schließen und erneutem Öffnen eines Formulars nicht verloren.

 


 Beispiel

Sie können das Grundgerüst des Steuerelements händisch erstellen oder Sie lassen den ActiveX-Schnittstellenassistenten für sich arbeiten.
Enum eBorderStyle
  Keine
  Einfach
End Enum
Als nächstes müssen diese Eigenschaften umsetzen bzw zuweisen.
Property Let BorderStyle(newB As eBorderStyle)
  UserControl.BorderStyle = newB
  PropertyChanged "BorderStyle"
End Property

Property Get BorderStyle() As eBorderStyle
  BorderStyle = UserControl.BorderStyle
End Property
Die Funktion Let weist der Eigenschaft BorderStyle (in diesem Fall eine Eigenschaft für das UserControl) den neuen vom Anwender eingestellten Wert zu. Vergessen Sie auf keinen Fall die PropertyChanged-Methode. Damit wird die Eigenschaft aktualisiert!

Um diese Einstellungen auch zu sichern, wenn der Entwurfsmodus beendet ist (also vor dem Zerstören der Entwurfsinstanz), müssen noch folgende Anweisungen eingefügt werden:
Private Sub UserControl_WriteProperties(PropBag _
As PropertyBag)
  PropBag.WriteProperty "BorderStyle", BorderStyle, 1
End Sub

Private Sub UserControl_ReadProperties(PropBag _
As PropertyBag)
  BorderStyle = PropBag.ReadProperty("BorderStyle", 1)
End Sub
Erläuterungen


Die WriteProperty-Methode speichert den Wert der BorderStyle-Eigenschaft in der PropertyBag. Es werden drei Argumente übergeben (Name der Eigenschaft, zu speichernder Wert und Standardwert).

Die ReadProperty-Methode liest den Wert aus und weist sie der Variable BorderStyle zu. Auch hier ist der Standardwert sinnvoll, um Laufzeitfehler zu vermeiden.

Um schon beim Einfügen des UserControls in das Formular einen Standardwert festzulegen (dies wäre in unserem Fall 0, also keine Umrandung), müssen wir Init_Properties bemühen:
Private Sub UserControl_InitProperties()
  UserControl.BorderStyle = Einfach
End Sub
Anmerkung


Nach dem gleichen Schema können Sie alle anderen erforderlichen Eigenschaften wie BackColor, ForeColor, Font etc. erstellen. Testen Sie den ActiveX-Assistenten und "spielen" Sie mit den Einstellungen.

Als nächstes wollen wir die Position festlegen. Das Steuerelement soll ja in einer bestimmten Größe und Form auf dem Formular erscheinen. Um zum Beispiel eine PictureBox richtig auszurichten, fügen Sie in das Ereignis UserControl_Initialize ein:
Picture1.Move 0, 0, ScaleWidth, ScaleHeight
Die gleiche Prozedur kommt in das Resize-Ereignis.
 

 Details

Wenn Sie Ihre Steuerelemente vertreiben wollen (verkaufen, verschenken, was auch immer), möchten Sie vielleicht einen Hinweis auf den Produzenten setzen. Sie finden in den Eigenschaften vieler Steuerelemente (nur im Entwurfsmodus) einen Hinweis auf den Urheber (About...)

Um ein Formular mit Ihrem Copyright oder sonstigen Hinweisen zu erstellen, gehen Sie wie folgt vor:

Fügen Sie in das Projekt ein ganz normales Formular ein. Sinnvollerweise sollte die Eigenschaft BorderStyle auf 1 gesetzt sein. Benennen Sie das Formular zB mit frmAbout, gestalten Sie es nach Ihren Wünschen und speichern Sie das Projekt. Fügen Sie in das UserControl folgenden Code ein:
Public Sub ShowAbout()
On Error Resume Next
  frmABout.Show vbModal
End Sub
Zum Entladen des InfoDialogs können Sie einen CommandButton einfügen, oder im FormClick-Ereignis des frmAbout den Code einfügen:
Unload me
Set frmAbout = Nothing
Wie wird nun dieser Dialog eingebunden ?

Rufen Sie dazu aus der Menüleiste von VB die "Prozedurattribute" auf. Suchen Sie den Namen "ShowAbout". Klicken Sie auf "Erweitert" und stellen Sie die Prozedur-ID ein. Stellen Sie diese auf "AboutBox".

 

 
 Eigenschaftenseite

Sie sind es vielleicht von einigen Steuerelementen gewohnt, dass man eine Eigenschaftenseite (PropertyPage - nicht zu verwechseln mit PropertyBag) anzeigen kann, wo viele Einstellungen bequem geändert werden können.

Der Aufruf erfolgt über "Custom" oder "Benutzerdefiniert".

Legen Sie eine neue Eigenschaftenseite an, indem Sie über das Menü Projekt/Eigenschaftenseite hinzufügen entweder eine neue Seite erstellen oder eine vorhandene laden.

Sie können auch für diesen Zweck einen Assistenten bemühen, den Sie - falls noch nicht geschehen - über das Menü ADD-INS laden (Eigenschaften-Assistent).

Wollen Sie bestimmte Eigenschaften händisch hinzufügen, können Sie das bequem über Menü / EXTRAS / Prozedurattribute erledigen. Zum Beispiel: Sie haben eine Eigenschaft "Value", die in den Eigenschaften angezeigt und auch dort verändert werden soll. Suchen Sie "Value" und stellen Sie unter //Prozedurattribute/Optionen die betreffende Eigenschaftenseite ein.

Natürlich brauchen wir auch einen Code für die Eigenschaftenseite:

ApplyChanges wird ausgelöst, wenn der "Übernehmen"-Button gedrückt wird.
Private Sub PropertyPage_ApplyChanges()
  SelectedControls(0).Value = txtValue.Text
End Sub
Damit werden die Änderungen in die Eigenschaften des UserControls übernommen.
Private Sub PropertyPage_SelectionChanged()
  txtValue.Text = SelectedControls(0).Value
End Sub
Bei Änderungen in der Property-Page wird der "Übernehmen"-Button eingeschaltet.
Private Sub txtValue_Change()
Changed = True
End Sub
 

 Fertigstellung und Kompilieren

Sie haben jetzt ein UserControl erstellt. Wenn Sie jetzt das Projekt kompilieren, erstellt Visual Basic ein ActiveX-Steuerelement unter dem Projektnamen. Deshalb ist es auch wichtig, eindeutige Namen zu vergeben.
Wenn Sie jetzt ein neues Projekt starten (StandardEXE) und unter Komponenten nachsehen, werden Sie Ihr erstes OCX finden. Wenn Sie es auf dem Formular einfügen, bekommt es einem Namen (wie zum Beispiel das Steuerelement Label - Label1). Das ist der Name des UserControls!

Sie müssen das fertige Projekt nicht zu einem OCX kompilieren. Es wird dadurch nur öffentlich und kann von jedem Ihrer Projekte benutzt werden.

Wollen Sie dagegen ein OCX mit Ihren fertigen Programmen nicht ausliefern, empfiehlt es sich, das UserControl direkt in Ihre Applikation einzubinden. Um eine Wiederverwendbarkeit zu gewährleisten, kopieren Sie das betreffende userControl (Dateikennung *.ctl) in Ihren ProjektOrdner. Wenn Sie das UserControl in Ihr Projekt mit aufnehmen, werden die Deklarationen von VB automatisch von Public auf Private zurückgestellt. Etwaige Verweise auf AboutBox und PropertyPage werden ebenfalls zurückgesetzt.
 

 Zusammenfassung und Beispiel

ActiveX-Steuerelemente sind eigentlich nur universelle Erweiterungen in der Werkzeugsammlung. Es lohnt sich erst, wenn man Funktionen oder ein Design benötigt, die von anderen Herstellern nicht bereitgestellt werden, oder für die man bezahlen müsste.

Allerdings ist die Erstellung eines (sinnvollen) Steuerelements für den Anfänger sehr zeitaufwendig, was jedoch nicht abschreckend wirken soll.

Download  Beispielprojekt  ( 50,2 KB )
Aktualisiert: 12.02.2008, 20:49 Uhr Copyright © 2001 - 2010 by ST-software Navigation zurück  |  Navigation vorwärts  |  Zum Seitenanfang     
Ihre IP: 38.107.191.82 ·  Seite erstellt in: 0.790 Sekunden ·  Dateigröße:  16982 Bytes